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 什么是PEAR?(第二篇)
Mar 19 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
php下使用curl模拟用户登陆的代码
Sep 10 PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
Aug 20 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
Mar 03 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
PHP生成制作验证码的简单实例
Jun 12 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
Oct 14 PHP
在Laravel中使用MongoDB的方法示例
Nov 11 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 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
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
php 判断数组是几维数组
2013/03/20 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
功能强大的php分页函数
2016/07/20 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
$(&quot;&quot;).click与onclick的区别示例介绍
2014/09/25 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
Python正则表达式的使用范例详解
2014/08/08 Python
python非递归全排列实现方法
2017/04/10 Python
Python中的错误和异常处理简单操作示例【try-except用法】
2017/07/25 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
python音频处理用到的操作的示例代码
2017/10/27 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
python实现多人聊天室
2020/03/31 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
2019/09/26 Python
python标准库os库的函数介绍
2020/02/12 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
出纳岗位职责范本
2013/12/01 职场文书
学生感冒英文请假条
2014/02/04 职场文书
安全大检查实施方案
2014/02/22 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书