PHP urlencode和解码

时间:2010-02-14 20:11:58

标签: php urlencode urldecode

所有

有一个文字区域说      

 <input type="submit">

如果用户将输入设为,

 here is my name  and my mail id is "a@x.com" 

当数据在服务器端发布时,数据将被收到       这是我的名字,我的邮件ID是“a@x.com”

在双引号后面添加反斜杠。现在如何在提交之前对数据进行编码。我在服务器端使用php ..

感谢。

5 个答案:

答案 0 :(得分:3)

这是magic_quotes_gpc开始 - 删除它只是在php.ini中禁用它或使用stripslashes删除它($ your_var);

虽然请记住这是php的一个(糟糕的)安全功能,但是当将数据存储到数据库时,您应该使用相应的转义函数来防止sql注入,并且当显示用户发布的数据时,您的清理功能应该防止xss注射。

答案 1 :(得分:2)

看起来您的服务器上启用了指令magic_quote_gpc

  

当magic_quotes开启时,所有'   (单引号),“(双引号),\   (反斜杠)和NUL的逃脱   自动反斜杠。


如果您无法在服务器配置中禁用它,那么解决方案将是:

  • 检测是否已启用
  • 如果是,请使用stripslashes
  • 删除输入中的转义

关于这一点,您可以阅读Disabling Magic Quotes部分。


当然,在使用之前,您必须正确地转义数据;例如,在将其注入SQL查询之前。

答案 2 :(得分:2)

如果您的网络托管服务提供商不允许您在php.ini文件中禁用它,您也可以在PHP中删除魔术引号。将此代码放在PHP脚本之上:

    if (get_magic_quotes_gpc()) {
        function stripslashes_deep($value) {
            $value = is_array($value) ?
                     array_map('stripslashes_deep', $value) :
                     stripslashes($value);
            return $value;
        }

        $_POST = array_map('stripslashes_deep', $_POST);
        $_GET = array_map('stripslashes_deep', $_GET);
        $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
        $_REQUEST = array_map('stripslashes_deep', $_REQUEST);
    }

答案 3 :(得分:1)

在php.ini中禁用magic_quotes或在PHP中使用stripslashes($text)删除斜杠。

答案 4 :(得分:1)

您的系统上可能启用了魔术引号。这不是good thing