PHP 사전 정의 배열이라고도 알려진 PHP 슈퍼 글로벌 배열은 PHP 엔진에 내장되어 있으며 개발자가 재정의할 필요가 없습니다. PHP 스크립트가 실행되면 PHP는 자동으로 일부 데이터를 슈퍼 전역 배열에 배치합니다.
PHP에서 미리 정의된 많은 변수는 "수퍼글로벌"입니다. 즉, 스크립트의 전체 범위에서 사용할 수 있습니다. 전역 $variable;을 실행하지 않고도 함수나 메서드 내에서 액세스할 수 있습니다.
php super 전역 변수 목록:
$_GET[] GET 메소드로 제출된 변수 배열 가져오기
$_POST[] POST 메소드로 제출된 변수 배열 가져오기
$_COOKIE[] 현재 웹사이트의 쿠키 식별자 가져오기 및 설정
$_SESSION[] sessionid 및 사용자 정의 세션 데이터와 같이 배열 형식으로 표현된 현재 사용자 액세스의 고유 식별자를 가져옵니다
$_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 "";
<?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;