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 相关文章推荐
ADODB的数据库封包程序库
Dec 31 PHP
PHP实现异步调用方法研究与分享
Oct 27 PHP
UCenter 批量添加用户的php代码
Jul 17 PHP
探讨如何把session存入数据库
Jun 07 PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
laravel 数据验证规则详解
Oct 23 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 PHP
PHP中SESSION过期设置
Mar 09 PHP
PHP使用Redis队列执行定时任务实例讲解
Mar 24 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
人族 TERRAN 概述
2020/03/14 星际争霸
精致的人儿就要挑杯子喝咖啡
2021/03/03 冲泡冲煮
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
php数组随机排序实现方法
2015/06/13 PHP
解决laravel 表单提交-POST 异常的问题
2019/10/15 PHP
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
通过jQuery源码学习javascript(三)
2012/12/27 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
2014/01/27 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
详解JavaScript中的坐标和距离
2019/05/27 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
js实现数字跳动到指定数字
2020/08/25 Javascript
python中list循环语句用法实例
2014/11/10 Python
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
Python使用time模块实现指定时间触发器示例
2017/05/18 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
2018/02/26 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
使用python将图片按标签分入不同文件夹的方法
2018/12/08 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
python 调试冷知识(小结)
2019/11/11 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
迟到检讨书大全
2014/01/25 职场文书
技术股份合作协议书
2014/10/05 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
佛光寺导游词
2015/02/10 职场文书
开票员岗位职责
2015/02/12 职场文书
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript