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

概念

超全局数组(变量), 在PHP的脚本中, 已经声明完的变量, 你可以直接就去使用即可! 变量的名子已经规定好的了
$_SERVER
$_ENV
$_GET
$_POST
$_REQUEST
$_FILES
$_COOKIE
$_SESSION
$GLOBALS

1.数组(关联数组), 就和你自己声明的数组是一样的操作方式

2.全局

3.每个预定义的数组都有自独特的能力

$value){
//   echo "{$key}=>{$value}
"; // } // $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 '
'; echo $_SERVER['HTTP_USER_AGENT']; echo '
'; echo count($_SERVER); echo "
"; echo '
';
    print_r($_SERVER);
    echo '
';

$_GET、$_POST、$_REQUEST

1.$_GET 接收用户通过URL向服务器传的参数 get传输有地址栏大小限制,且不安全,可以在地址栏看到所传参数

2.$_POST接收用户通过http协议向服务器传的参数 http post传输,大下限制由php配置限制,可以修改,但是不能超过服务器内存大小,地址栏看不到所传参数相对安全,

3.$_REQUEST

$_GET

//可以以数组传值
测试页面
print_r($_GET);
//或者可以输出单值
echo $_GET['id'];

$_POST

//可以以数组传值
username:
username:
username:
age:
sex:

$_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 '
';
print_r($GLOBALS);
echo '
';

你可能感兴趣的:(超全局数组(预定义变量))