Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php似乎会自动对url进行解码…如何防止这种情况:_Php - Fatal编程技术网

php似乎会自动对url进行解码…如何防止这种情况:

php似乎会自动对url进行解码…如何防止这种情况:,php,Php,请求发布(通过javascript) 礼品卡号码:%120213001 回应 0213001 似乎%12正在被转换为零 注意:我正在使用codeingiter框架,并尝试关闭全局xss筛选器并直接访问$u POST,但仍然存在问题。有人知道codeigniter是否修改了$\u POST吗?我已经追踪到system/core/common.php-->删除不可见字符的问题 function remove_invisible_characters($str, $url_encoded = TR

请求发布(通过javascript) 礼品卡号码:%120213001

回应 0213001

似乎%12正在被转换为零


注意:我正在使用codeingiter框架,并尝试关闭全局xss筛选器并直接访问$u POST,但仍然存在问题。有人知道codeigniter是否修改了$\u POST吗?

我已经追踪到system/core/common.php-->删除不可见字符的问题

function remove_invisible_characters($str, $url_encoded = TRUE)
{
    $non_displayables = array();

    // every control character except newline (dec 10)
    // carriage return (dec 13), and horizontal tab (dec 09)

    if ($url_encoded)
    {
        $non_displayables[] = '/%0[0-8bcef]/';  // url encoded 00-08, 11, 12, 14, 15
        $non_displayables[] = '/%1[0-9a-f]/';   // url encoded 16-31
    }

    $non_displayables[] = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S';   // 00-08, 11, 12, 14-31, 127

    do
    {
        $str = preg_replace($non_displayables, '', $str, -1, $count);
    }
    while ($count);

    return $str;
}
有人能想出一个解决办法吗?你认为这是框架中的一个bug吗?
编辑:获取原始值的一种方法是使用$\u请求变量

中使用%字符。因此,您要么需要在将字符串发送到服务器之前删除%(这是我的建议),要么对字符串进行URL编码,并在服务器端处理额外的字符


CodeIgniter在删除%12时做了完全合乎逻辑的事情,因为它似乎是一个URL编码的控制字符。

%12
是一个控制字符。为什么它会是礼品卡号码的一部分?
%120213001
是有效的礼品卡号码吗?你试过什么?请展开您的问题。那么礼品卡号应该是
%120213001?
?然后你没有正确的编码你的数据。我以为我有解决方案,但我错了。我试过了,只能说这个问题对我来说是不可复制的,是吗?是使用刷卡刷卡时在礼品卡上刷卡的控制字符。很明显,我不想在数据库中有这些,因为它们不是数字的一部分,我最终在发送之前在javascript中删除了它!谢谢