php基础知识-魔术引用

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

来源:最开始,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. <?php  
  2. $str = "Is your name O'reilly?";  
  3.   
  4. // 输出:Is your name O\'reilly?  
  5. echo addslashes($str);  


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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值