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 函数: * http://www.php.cn/ * * Session 开始、存储、终结: * http://www.php.cn/ */ 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 "";
demo.php:(配合index.php使用)
<?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;
以上就是Android程序员学PHP开发(22)-超全局数组/超全局变量-PhpStorm的内容,更多相关内容请关注PHP中文网(www.php.cn)!