PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)


Posted in PHP onFebruary 05, 2012

register_globals的值可以设置为:On或者Off,我们举一段代码来分别描述它们的不同。
代码:

<form name="frmTest" id="frmTest" action="URL"> 
<input type="text" name="user_name" id="user_name"> 
<input type="password" name="user_pass" id="user_pass"> 
<input type="submit" value="login"> 
</form>

当register_globals=Off的时候,下一个程序接收的时候应该用$_GET['user_name']和$_GET['user_pass']来接受传递过来的值。(注:当<form>的method属性为post的时候应该用$_POST['user_name']和$_POST['user_pass'])

当register_globals=On的时候,下一个程序可以直接使用$user_name和$user_pass来接受值。

顾名思义,register_globals的意思就是注册为全局变量,所以当On的时候,传递过来的值会被直接的注册为全局变量直接使用,而Off的时候,我们需要到特定的数组里去得到它。所以,碰到上边那些无法得到值的问题的朋友应该首先检查一下你的register_globals的设置和你获取值的方法是否匹配。(查看可以用phpinfo()函数或者直接查看php.ini)

那我们为什么要使用Off呢?原因有2:
1、php以后的新版本默认都用Off,虽然你可以设置它为On,但是当你无法控制服务器的时候,你的代码的兼容性就成为一个大问题,所以,你最好从现在就开始用Off的风格开始编程
2、这里有两篇文章介绍为什么要Off而不用On 

http://www.php.net/manual/en/security.registerglobals.php

现在还有一个问题就是,以前用On风格写的大量脚本怎么办?
如果你以前的脚本规划得好,有个公共包含文件,比如config.inc.php一类的文件,在这个文件里加上以下的代码来模拟一下。
代码:

<?php 
if ( !ini_get('register_globals') ) 
{ 
extract($_POST); 
extract($_GET); 
extract($_SERVER); 
extract($_FILES); 
extract($_ENV); 
extract($_COOKIE); if ( isset($_SESSION) ) 
{ 
extract($_SESSION); 
} 
} 
?>

register_globals = Off的情况不仅仅影响到如何获取从<form>、url传递过来的数据,也影响到session、cookie,对应的,得到session、cookie的方式应该为:$_SESSION[]、$_COOKIE。同时对于session的处理也有一些改变,比如,session_register()没有必要而且失效,具体的变化,请查看php manual里的Session handling functions

$_REQUEST中间的内容实际上还是来源于$_GET $_POST $_COOKIE,缺点是无法判断变量到底来自于get post 还是cookie,对要求比较严格的场合不适用。

PHP 相关文章推荐
php生成SessionID和图片校验码的思路和实现代码
Mar 10 PHP
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
Apr 08 PHP
PHP容易忘记的知识点分享
Apr 30 PHP
Linux环境下搭建php开发环境的操作步骤
Jun 17 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 PHP
php实现的微信红包算法分析(非官方)
Sep 25 PHP
php实现Mysql简易操作类
Oct 11 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
Sep 30 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
Jul 09 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
Oct 12 PHP
laravel ORM关联关系中的 with和whereHas用法
Oct 16 PHP
PHP中使用数组实现堆栈数据结构的代码
Feb 05 #PHP
PHP使用数组实现队列
Feb 05 #PHP
mysql数据库差异比较的PHP代码
Feb 05 #PHP
PHP反转字符串函数strrev()函数的用法
Feb 04 #PHP
PHP __autoload函数(自动载入类文件)的使用方法
Feb 04 #PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
Feb 04 #PHP
PHP中的cookie不用刷新就生效的方法
Feb 04 #PHP
You might like
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
Laravel源码解析之路由的使用和示例详解
2018/09/27 PHP
php+ajax 文件上传代码实例
2019/03/18 PHP
JavaScript 对象模型 执行模型
2009/12/06 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
node通过npm写一个cli命令行工具
2017/10/12 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
Jquery使用each函数实现遍历及数组处理
2020/07/14 jQuery
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
Python使用urllib2模块实现断点续传下载的方法
2015/06/17 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
Python字符串格式化常用手段及注意事项
2020/06/17 Python
原装进口全世界:天猫国际
2016/08/03 全球购物
唤醒头发毛囊的秘密武器:Grow Gorgeous
2016/08/28 全球购物
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
2014年教师业务学习材料
2014/05/12 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
争当四好少年演讲稿
2014/09/13 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
房产公证书
2015/01/23 职场文书
起诉书范文
2015/05/20 职场文书
城南旧事电影观后感
2015/06/16 职场文书
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB