仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1355|回复: 18
打印 上一主题 下一主题

[学习教程] PHP教程之register_globals利用详解

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:28:58 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
会PHP吗?会,我会把一加一的运算写在函数里,然后调用啦!详解   register_globals利用详解
register_globals是php.ini里的一个设置装备摆设,这个设置装备摆设影响到php若何吸收传递过去的参数,假如你的成绩是:为何我的表单没法传递数据?为何我的法式没法失掉传递过去的变量?等等,那末你需求细心的浏览以下的内容。

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.linuxforum.net/forum/gshowflat.php?Cat=&Board=php3&Number=292803&page=0&view=collapsed&sb=5&o=all&fpart=
http://www.php.net/manual/en/security.registerglobals.php

如今还有一个成绩就是,之前用On作风写的大批剧本怎样办?
假如你之前的剧本计划得好,有个公共包括文件,好比config.inc.php一类的文件,在这个文件里加上以下的代码来摹拟一下(这个代码不包管100%可以处理你的成绩,由于我没有大批测试,然而我感觉后果不错)。别的,这个帖子里的处理办法也能够参考一下(http://www.chinaunix.net/forum/viewtopic.php?t=159284)。

代码:

<?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 manual 写到:

Variables provided to the script via the GET, POST, and COOKIE input mechanisms, and which therefore cannot be trusted. The presence and order of variable inclusion in this array is defined according to the PHP variables_order configuration directive.


  工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-17 19:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表