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

2015-01-24信息快讯网

从 PHP4.2.0版本开始,php.ini中的设置选项 register_globals 默认值变成了 off。所以,最好从现在就开始用Off的风格开始编程

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表单请求获得数据求和示例
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
ThinkPHP使用心得分享-上传类UploadFile的使用
ThinkPHP使用心得分享-分页类Page的用法
php自定义函数截取汉字长度
PHP 之 写时复制介绍(Copy On Write)
PHP中copy on write写时复制机制介绍
PHP中date与gmdate的区别及默认时区设置
PHP函数getenv简介和使用实例
PHP中spl_autoload_register()和__autoload()区别分析
PHP中把stdClass Object转array的几个方法
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
codeigniter框架The URI you submitted has disallowed characters错误解决方法
php加速器eAccelerator的配置参数、API详解
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
php中通过curl检测页面是否被百度收录
从PHP $_SERVER相关参数判断是否支持Rewrite模块
ThinkPHP利用PHPMailer实现邮件发送实现代码
PHP实现今天是星期几的几种写法
一个PHP的远程图片抓取函数分享
使用php判断服务器是否支持Gzip压缩功能
DOM XPATH获取img src值的query
PHP中的str_repeat函数在JavaScript中的实现
php jq jquery getJSON跨域提交数据完整版
php读取本地文件常用函数(fopen与file_get_contents)
PHP函数之日期时间函数date()使用详解
分享PHP header函数使用教程
php strrpos()与strripos()函数
CodeIgniter上传图片成功的全部过程分享
Zend Studio 实用快捷键一览表(精心整理)
php中用socket模拟http中post或者get提交数据的示例代码
php调用Google translate_tts api实现代码
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
©2014-2024 dbsqp.com