在您的php.ini文件中,很可能
magic_quotes_gpc指令被设置为on。出于安全原因,应禁用此功能。如果您无权访问php.ini文件(例如,在共享主机上),则始终可以使用.htaccess指令(假设这是apache服务器)完成相同 *** 作。
在您的php.ini中
magic_quotes_gpc Off
在.htaccess文件中:
为什么会这样呢?php_flag magic_quotes_gpc Off
发生这种情况的原因是由于以下逻辑过程。
- 需要转义的字符串发送到服务器。
This is my string. It's awesome.
- Magic Quotes在到达您的代码之前先将撇号转义。
This is my string. It's awesome
mysql_real_escape_string
现在有两个字符可以转义,即反斜杠\
和撇号'
。This is my string. It\'s awesome
- 此新的超级转义字符串存储在数据库中。
- 从数据库中检索到字符串后,会将其传递给
stripslashes
。这将删除在第3步中添加的两个转义符,但是由于其中一个反斜杠已被转义,因此stripslashes
认为它属于该转义符。This is my string. It's awesome
当您将这些字符串重新提交给数据库时,这个问题确实会失控,因为每次反斜杠数量都成倍增加。
替代解决方案一种快速简便的替代方法是
magic_quotes在将字符串传递到之前简单地删除通过添加的斜杠
mysql_real_escape_string。
$str = stripslashes($_POST['str']);$str = mysql_real_escape_string($str);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)