下载JBLOG 1.5.2 基于PHP+MySQL的博客程序
上一篇:JBLOG 更新日志! 下一篇:清晨

set_magic_quotes_runtime 和 magic_quotes_gpc

分类:技术学习  |  时间:2008-08-10 11:19  |  阅读:998人/次  |  标签:PHP

set_magic_quotes_runtime() 可以让程序员在代码中动态开启或关闭 magic_quotes_runtime,set_magic_quotes_runtime(1) 表示开启,set_magic_quotes_runtime(0) 则表示关闭。当set_magic_quotes_runtime(1)时,从数据库或通过fread之类的函数读取的文本,将自动对' "和\自动加上反斜杠\进行转义,防止溢出。这在对数据库的数据进行转移的时候非常有用。但在一般情况下,应当将其关闭,否则从数据库读取出来的数据单引号、双引号和反斜杠都会被加上\,导致显示不正常。像Discuz,PHPWind都在公共文件的头部加上一句 set_magic_quotes_runtime(0); 强制关闭 magic_quotes_runtime 。

magic_quotes_gpc 和 magic_quotes_runtime 的区别在于,magic_quotes_gpc 是对通过GET、POST、COOKIE传递的数据进行转义,一般在数据入库前要先进行转义,magic_quotes_gpc不能在代码中动态开启或关闭,需要到php.ini将magic_quotes_gpc设置为on或off,代码中可以用get_magic_quotes_gpc获取magic_quotes_gpc的状态。当magic_quotes_gpc为off时,需要手工对数据进行addslashes,代码如下:

PHP代码
  1. if (!get_magic_quotes_gpc()) {   
  2.     add_slashes($_GET);   
  3.     add_slashes($_POST);   
  4.     add_slashes($_COOKIE);   
  5. }   
  6.   
  7. function add_slashes($string) {   
  8.     if (is_array($string)) {   
  9.         foreach ($string as $key => $value) {   
  10.             $string[$key] = add_slashes($value);   
  11.         }   
  12.     } else {   
  13.         $string = addslashes($string);   
  14.     }   
  15.     return $string;   
  16. }  

 

本站提供网站建设/程序开发/模板定制服务,价格从优,在线交谈点击这里给我发消息

4条评论 关于 “set_magic_quotes_runtime 和 magic_quotes_gpc”

  1. avatar
    沙发
    [回复] XRDS 发表于: December 18th, 2008 at 9:43 am

    哈,正在看关于这个呢,原来这里有

    !defined('IN_JBLOG')

  2. avatar
    板凳
    [回复] XRDS 发表于: December 18th, 2008 at 9:43 am

    !defined('IN_JBLOG')

  3. avatar
    地板
    [回复] XRDS 发表于: December 18th, 2008 at 9:44 am

    !defined('IN_JBLOG')
    exit('Access Denied!');

  4. avatar
    4
    [回复] XRDS 发表于: December 18th, 2008 at 9:44 am

    对上面这句代码有点不好理解


发表您的评论

 

点击换一张验证码