我正在使用CodeIgniter创建一个电子商务网站.
我该如何获取查询字符串?
我正在使用Saferpay支付网关.网关响应将如下所示:
http://www.test.com/registration/success/?DATA=<IDP+MSGTYPE%3D"PayConfirm"+KEYID%3D"1-0"+ID%3D"KI2WSWAn5UG3vAQv80AdAbpplvnb"+TOKEN%3D"(unused)"+VTVERIFY%3D"(obsolete)"+IP%3D" 123.25.37.43"+IPCOUNTRY%3D"IN"+AMOUNT%3D"832200"+CURRENCY%3D"CHF"+PROVIDERID%3D"90"+PROVIDERNAME%3D"Saferpay+Test+Card"+ACCOUNTID%3D"99867-94913159"+ECI%3D"2"+CCCOUNTRY%3D"XX"%2F>&SIGNATURE=bc8e253e2a8c9ee0271fc45daca05eecc43139be6e7d486f0d6f68a356865457a3afad86102a4d49cf2f6a33a8fc6513812e9bff23371432feace0580f55046c
Run Code Online (Sandbox Code Playgroud)
要处理响应,我需要获取查询字符串数据.
对不起,我没有清楚地解释这个问题.我在收到付款后从付款网站获得回复时收到"找不到页面"错误.
我曾尝试与启用uri_protocol = 'PATH_INFO',并enable_query_strings = 'TRUE'在config.php.谷歌搜索我发现如果我使用htaccess重写这将无法正常工作.
我已经尝试更改配置条目,但它不起作用.
如何从视图中调用codeigniter控制器功能?当我在控制器中调用该函数时,获得一个404页面.
我将创建一个基于Mysql的日历系统,你可以在其中重复模式,让我们永远地说每个星期一.它还必须涵盖静态/一次性事件.我想知道的是,哪种解决方案对我来说最合乎逻辑(也是最好的).我有四种方法,我想知道它们之间的选择.
请它接受参数的函数from和to.此函数将创建一个临时表表,该表通过导入现有的静态计划INSERT ... SELECT.之后它将读取模式表并通过基于from和的peroid填充临时表to.
这个解决方案看起来很不错,因为查询将更简单地获取数据并且它可以工作到无穷大,因为您可以根据您加载的月份重新填充表格.我很好奇的是,无论何时这可能是一种迟滞的方式.
通过子查询和JOIN静态日历创建和连接给定的模式.
这似乎很烦人,因为查询会更大,并且可能根本不会很好(?).
基本上只是INSERT模式让我们说一年前.然后我猜一个cron工作会重新制作,总是提前一年.
这是一种简单的方法,但感觉就像存储了大量不需要的数据,并没有真正给出我所追求的无限.
如果我理解正确,此方法将从另一个查询中获取模式并在执行时创建事件.这与我对方法#1的想法类似,我认为简单模式可以创建多行.
但是,如果这将在Mysql之外实现,我将丢失一些我想要的数据库功能.
我希望你们了解我的情况,如果你能提出建议或争论为什么它是最好的或给出另一种解决方案.
就个人而言,我最喜欢方法#1,但我很好奇,如果每次调用重新填充日历表都很迟钝.
database.php:
$db['default']['hostname'] = "192.168.2.104";
$db['default']['username'] = "webuser";
$db['default']['password'] = "----";
$db['default']['database'] = "vad";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
$db['stats']['hostname'] = "192.168.2.104";
$db['stats']['username'] = "webuser";
$db['stats']['password'] = "---";
$db['stats']['database'] = "vad_stats";
$db['stats']['dbdriver'] = "mysql";
$db['stats']['dbprefix'] = "";
$db['stats']['pconnect'] = TRUE;
$db['stats']['db_debug'] = TRUE;
$db['stats']['cache_on'] = FALSE;
$db['stats']['cachedir'] = "";
$db['stats']['char_set'] = "utf8";
$db['stats']['dbcollat'] = "utf8_general_ci";
Run Code Online (Sandbox Code Playgroud)
问题是我只能在配置中定义一个
$active_group,默认值或统计信息.我按照CodeIgniter文档进行了操作,并添加了以下内容:
$DB2 = $this->load->database('stats', …Run Code Online (Sandbox Code Playgroud) 我意识到这个请求违反了CI文档中提供的示例(建议单独的'成功'页面视图),但我希望在成功提交表单后重新使用给定的表单视图 - 显示成功消息然后显示空白表格.我尝试了几种方法未成功清除验证设置值(取消设置$_POST,将规则/字段设置为空数组并重新运行验证).
我可以重定向到同一页面,但是我必须设置一个会话变量来显示成功消息 - 这是一个混乱的方法.
任何想法如何最好地实现上述目标?
可能重复:
如何检查数组元素是否存在?
道歉,如果我错了,我是PHP新手,有没有办法在PHP Json解码后使用json_decode函数解析字符串是否存在.
$json = {"user_id":"51","password":"abc123fo"};
Run Code Online (Sandbox Code Playgroud)
简要:
$json = {"password":"abc123fo"};
$mydata = json_decode($json,true);
user_id = $mydata['user_id'];
Run Code Online (Sandbox Code Playgroud)
如果JSON字符串不是由USER_ID的,它会引发像一个异常Undefined index user_id,那么有没有什么办法来检查JSON字符串是否存在的关键,请帮助我,我用PHP 5.3 and Codeigniter 2.1 MVC在此先感谢
我有2个文本字段和1个文件上传都是必需的.当我只需要文本字段时,一切都有效,但是当我需要文件上传时,验证错误仍然表示需要一个文件,即使我选择了一个文件.谁知道我做错了什么?提前谢谢了.
//视图
<?php echo form_open_multipart('add'); ?>
<fieldset>
<input type="text" name="name" /><br>
<input type="text" name="code" /><br>
<input type="file" name="userfile" /><br><br>
<input type="submit"value="Add" />
</fieldset>
<?php echo form_close(); ?>
Run Code Online (Sandbox Code Playgroud)
//控制器
public function add() {
$this->form_validation->set_rules('name', 'Name', 'required');
$this->form_validation->set_rules('code', 'Code', 'required');
//$this->form_validation->set_rules('userfile', 'Document', 'required');
//when the above line is active the upload does not go through
if ($this->form_validation->run() == FALSE) {
$data['page_view'] = $this->page_view;
$data['page_title'] = $this->page_title;
$this->load->view('template', $data);
}
else
{
$this->load->library('upload');
if (!empty($_FILES['userfile']['name']))
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$this->upload->initialize($config); …Run Code Online (Sandbox Code Playgroud) 我想从另一个控制器中的函数加载一个控制器,因为我集成到我的项目中的库我不想将它加载到控制器,因为我想保持它清洁和相关.
我尝试使用模块,但我仍然需要将控制器放在网址中
http://example.com/maincontroller/function
http://example.com/othercontroller/function
我有默认控制器所以我可以加载http://example.com/function所以如何从main函数访问控制器所以我不必将控制器放在url中.
如果我可以从主控制器功能加载控制器功能,我仍然愿意使用HMVC.
我正在尝试从下面的代码生成扩展名为.xlsx的excel文件.我能够很好地下载文件但是当我用excel表打开它时,我收到以下警告错误.Excel无法打开文件'dindi.xlsx',因为文件格式或文件扩展名无效.确保文件未损坏且文件扩展名与文件格式匹配.当我用记事本打开它时,该文件出现以下错误:
注意:ob_end_clean()[ref.outcontrol]:无法删除缓冲区.没有要删除的缓冲区
以下是我正在尝试做的代码.
public function exportResults() {
$this -> load -> database();
$query = $this -> db -> query("
SELECT * FROM farm LIMIT 10");
$results = $query -> result_array();
$objPHPExcel = new Excel();
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load('./files/farmdetails.xlsx');
$objPHPExcel ->getActiveSheet()->setTitle('farmreport');
$objPHPExcel -> setActiveSheetIndex(0);
$i = 1;
foreach ($results as $result) {
$objPHPExcel -> getActiveSheet() -> SetCellValue('A' . $i, $result["name"]);
$objPHPExcel -> getActiveSheet() -> SetCellValue('B' . $i, $result["dateofcontract"]);
$objPHPExcel -> getActiveSheet() -> SetCellValue('C' . $i, $result["leasorname"]);
$objPHPExcel -> getActiveSheet() …Run Code Online (Sandbox Code Playgroud) 我一直在使用CodeIgniter开发一个小型Web应用程序.在本地测试后,我把它放在我的网络服务器上,让其他人测试一些功能.在导航到网站时,我得到: -
404找不到页面错误页面
在我的本地机器上查看它时,一切都会加载并完美运行.
这是我上传到public_html目录的内容:
application directory
system directory
assets directory (my assets for the site)
index.php
Run Code Online (Sandbox Code Playgroud)
所有这些都在public_html目录中.就像我说的,它确实给了CodeIgniters 404错误页面,所以我知道它至少看到了CodeIgniter.我也尝试将$config['base_url'],更改config.php为我的URL.更改或将其留空时出现相同的错误.我检查了我的路线,所有这些似乎都是正确的.在我的本地机器上导航到它时,一切都很好.
我此时也没有使用.htaccess文件
关于我应该尝试什么的任何建议?
非常感谢!
codeigniter ×10
php ×10
validation ×2
calendar ×1
database ×1
forms ×1
frameworks ×1
hmvc ×1
mysql ×1
phpexcel ×1