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)
我假设出于安全原因,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变量来自不受信任的来源,也应该进行转义/过滤.