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实现登陆验证码(类似条行码状)
Oct 09 PHP
php discuz 主题表和回帖表的设计
Mar 13 PHP
php学习笔记 数组的常用函数
Jun 13 PHP
用php解析html的实现代码
Aug 08 PHP
php判断GIF图片是否为动画的方法
Sep 04 PHP
php去掉文件前几行的方法
Jul 29 PHP
浅析PHP7新功能及语法变化总结
Jun 17 PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 PHP
PHP 类与构造函数解析
Feb 06 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
php-fpm添加service服务的例子
Apr 27 PHP
thinkPHP框架RBAC实现原理分析
Feb 01 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 yield关键字功能与用法分析
2019/01/03 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
javascript 自动填写表单的实现方法
2010/04/09 Javascript
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
微信小程序 label 组件详解及简单实例
2017/01/10 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
Vue3新特性之在Composition API中使用CSS Modules
2020/07/13 Javascript
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
Django 反向生成url实例详解
2019/07/30 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
python多线程爬取西刺代理的示例代码
2021/01/30 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
上海中网科技笔试题
2012/02/19 面试题
木马的传播途径主要有哪些
2016/04/08 面试题
电子商务专业毕业生求职信
2014/06/12 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
安全承诺书
2015/01/19 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
与死神共舞观后感
2015/06/15 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
餐馆开业致辞
2015/08/01 职场文书
编写python程序的90条建议
2021/04/14 Python
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript
Python实现批量将文件复制到新的目录中再修改名称
2022/04/12 Python