PHP - 从撇号中删除反斜杠

2 php

下面的代码允许用户以简单的英语输入短语,然后将其作为"$ site"添加到数据库中.如果用户输入撇号,则短语将以撇号前面的反斜杠存储.如何在不使用反斜杠前面的反斜杠的情况下将变量"$ site"添加到数据库中?

提前致谢,

约翰

print "<div class=\"siteadd\">
          <form action='process.php?find=$find1' method='post'>
              Add a book to this topic: <input name='site' type='text' size='50'>
              <input type='submit' value='Submit'>
          </form>
       </div>";
Run Code Online (Sandbox Code Playgroud)

然后,在process.php上:

$site = str_replace($remove_array, "", $_POST['site']);
$site = strtolower($site);
$site = mysql_real_escape_string($site);
$illegal = array("/", "\"");
$site = str_replace($illegal, '', $site);

mysql_query("INSERT INTO `$find` VALUES (NULL, '$site',1,0)");
Run Code Online (Sandbox Code Playgroud)

Mac*_*ski 6

我假设出于安全原因,PHP添加了反斜杠.阅读有关魔术报价的更多信息.因为你正在使用正确的函数来转义传递给mysql查询的字符串,所以你不必依赖PHP的虚拟转义.

在脚本的开头,检查是否magic_quotes打开,如果是,请删除斜杠:

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);
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,在您的代码中,$find变量来自不受信任的来源,也应该进行转义/过滤.