php基础知识-魔术引用_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > php基础知识-魔术引用

php基础知识-魔术引用

 2011/12/29 17:29:21  xieye  http://xieye.iteye.com  我要评论(0)
  • 摘要:php基础知识-魔术引用魔术引用是指:服务器对一些字符做自动转换,以方便程序员的做法。来源:最开始,php的设计者为了方便程序员将表单数据添加到数据库,在配置文件中加了一个设置,当选项打开时,魔术引用启用,当选项关闭时,魔术引用不启用。php.ini大约441行magic_quotes_gpc=Off注释是;MagicquotesforincomingGET/POST/Cookiedata.注释表明为on时会对进入服务器的get/post/cookie数据做自动转换。1
  • 标签:PHP 基础知识
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
$str = "Is your name O'reilly?";

// 输出:Is your name O\'reilly?
echo addslashes($str);


2)测试配置选项magic_quotes_gpc
首先确保magic_quotes_gpc = On,如果是off或0,则需要修改,并重启apache服务器。
http://localhost/command/peixun/2.php
<?php

require_once('Public/CommandLine.php');

$isget = ($_SERVER['REQUEST_METHOD'] == 'GET') ? 1 : 0;
if ($isget) {
    $html = <<<longs
<html>    
<body>
  <form method="post">
    请输入字符:<input type="text" name="name1" value=''>
    
  </form>
</body>
</html>    
longs;
    echo $html;
    
} else {
    echo $_POST['name1'];
    
}

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

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




发表评论
用户名: 匿名