【发布时间】:2012-02-02 18:01:56
【问题描述】:
我正在使用“mysql_real_escape_string”将数据插入到 mySQL。
为了检索它,我使用带斜杠回显它,它工作正常,除非我将值放入输入值中,如本例所示。单引号可以正常工作,例如:Milky's Home... 但是双引号会在第一个引号中剪切脚本:。示例:Milky 的“家”应该只有:Milky's
如果我删除stripslashes,它会显示:Milky/'s /
所以,还是删掉第一句。
这是脚本:
$id=mysql_real_escape_string($_POST[id]);
<?
echo stripslashes($Titlez['titlez']);
?>
<input type="text" size="150px" name="titlez" value="<? echo stripslashes($Titlez['titlez']); ?>">
我也尝试了这两个选项,但给出了相同的结果:
<?
$titlez = stripslashes($Titlez['titlez']);
echo '<input type="text" size="150px" name="titlez" value="'.$titlez.'">';
echo "<input type=\"text\" size=\"150px\" name=\"titlez\" value=\"".$titlez."\">";
?>
【问题讨论】:
-
您应该在传入数据上使用 stripslashes(),然后再将其保存到数据库中。此外,正如您所发现的,魔术引语真的很糟糕。如果可以,请关闭它们。
-
我建议您将代码转换为 PDO,使用准备好的语句,这样它将保护您免受 MySQL 注入。使用 PDO,您不应该关心 mysql_real_escape_string。