概念
超全局数组(变量), 在PHP的脚本中, 已经声明完的变量, 你可以直接就去使用即可! 变量的名子已经规定好的了
$_SERVER
$_ENV
$_GET
$_POST
$_REQUEST
$_FILES
$_COOKIE
$_SESSION
$GLOBALS
1.数组(关联数组), 就和你自己声明的数组是一样的操作方式
2.全局
3.每个预定义的数组都有自独特的能力
<?php
// echo count($_SERVER);
//
// foreach($_SERVER as $key=>$value){
// echo "{$key}=>{$value}<br>";
// }
// $arr=array("龙哥","小弟");
// function demo(){
// global $arr;
// echo $arr[0]."和".$arr[1];
// }
// demo();
$_GET=array("龙哥","小弟");
function demo(){
echo $_GET[0]."和".$_GET[1];
$_GET['username']="admin";
}
demo();
print_r($_GET);
服务器变量$_SERVER和环境变量$_ENV
function getip() {
if(!empty($_SERVER['HTTP_CLIENT_IP'])) {
return $_SERVER['HTTP_CLIENT_IP'];
} elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
} else if(!empty($_SERVER['REMOTE_ADDR'])) {
return $_SERVER['REMOTE_ADDR'];
}else{
return '未知IP';
}
}
echo getip();
echo '<br>';
echo $_SERVER['HTTP_USER_AGENT'];
echo '<br>';
echo count($_SERVER);
echo "<br>";
echo '<pre>';
print_r($_SERVER);
echo '</pre>';
$_GET、$_POST、$_REQUEST
1.$_GET 接收用户通过URL向服务器传的参数 get传输有地址栏大小限制,且不安全,可以在地址栏看到所传参数
2.$_POST接收用户通过http协议向服务器传的参数 http post传输,大下限制由php配置限制,可以修改,但是不能超过服务器内存大小,地址栏看不到所传参数相对安全,
3.$_REQUEST
$_GET
//可以以数组传值
<a href="demo.php?action[]=add&action[]=mod&id=5&name=admin">测试页面</a>
print_r($_GET);
//或者可以输出单值
echo $_GET['id'];
$_POST
//可以以数组传值
<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>
$_REQUEST
$_REQUEST可以全部接受所传参数,功能比$_GET、$_POST强大,但是如果出现两个同名的,后一个会将前一个覆盖。而且漏洞相对较大,黑客容易攻击。
//是用empty判断是否存在
$arr = !empty($_POST) ? $_POST : $_GET;
//不要使用全局变量$_GET,$_POST做函数形参。
//function demo($_GET,$_POST){
//}
$_FILES
通过HTTP POST 方法传递的已上传文件项目组成的数组。是自动全局变量。
$_COOKIE、$_SESSION
setCookie("name","龙哥",time()+3600,"/");
print_r($_COOKIE);
session_start();
$_SESSION['name']="hello";
print_r($_SESSION);
echo '<pre>';
print_r($GLOBALS);
echo '</pre>';
网友评论