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后台多用户权限组思路与实现程序代码分享
Feb 13 PHP
PHP 登录记住密码实现思路
May 07 PHP
解析PHP中常见的mongodb查询操作
Jun 20 PHP
php去除HTML标签实例
Nov 06 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
php通过array_merge()函数合并两个数组的方法
Mar 18 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
Mar 25 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
mac下多个php版本快速切换的方法
Oct 09 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
PHP文件操作详解
Dec 30 PHP
PHP之多条件混合筛选功能的实现方法
Oct 09 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基础知识:类与对象(1)
2006/12/13 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
php取得字符串首字母的方法
2015/03/25 PHP
PHP实现链式操作的核心思想
2015/06/23 PHP
php实现短信发送代码
2015/07/05 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
jquery 学习笔记一
2010/04/07 Javascript
Jquery中dialog属性小记
2010/09/03 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
angular2 ng2-file-upload上传示例代码
2018/08/23 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
python在命令行下使用google翻译(带语音)
2014/01/16 Python
Python手机号码归属地查询代码
2016/05/04 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
Python安装selenium包详细过程
2019/07/23 Python
Python SMTP配置参数并发送邮件
2020/06/16 Python
HTML5 weui使用笔记
2019/11/21 HTML / CSS
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
实习教师自我鉴定
2013/09/27 职场文书
简历中个人求职的自我评价模板
2013/11/29 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
党员服务承诺书
2014/05/28 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
员工辞退通知书
2015/04/17 职场文书
起诉意见书范文
2015/05/19 职场文书
失恋33天观后感
2015/06/11 职场文书