http://blog.163.com/you_mein2009/blog/static/119512560201032113714490/
Stripslashes()
函数删除由addslashes() 函数生成的斜杠。
语法:
stripslashes(string)
string 必需的参数,是规定要检查的字符串。
提示和注释:
该函数用于清理从数据库或html表单中取回的数据。
例一:
<?php
echo stripslashes("Who\'s John Adams?");
?>
本例输出:
Who's John Adams?
addslashes()
函数在指定的预定义字符前添加反斜杠。
这些预定义字符是:
单引号(‘)
双引号(“)
反斜杠(\)
NULL
语法:
addslashes(string)
参数:
String必需。规定要检查的字符串。
提示:
该函数 可用于为储存在数据库中的字符串 以及 数据库查询语句准备合适的字符串。
注释:
默认情况下,PHP 指令 magic_quotes_gpc 为 on,意味着插入数据库中会自动转换,对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
如果get_magic_quotes_gpc为0,则表示未启用,此时POST/GET/COOKIE中的敏感字符就不会自动转义,此时就调用daddslashes
例二:
测试在本例中,我们要向字符串中的预定义添加反斜杠:
<?php
$str = "Who's John Adams?";
echo $str . " This is not safe in a database query.<br />";
echo addslashes($str) . " This is safe in a database query.";
?>
本例输出:
Who's John Adams? This is not safe in a database query.
Who\'s John Adams? This is safe in a database query.
向mysql写入数据
当magic_quotes_gpc = On时,系统会自动处理单引号等问题,用不用addslashes()和stripslashes()都没关系,但是如果添加数据时用了addslashes(),那么显示数据时必须要stripslashes()。
当magic_quotes_gpc = Off时,系统不会处理单引号等问题,所以插入数据时必须要使用addslashes(),显示数据时则不需要使用stripslashes()。
既然有了分析,做程序时要怎么办呢?
根据以上两种情况,可得:
不管magic_quotes_gpc是On还是Off,添加数据时都用addslashes(),当On时,必须使用stripslashes(),Off时则不能用stripslashes()。
如何判断On还是Off呢?用get_magic_quotes_gpc()。
例:
<?php
//$content 从数据库里读取内容
if(get_magic_quotes_gpc()){ $Content=stripslashes($Content); }
echo $Content;
?>