设为首页 - 加入收藏
您的当前位置:主页 > 网络编程 > PHP > 正文

PHP函数补完:get_magic_quotes_gpc()

来源:阿荣博客 点击数: 时间:2018-01-18

  get_magic_quotes_gpc

  取得 PHP 环境变数 magic_quotes_gpc 的值,属于 PHP 系统功能。

  语法: long get_magic_quotes_gpc(void);

  返回值: 长整数

  这个函数做什么的?

  本函数取得 PHP 环境配置的变量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。返回 0 表示关闭本功能;返回 1 表示本功能打开。当 magic_quotes_gpc 打开时,所有的 ' (单引号), " (双引号), (反斜线) and 空字符会自动转为含有反斜线的溢出字符。

  在php的配置文件中,有个布尔值的设置,就是magic_quotes_runtime。当它打开时,php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中的溢出字符加上反斜线。 当然如果重复给溢出字符加反斜线,那么字符串中就会有多个反斜线,所以这时就要用set_magic_quotes_runtime()与get_magic_quotes_runtime()设置和检测php.ini文件中magic_quotes_runtime状态。

  为了使自己的程序不管服务器是什么设置都能正常执行。可以在程序开始用get_magic_quotes_runtime检测该设置的状态决定是否要手工处理,或者在开始(或不需要自动转义的时候)用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);

  }

  在手册中string addslashes ( string str )介绍的时候有这样一句话说明了get_magic_quotes_gpc的用法以及作用。默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

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

  最土团购系统里的magic_gpc

  

  define('SYS_MAGICGPC', get_magic_quotes_gpc());

  $_POST = magic_gpc($_POST);

  function magic_gpc($string) {

  if(SYS_MAGICGPC) {

  if(is_array($string)) {

  foreach($string as $key => $val) {

  $string[$key] = magic_gpc($val);

  }

  } else {

  $string = stripslashes($string);

  }

  }

  return $string;

  }

  echo 'get_magic_quotes_gpc的值: '.get_magic_quotes_gpc();

  echo '
';

  echo '直接输出POST变量: '.$_POST['#'];

  echo '
';

  echo '经过magic_gpc处理: '.magic_gpc($_POST['#']);

  ?>

  

  

  

 

  

  

  

 

  

  

  程序输出:

  get_magic_quotes_gpc的值: 1

  直接输出POST变量: no'wamagic.net

  经过magic_gpc处理: no'wamagic.net

  再来个例子:

  

  echo 'get_magic_quotes_gpc: '.get_magic_quotes_gpc();

  echo '
';

  echo '直接输出POST变量: '.$_POST['#'];

  echo '
';

  echo 'addslashes: '.addslashes($_POST['#']);

  if (!get_magic_quotes_gpc()) {

  $# = addslashes($_POST['#']);

  }

  else {

  $# = $_POST['#'];

  }

  echo '
';

  echo '处理后输出: '.$#;

  ?>

  

  

  

 

  

  

  

 

  

  

  程序输出:

  get_magic_quotes_gpc: 1

  直接输出POST变量: no'wa\magic.net

  addslashes: no\'wa\\magic.net

  处理后输出: no'wa\magic.net

  延伸阅读

  此文章所在专题列表如下:

  PHP函数补完:get_magic_quotes_gpc()

  PHP函数补完:error_reporting()

  PHP函数补完:preg_match()

  PHP函数补完:urlencode()

  PHP函数补完:array_multisort()

  PHP函数补完:array_splice()

  PHP函数补完:isset()

  PHP函数补完:getenv()

  PHP函数补完:header()

  PHP函数补完:mysql_num_rows()

  PHP函数补完:list()

  PHP函数补完:mysql_query()

  PHP函数补完:mysql_fetch_array()

  PHP函数补完:number_format()

  PHP函数补完:explode()

  PHP函数补完:call_user_func()

  PHP函数补完:ImageCopyResamples()

  PHP函数补完:import_request_variables()

  PHP函数补完:parse_url()

  PHP函数补完:移除HTML标签strip_tags()

  PHP函数补完:输出数组结构与内容var_dump()

  PHP函数补完:var_export()

  PHP函数补完:判断变量是否为数字is_numeric()

  PHP函数补完:session_name()

  PHP函数补完:session_id()

  PHP函数补完:nl2br()与nl2p()函数

  PHP函数补完:shuffle()取数组若干个随机元素

  PHP函数补完:http_build_query()构造URL字符串

  PHP函数补完:stream_context_create()模拟POST/GET

相关推荐:

栏目分类

A3站长网 站长网 站长网技术网 站长教程网 织梦CMS教程 织梦模板 帝国CMS模板 联系QQ:26991496 邮箱:26991496@qq.com

A3站长网:欢迎您!谢谢您的访问...

Top