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的内置函数,通过DES算法对数据加密和解密
Jun 21 PHP
PHP重定向的3种方式
Mar 07 PHP
php中用date函数获取当前时间有误的解决办法
Aug 02 PHP
php分页示例分享
Apr 30 PHP
2个比较经典的PHP加密解密函数分享
Jul 01 PHP
ecshop实现smtp发送邮件
Feb 03 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
Laravel如何友好的修改.env配置文件详解
Jun 07 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
Laravel框架实现的使用smtp发送邮件功能示例
Mar 12 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
Apr 26 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中的函数-- foreach()的用法详解
2013/06/24 PHP
PHP间隔一段时间执行代码的方法
2014/12/02 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
javascript 用函数语句和表达式定义函数的区别详解
2014/01/06 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
详解JavaScript基于面向对象之继承实例
2015/12/16 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
python抓取网页图片示例(python爬虫)
2014/04/27 Python
python实现远程控制电脑
2019/05/23 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
Django项目使用ckeditor详解(不使用admin)
2019/12/17 Python
简单了解Python write writelines区别
2020/02/27 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
2019年分享net面试的经历和题目
2016/08/07 面试题
如何写毕业求职自荐信
2013/11/06 职场文书
项目开发计划书
2014/01/09 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
初中教师个人总结
2015/02/10 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
校园广播稿范文
2015/08/19 职场文书
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技