PHP スーパー グローバル配列は、PHP 定義済み配列とも呼ばれ、PHP エンジンによって組み込まれており、開発者が再定義する必要はありません。 PHP スクリプトを実行すると、PHP は一部のデータをスーパー グローバル配列に自動的に配置します。
PHP の定義済み変数の多くは「スーパーグローバル」です。これは、スクリプトのスコープ全体で使用できることを意味します。これらは、 global $variable; を実行せずに、関数またはメソッド内でアクセスできます。
phpスーパーグローバル変数リスト:
$_GET[] GETメソッドで送信された変数配列を取得
$_POST[] POSTメソッドで送信された変数配列を取得
$_COOKIE [] 現在の Web サイトの Cookie 識別子を取得および設定します
$_SESSION[] 現在のユーザーの訪問の一意の識別子を、sessionid やカスタム セッション データなどの配列形式で取得します
$_ENV [] 現在の PHP 環境変数の配列
$_SERVER[] 現在の PHP サーバー変数の配列
$_FILES[] ファイルのアップロード時に現在のスクリプトに送信されたパラメータ値、配列形式で反映されます
$_REQUEST[] 現在のスクリプトによって送信されたすべてのリクエスト、$_GET、$_POST、$_COOKIE のすべてのアクションが含まれます
$GLOBALS[] には、実行中のスクリプト
インデックスのすべてのスーパーグローバル変数の参照コンテンツが含まれます。 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 "";
demo.php: (match index.php Use)
<?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 中国語 Web サイト (m.sbmmt.com) に注意してください。