Codeigniter不允许特定的& URL中的符号

时间:2016-06-06 09:35:30

标签: php codeigniter paypal

以下URl会导致错误:"您提交的URI不允许使用字符。"

http://example.com/index.php?/Paypal/success&tx=8T317791V7961045T&st=Completed&amt=20%2e00&cc=USD&cm=&item_number=

然而,如果我只是改变&成功后的象征'至 ?如下所示一切正常,尽管有其他& URL中的符号也是如此。这里发生了什么?

http://example.com/index.php?/Paypal/success?tx=8T317791V7961045T&st=Completed&amt=20%2e00&cc=USD&cm=&item_number=

如何使它成为&成功后的象征'被接受了?我尝试在Config.php中执行以下操作,但它没有工作:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-\&';

OR

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-&';

当我尝试这个时,我得到了404 Page Not Found错误:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-?=&';

2 个答案:

答案 0 :(得分:0)

我认为" / Paypal /成功"是一个控制器+函数,以及在codeigniter中放置查询字符串的正确方法 $config['index_page'] = 'index.php';是:

http://example.com/index.php/Paypal/success?tx=8T317791V7961045T&st=Completed&amt=20%2e00&cc=USD&cm=&item_number=

答案 1 :(得分:0)

codeigniter中的url是urldecoded,因此%27会转换为'不在您允许的字符列表中,因此会触发错误。因此,您需要在解码后允许字符。换句话说,当codeigniter看到%27时,它已被解码为'。

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_()@&\-!';