magic_quotes_runtime作用
<自动为外部引入的数据加上反斜线>
当它打开时,php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中的溢出字符加上反斜线。当然如果重复给溢出字符加反斜线,那么字符串中就会有多个反斜线,所以这时就要用set_magic_quotes_runtime()与get_magic_quotes_runtime()设置和检测php.ini文件中magic_quotes_runtime状态。
为了使自己的程序不管服务器是什么设置都能正常执行。
l 可以在程序开始用get_magic_quotes_runtime检测该设置的状态决定是否要手工处理,
l 或者在开始(或不需要自动转义的时候)用set_magic_quotes_runtime(0)关掉该设置。magic_quotes_gpc设置是否自动为GPC(get,post,cookie)传来的数据中的\'\"\\加上反斜线。
可以用get_magic_quotes_gpc()检测系统设置。如果没有打开这项设置,可以使用addslashes()函数添加,它的功能就是给数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(\')、双引号(\")、反斜线(\\)与NUL(NULL 字符)。
一般用法如下;
if(!get_magic_quotes_gpc())
{
addslashes($prot);
}
PHP中set_magic_quotes_runtime()函数的作用:
<设置magic_quotes_runtime的状态>
此函数用来修改PHP.ini文件中的 magic_quotes_runtime 变量的状态。如果想获得magic_quotes_runtime 变量的状态用get_magic_quotes_runtime()这个函数,如果返回0表示本功能被关闭,如果返回1表示本功能已经开启。
magic_quotes_runtime变量的功能是当它被开启的时候所有外部引入的数据库资料或者文件等等都会自动转为含有反斜线溢出字符的资料(给特殊字符加反斜杠转意)。比如: 用户向数据库提交的数据中含有\" '这些符号的时候它就会在这些符号的前面自动加上"\"转义符。
这个属性在PHP4以前的版本都是默认关闭的,PHP4.0以后默认都是开启的,PHP4.0以后的版本如果程序要用到将它关闭的时候直接写成set_magic_quotes_runtime(0)将其关闭。
设置方法如下:
1、可以直接在php.ini里面设置为ON
2、set_magic_quotes_runtime(true)或者set_magic_quotes_runtime(1)
3、用ini_set函数,ini_set(magic_quotes_runtime,1);
get_magic_quotes_gpc函数作用:
<判断有没有自动调用addslashes函数转意【get post cookie】特殊字符>
此函数取得 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() 进行检测。