分享下PHP register_globals 值为on与off的理解


Posted in PHP onSeptember 26, 2013

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)

下面来看看这里有什么错误?

看看下面的这段PHP脚本,它用来在输入的用户名及口令正确时授权访问一个Web页面:

<?php
// 检查用户名及口令
if ($username == 'kevin' and $password == 'secret')
$authorized = true;
?>
<?php if (!$authorized): ?>
<!-- 未授权的用户将在这里给予提示 -->
<p>Please enter your username and password:</p>
<form action="<?=$PHP_SELF?>" method="POST">
<p>Username: <input type="text" name="username" /><br />
Password: <input type="password" name="password" /><br />
<input type="submit" /></p>
</form>
<?php else: ?>
<!-- 有安全要求的HTML内容 -->
<?php endif; ?>

上面的代码中存在的问题是你可以很容易地获得访问的权力,而不需要提供正确的用户名和口令。只在要你的浏览器的地址栏的最后添加?authorized=1。因为PHP会自动地为每一个提交的值创建一个变量 -- 不论是来自动一个提交的表单、URL查询字符串还是一个cookie -- 这会将$authorized设置为1,这样一个未授权的用户也可以突破安全限制。

PHP 相关文章推荐
PHP开发中常用的8个小技巧
Aug 27 PHP
PHP OPCode缓存 APC详细介绍
Oct 12 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
php获取文件大小的方法
Feb 26 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
Apr 08 PHP
常用PHP框架功能对照表
Oct 23 PHP
解决yii2左侧菜单子级无法高亮问题的方法
May 08 PHP
php mysql实现mysql_select_db选择数据库
Dec 30 PHP
PHP反射机制原理与用法详解
Feb 15 PHP
php 数组元素快速去重
May 05 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
Nov 27 PHP
Git命令之分支详解
Mar 02 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
Sep 26 #PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
Sep 26 #PHP
PHP实现今天是星期几的几种写法
Sep 26 #PHP
一个PHP的远程图片抓取函数分享
Sep 25 #PHP
使用php判断服务器是否支持Gzip压缩功能
Sep 24 #PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 #PHP
php实现的获取网站备案信息查询代码(360)
Sep 23 #PHP
You might like
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
PHP curl实现抓取302跳转后页面的示例
2014/07/04 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
php强制下载文件函数
2016/08/24 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
javascript 鼠标拖动图标技术
2010/02/07 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
如何从零开始手写Koa2框架
2019/03/22 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
[46:55]完美世界DOTA2联赛决赛 FTD vs Phoenix 第三场 11.08
2020/11/11 DOTA
[16:01]夜魇凡尔赛茶话会 第二期01:你比划我猜
2021/03/11 DOTA
python生成验证码图片代码分享
2016/01/28 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
pandas object格式转float64格式的方法
2018/04/10 Python
在python中pandas的series合并方法
2018/11/12 Python
python实现维吉尼亚加密法
2019/03/20 Python
python多进程读图提取特征存npy
2019/05/21 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
new修饰符是起什么作用
2015/06/28 面试题
大学生毕业自荐信
2013/10/10 职场文书
会计电算化个人自我评价
2013/11/17 职场文书
经贸日语专业个人求职信范文
2013/12/28 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
大学四年个人总结
2015/03/03 职场文书
安全生产隐患排查制度
2015/08/05 职场文书