php超全局数组(预定义变量)

 服务器变量:     $_SERVER
环境变量:$_ENV
 HTTP GET变量:$_GET
 HTTP POST变量:$_POST
request变量: $_REQUEST
HTTP文件上传变量: $_FILES
HTTP Cookies:  $_COOKIE
 Session变量: $_SESSION
 Global变量:$_GLOBALS

服务器变量: $_SERVER

$_SERVER 是一个包含诸如头信息(header)、路径(path)和脚本位置(script locations)的数组。数组的实体由 web 服务器创建。不能保证所有的服务器都能产生所有的信息;服务器可能忽略了一些信息,或者产生了一些未在下面列出的新的信息。这是一个自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_SERVER;
PHP_SELF :当前正在执行脚本的文件名 
DOCUMENT_ROOT :当前运行脚本所在的文档根目录 
REMOTE_ADDR :正在浏览当前页面用户的 IP 地址。
<?php
	echo count($_SERVER);
	foreach($_SERVER as $key=>$value)
		echo "{$key}=>{$value}<br>";

输出:
33HTTP_HOST=>localhost //http服务器
HTTP_CONNECTION=>keep-alive
HTTP_ACCEPT=>text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
HTTP_USER_AGENT=>Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36   //客户用的浏览器
HTTP_ACCEPT_ENCODING=>gzip,deflate,sdch
HTTP_ACCEPT_LANGUAGE=>zh-CN,zh;q=0.8
PATH=>C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Lenovo\Bluetooth Software\;C:\Program Files\Lenovo\Bluetooth Software\syswow64;C:\Program Files (x86)\Lenovo\Lenovo Home\;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\MySQL\MySQL Server 5.5\bin;
SystemRoot=>C:\WINDOWS
COMSPEC=>C:\WINDOWS\system32\cmd.exe
PATHEXT=>.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
WINDIR=>C:\WINDOWS
SERVER_SIGNATURE=>
Apache/2.4.9 (Win32) PHP/5.5.12 Server at localhost Port 80

SERVER_SOFTWARE=>Apache/2.4.9 (Win32) PHP/5.5.12
SERVER_NAME=>localhost 服务器名称
SERVER_ADDR=>::1 服务器地址
SERVER_PORT=>80 服务器端口
REMOTE_ADDR=>::1 客户地址
DOCUMENT_ROOT=>C:/wamp/www/ 文档根目录
REQUEST_SCHEME=>http
CONTEXT_PREFIX=>
CONTEXT_DOCUMENT_ROOT=>C:/wamp/www/
SERVER_ADMIN=>admin@example.com
SCRIPT_FILENAME=>C:/wamp/www/array/arr1.php
REMOTE_PORT=>21721
GATEWAY_INTERFACE=>CGI/1.1
SERVER_PROTOCOL=>HTTP/1.1  服务器协议
REQUEST_METHOD=>GET
QUERY_STRING=>
REQUEST_URI=>/array/arr1.php  经常用
SCRIPT_NAME=>/array/arr1.php
PHP_SELF=>/array/arr1.php
REQUEST_TIME_FLOAT=>1452865977.555
REQUEST_TIME=>1452865977
网址改成:http://localhost/array/arr1.php/user/add 则多了:
PATH_INFO=>/user/add
PATH_TRANSLATED=>C:\wamp\www\user\add
用此数组可以获取ip:
<?php
	function getip(){
		return $_SERVER['REMOTE_ADDR'];
	}
	echo getip();

但是会获取到好多==面试也不应该这么说
正规写法:
<?php
	function getip(){
		if(!empty($_SERVER['HTTP_CLIENT_IP']))
			return $_SERVER['HTTP_CLIENT_IP'];
		if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']
			return $_SERVER['HTTP_X_FORWARDED_FOR'];
		if(!empty($_SERVER['REMOTE_ADDR']
			return $_SERVER['REMOTE_ADDR'];
		return 'unknown';
	}
	echo getip();


环境变量:$_ENV 用的不多==

在解析器运行时,这些变量从环境变量转变为 PHP 全局变量名称空间(namespace)。它们中的许多都是由 PHP 所运行的系统决定。完整的列表是不可能的。请查看系统的文档以确定其特定的环境变量。
这是一个自动全局变量。它在所有的脚本中都有效。在函数或方法中不需要使用 global $_ENV; 

$_GET 明文 不能用作密码 长度受限

通过 HTTP GET 方法传递的变量组成的数组。是自动全局变量.
 http://localhost/login.php?name=zhangsan&id=100
    <?php
       echo “参数name的值:”.$_GET[“name”]; //zhangsan
       echo “参数id的值:”.$_GET[“id”];     //100
    ?>
arr3.php:前面没有<?php!!!
<a href="demo.php?action=add&&id=5">测试界面</a>
demo.php
<?php
	print_r($_GET);//括号()能写成【】,你咋想的啊??



$_POST

通过 HTTP POST 方法传递的变量组成的数组。是自动全局变量。
与$_GET相似,只是方法不一样。而且长度不受限制


综合一点的案例
demo.php
<?php
	print_r($_GET);
	echo '<br>';
	print_r($_POST);

arr3.php
<a href="demo.php?action=add&id=5">测试界面</a>
<form action="demo.php" method="get">
	usename:<input type="text" name="name" /><br>
	age:<input type="text" name="name" /><br>
	<input type="submit" name="sub" value="提交">
</form>

里面的method改了提交方式,输出就改啦,是不是很神奇~

$_REQUEST

此关联数组包含 $_GET,$_POST 和 $_COOKIE 中的全部内容。所有请求哟~不过不建议使用,不安全

宁可自己先测试:

$arr=!empty($_POST)?$_POST:$_GET;

在php4.x的版本中不要用全局变量做函数形参


亦可以用数组接收参数

<a href="demo.php?action[]=add&action[]=mod&id=5&name=admin">测试页面</a>


<form action="demo.php?age=www&dd=yy" method="post">
	username: <input type="text" name="name[one]" /><br>
	username: <input type="text" name="name[two]" /><br>
	username: <input type="text" name="name[three]" /><br>
	age: <input type="text" name="age" /> <br>
	sex: <input type="text" name="sex" /> <br>

	<input type="submit"  name ="sub" value="提交">
</form>

$_FILES

通过 HTTP POST 方法传递的已上传文件项目组成的数组。是自动全局变量。

$_COOKIE

通过 HTTP cookies 传递的变量组成的数组。是自动全局变量。以后细讲
<?php
	setCookie("name","MissZhou",time()+3000,"/");
	print_r($_COOKIE);

$_SESSION

包含当前脚本中 session 变量的数组。参阅 Session 函数文档以获得更多信息。 

$GLOBALS

由所有已定义全局变量组成的数组。变量名就是该数组的索引。 包含以上所有,且没有全称~


register_globals=ON时表单里面的元素名就可以直接用了,所以会名字会发生冲突~~而且get post名字傻傻分不清,更是涉及安全问题~
所以新版本中没有了,register_globals在我的版本中找不到啊~
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值