get_magic_quotes_gpc(),set_magic_quotes_runtime(),addslashes(),stripslashes()详解

1、PHP中set_magic_quotes_runtime()函数的作用: 

此函数来修改PHP.ini文件中的 magic_quotes_runtime 变量的状态,如果想获得magic_quotes_runtime 变量的状态用get_magic_quotes_runtime这个函数如果返回0表示本功能被关闭,如果返回1表示本功能已经开启。 magic_quotes_runtime的功能是当它被开启的时候所有外部引入的数据库资料或者文件等等都会自动转为含有反斜线溢出字符的资料。比如: 用户向数据库提交的数据中含有\" '这些符号的时候它就会在这些符号的前面自动加上"\"转义符。 

这个属性在PHP4以前的版本都是默认关闭的,PHP4.0以后的版本如果程序要用到将它关闭的时候直接写成set_magic_quotes_runtime(0)将其关闭。


2.get_magic_quotes_gpc函数作用:


此函数取得 PHP 环境配置的变量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。返回 0 表示关闭本功能;返回 1 表示本功能打开。当


magic_quotes_gpc 打开时,所有的 ' (单引号), " (双引号), \ (反斜线) and 空字符会自动加上转义符\;


默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。


其实这个函数就是判断有PHP有没有自动调用addslashes 这个函数,


3.addslashes -- 使用反斜线引用字符串。返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。


4.stripslashes---去掉字符串中的反斜杠。


区别:


1.magic_quotes_runtime 可以通过set_magic_quotes_runtime()和 get_magic_quotes_runtime() 来进行设置和读取 ; magic_quotes_gpc() 只可以通过get_magic_quotes_gpc()来读取 没有set_magic_quotes_gpc()这样的函数 也不能通过ini_set('magic_quotes_gpc',1) 这样来设置 他只能通过手动在php.ini文件中修改;


2 magic_quotes_gpc 处理的是post \get\cookie 传递过来的内容


magic_quotes_rumtime 处理的是数据库 或文件中的内容


set_magic_quotes_runtime() 和 get_magic_quotes_runtime() 是


默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。


if(get_magic_quotes_gpc()) { 如果我们不需要反斜杠,当我们检测到有反斜杠的时候可以去掉它

$advContent = stripslashes($advContent); 

}


if(!get_magic_quotes_gpc()) { 如果我们需要反斜杠,当我们检测到没有反斜杠的时候手动加上他

$advContent = addslashes($advContent); 

}


你可能感兴趣的:(数据库,用户,cookie,程序,资料)