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边学边教》(02.Apache+PHP环境配置――上篇)
Dec 13 PHP
MayFish PHP的MVC架构的开发框架
Aug 13 PHP
PHP var_dump遍历对象属性的函数与应用代码
Jun 04 PHP
php数组合并array_merge()函数使用注意事项
Jun 19 PHP
php导出CSV抽象类实例
Sep 24 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
Apr 08 PHP
php实现json编码的方法
Jul 30 PHP
详解WordPress开发中的get_post与get_posts函数使用
Jan 04 PHP
thinkPHP订单数字提醒功能的实现方法
Dec 01 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
May 11 PHP
php利用ob_start()清除输出和选择性输出的方法
Jan 18 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
Dec 13 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加密解密函数分享
2014/06/05 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
js字符编码函数区别分析
2008/06/05 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
php 修改密码实现代码
2017/05/24 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
从零学Python之入门(四)运算
2014/05/27 Python
Python里隐藏的“禅”
2014/06/16 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
Python 学习教程之networkx
2019/04/15 Python
wxPython多个窗口的基本结构
2019/11/19 Python
基于python实现可视化生成二维码工具
2020/07/08 Python
python openssl模块安装及用法
2020/12/06 Python
英国探险旅游专家:Explore
2018/12/20 全球购物
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
九九重阳节标语
2014/10/07 职场文书
困难补助申请报告
2015/05/19 职场文书
大学军训通讯稿
2015/07/18 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书