【问题标题】:PHP adding backslashes to POST dataPHP向POST数据添加反斜杠
【发布时间】:2014-04-07 19:56:00
【问题描述】:

我有一个提交到数据库的表单。但在它进入数据库之前,提交的数据会在屏幕上输出。目前,如果我提交了“Mike's”,它会输出“Mike\'s”。

我试过下面的代码看看是不是Magic Quotes,但这没有帮助。

if ((function_exists("get_magic_quotes_gpc") && get_magic_quotes_gpc()) ||
    ini_get('magic_quotes_sybase')
   ) {

    foreach($_GET as $k => $v)
        $_GET[$k] = stripslashes($v);
    foreach($_POST as $k => $v)
        $_POST[$k] = stripslashes($v);
    foreach($_COOKIE as $k => $v)
        $_COOKIE[$k] = stripslashes($v);
}

我应该寻找什么?

【问题讨论】:

  • 使用phpinfo()查看魔术引号是否打开只是为了明确排除它。
  • 你在用sybase吗?
  • 这可能有助于显示输出数据的代码。
  • 我正在运行 5.4 版,所以我认为其中甚至没有魔术引号
  • 数据库中的数据是否有转义字符?

标签: php


【解决方案1】:

注意:清理字符串

<?php

    $mike = "Mike's";

    echo filter_var($mike, FILTER_SANITIZE_STRING);

?>

【讨论】:

  • 悬念!它应该实现什么(在那个例子中)?字符串是否以任何方式更改?如果改了,改成什么?
【解决方案2】:

尽管看起来像一个常量,正在编辑 $_POST should work。再说一次,你的代码也不适合我。

这行得通:

function getReq($key){
    return isset($_REQUEST[$key]) ? stripslashes($_REQUEST[$key]) : "";
}

我还没有找到为什么 PHP(在我的例子中是 WAMPSERVER 2.0 上的 5.3.0)似乎神奇地更改了 POST 数据,而 get_magic_quotes_gpc() 返回 0,坦率地说,我不想在其肮脏的内部浪费更多时间。

【讨论】:

    【解决方案3】:

    它可能存在于您用来输出到屏幕的代码中。

    例如,如果您使用var_export(),您会期望在撇号上看到字符转义。

    【讨论】:

      【解决方案4】:

      这么多年后回答似乎很愚蠢,但我看到你的帖子很活跃,所以我会试试。

      先试试这个功能stripslashes()。文档:(https://www.php.net/manual/en/function.stripslashes.php)

      如果这不起作用。

      您是直接从 $_POST 变量中显示数据还是从数据库中检索数据? 它可能会按原样保存在数据库中,这意味着 UTF8 转换问题。

      我的回答很简短,除非您需要,否则不希望添加更多不必要的信息。

      【讨论】:

        猜你喜欢
        • 2015-10-23
        • 2017-05-12
        • 1970-01-01
        • 2011-04-06
        • 1970-01-01
        • 2019-07-04
        • 2016-07-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多