我必须转义表单上的一些输入。我使用mysql_real_escape_string来转义值,但它在数据库中添加了很多带值的斜杠,原因是我的输入中有一个撇号,让我们说exp's。
现在为了去掉斜杠,我在mysql_real_escape_string之后使用了stripslashes,然后数据成功地进入数据库,并且在数据库中看不到任何带有值的撇号。
$name = mysql_real_escape_string(trim($_POST['userame']));
$name = stripslashes(stripslashes($userame));//则数据不带撇号成功进入db
我只是想确认一下,这是不是正确的转义输入值的方法?谢谢
大研
发布于 2012-07-02 22:01:33
mysql_real_escape_string(stripslashes($_POST['username']));发布于 2012-07-02 22:01:06
不,不是。检查您的php.ini中的magic_quotes_gpc设置。如果您不能禁用它,请在使用mysql_real_escape_string之前使用带斜杠。该链接有一种方法可以从$_POST、$_GET和$_COOKIE中全局剥离它。或者更好的是,在PDO中使用prepared statements
发布于 2012-07-02 22:04:31
如果您启用了magic_quotes_gpc,您应该在转义之前使用stripslashes()函数-否则您将转义两次,从而加载斜杠。
http://se.php.net/manual/en/function.mysql-real-escape-string.php
https://stackoverflow.com/questions/11295141
复制相似问题