php基础知识-魔术引用

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

魔术引用是指:服务器对一些字符做自动转换,以方便程序员的做法。

来源:最开始,php的设计者为了方便程序员将表单数据添加到数据库,在配置文件中加了一个设置,当选项打开时,魔术引用启用,当选项关闭时,魔术引用不启用。

php.ini大约441行
magic_quotes_gpc = Off
注释是; Magic quotes for incoming GET/POST/Cookie data.
注释表明为on时会对进入服务器的get/post/cookie数据做自动转换。

1)addslashes函数
介绍魔术引用之前,先介绍addslashes函数

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

一个使用 addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。大多数据库使用 \ 作为转义符:O\'reilly。这样可以将数据放入数据库中,而不会插入额外的 \。当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。

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

例子 1. addslashes() 示例
http://localhost/command/peixun/1.php
Php代码   收藏代码
  1. $str = "Is your name O'reilly?";  
  2.   
  3. // 输出:Is your name O\'reilly?  
  4. echo addslashes($str);  


2)测试配置选项magic_quotes_gpc
首先确保magic_quotes_gpc = On,如果是off或0,则需要修改,并重启apache服务器。
http://localhost/command/peixun/2.php
Php代码   收藏代码
  1.   
  2. require_once('Public/CommandLine.php');  
  3.   
  4. $isget = ($_SERVER['REQUEST_METHOD'] == 'GET') ? 1 : 0;  
  5. if ($isget) {  
  6.     $html = <<
  7.       
  8.   
  9.   "post">  
  10.     请输入字符:"text" name="name1" value=''>  
  11.       
  12.     
  13.   
  14.       
  15. longs;  
  16.     echo $html;  
  17.       
  18. else {  
  19.     echo $_POST['name1'];  
  20.       
  21. }  

然后修改magic_quotes_gpc = Off,并重启apache服务器,再次测试程序。

最后要说明的是 网络推广,这些都是学习概念用的,实际的大部分应用中,都将魔术引用关闭,手动的进行转换。(fblww-0102)

转载于:https://my.oschina.net/u/224509/blog/38346

你可能感兴趣的:(php基础知识-魔术引用)