PHP超級全域變數數組(Super Global Array),又稱為PHP預先定義數組,是由PHP引擎內建的,不需要開發者重新定義。 在PHP腳本運作時,PHP會自動將一些資料放在超級全域數組中。
PHP 中的許多預定義變數都是“超全域的”,這意味著它們在一個腳本的全部作用域中都可用。在函數或方法中無需執行 global $variable; 就可以存取它們。
php超級全域變數清單:
$_GET[] 取得以GET方法提交的變數陣列
##$_POST[] 取得以POST方法提交的變數數組
$_COOKIE[] 取得並設定目前網站的Cookie標識
#$_SESSION[] 取得目前使用者存取的唯一標識,以數組形式體現,如sessionid以及自訂session資料
$_ENV[] 當前php環境變數數組
$_SERVER[] 目前php伺服器變數陣列
#$_FILES[] 上傳檔案時提交到目前腳本的參數值,以陣列形式體現
$_REQUEST[] 包含目前腳本提交的全部要求,$_GET、$_POST、$_COOKIE的所有動作
$GLOBALS[]包含正在執行腳本所有超級全域變數的參考內容
index.php:<?php /** * 超全局数组/超全局变量 * PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。 * 在函数或方法中无需执行 global $variable; 就可以访问它们。 * 这些超全局变量是: $_GLOBALS Global变量 $_SERVER 服务器变量 $_REQUEST request变量 $_POST HTTP POST变量 $_GET HTTP GET变量 $_FILES HTTP文件上传变量 $_ENV 环境变量 $_COOKIE HTTP Cookies $_SESSION Session变量 */ echo getip(); echo "<br>"; echo getip2(); echo "<br>"; /** * 遍历$_SERVER数组 */ foreach ($_SERVER as $key => $value){ echo "{$key} => {$value} <br>"; } /** * 服务器IP的函数--笔试0分的写法 */ function getip(){ return $_SERVER['REMOTE_ADDR']; } /** * 服务器IP的函数--正确写法 */ function getip2(){ if (!empty($_SERVER['HTTP_CLIENT_IP'])){ return $_SERVER['HTTP_CLIENT_IP']; }elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ return $_SERVER['HTTP_X_FORWARDED_FOR']; }elseif (!empty($_SERVER['REMOTE_ADDR'])){ return $_SERVER['REMOTE_ADDR']; }else{ return '未知IP'; } } ?> /** * GET */ <br> <a href="demo.php?action=add&id=5&name=admin">测试页面</a><br> /** * POST * nickname[]下标会自增,跟数组没有区别 */ <br> <form action="demo.php?nick=www&psw=yyy" method="post"> nickname:<input type="text" name="nickname[]"/><br> nickname:<input type="text" name="nickname[]"/><br> nickname:<input type="text" name="nickname[]"/><br> nickname:<input type="text" name="nickname[9]"/><br> nickname:<input type="text" name="nickname[]"/><br> nickname:<input type="text" name="nickname[x]"/><br> nickname:<input type="text" name="nickname[]"/><br> username:<input type="text" name="name"/><br> age:<input type="text" name="age"/><br> sex:<input type="text" name="sex"/><br> <input type="submit" name="sub" value="提交"> </form><br> <?php /** * $_SESSION * * Session 函数: * //m.sbmmt.com/ * * Session 开始、存储、终结: * //m.sbmmt.com/ */ echo '---------- $_SESSION ----------<br>'; session_start(); // 启动新会话或者重用现有会话 $_SESSION['name']="hello"; print_r($_SESSION); // 打印结果:Array ( [name] => hello ) session_unset(); // 释放所有的会话变量 session_destroy(); // 销毁当前会话中的全部数据, 但是不会重置当前会话所关联的全局变量, 也不会重置会话 cookie。 // 如果需要再次使用会话变量, 必须重新调用 session_start() 函数 session_write_close(); // 结束当前会话并存储会话数据 setcookie(session_name(),'',0,'/'); // session_name — 读取/设置会话名称 // setcookie() 函数向客户端发送一个 HTTP cookie。 session_regenerate_id(true); // 在不修改当前会话中数据的前提下使用新的 ID 替换原有会话 ID echo "<br>"; /** * $GLOBALS 引用全局作用域中可用的全部变量 * 一个包含了全部变量的全局组合数组。变量的名字就是数组的键。 */ echo '---------- $GLOBALS ----------<br>'; echo "<pre class="brush:php;toolbar:false">"; print_r($GLOBALS); // 打印以上所有结果 echo "";
<?php /** * $_GET 只能接get */ print_r($_GET); echo "<br>"; print_r($_GET['action']); echo "<br>"; /** * $_POST 只能接post */ print_r($_POST); echo "<br>"; /** * $_REQUEST 能接get和post * 但是,容易被黑客攻击,因为什么都能接 * 所以需要get就用$_GET,需要post就用$_POST * 忽略$_REQUEST的存在 */ print_r($_REQUEST); echo "<br>"; /** * 不确定get还是post * 可以使用下面的写法 */ $arr = !empty($_POST) ? $_POST : $_GET;