PHP開發基礎教學超全域變量
概括
之前章節中提到的全域變數是不能在函數內部引用,但是超級全域變數可以
超級全域變數在PHP 4.1.0之後啟用, 是PHP系統中自帶的變量,在一個腳本的全部作用域中都可用。
一、PHP 超級全域變數
#PHP中預先定義了幾個超級全域變數(superglobals) ,這意味著它們在一個腳本的全部作用域中都可用。 你不需要特別說明,就可以在函數及類別中使用。
PHP 超級全域變數清單:
- ## $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- # $_GET
- $_FILES
- # $_ENV
- $_COOKIE
- $_SESSION
二、PHP $GLOBALS
#$GLOBALS 是PHP的一個超級全域變數組,在一個PHP腳本的全部作用域中都可以存取。 $GLOBALS 是一個包含了全部變數的全域組合陣列。變數的名字就是數組的鍵。 以下實例介紹如何使用超級全域變數$GLOBALS程式碼如下<?php //定义两个全局变量,函数内部不可以访问 $x = 75; $y = 25; //定义函数 function addition() { //将全局变量变为超级全局变量,这样在函数内部就可以正常访问了 $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; } //调用函数 addition(); //输出函数内部定义的全局变量 echo $z; ?>註:以上實例中z 是一個$GLOBALS數組中的超級全域變量,該變數同樣可以在函數外存取
三、PHP $_SERVER
$_SERVER 是一個包含了頭資訊(header )、路徑(path)、以及腳本位置(script locations)等等資訊的陣列。這個數組中的項目是由 Web 伺服器所建立。不能保證每個伺服器都提供全部項目;伺服器可能會忽略一些,或提供一些沒有在這裡列舉出來的項目。 以下實例中展示如何使用$_SERVER中的元素:實例程式碼如下:<?php //输出当前脚步的文件名 echo "<h3>输出当前脚步的文件名</h3>"; echo $_SERVER['PHP_SELF']; echo "<hr/>"; //当前脚步所在服务器的主机名 echo "<h3>当前脚步所在服务器的主机名</h3>"; echo $_SERVER['SERVER_NAME']; echo "<hr/>"; //当前请求头中 Host echo "<h3>当前请求头中 Host</h3>"; echo $_SERVER['HTTP_HOST']; echo "<hr/>"; //引导用户代理到当前页的前一页的地址(如果存在) echo "<h3>引导用户代理到当前页的前一页的地址(如果存在)</h3>"; echo $_SERVER['HTTP_REFERER']; echo "<hr/>"; //用来检查浏览页面的访问者在用什么操作系统 echo "<h3>用来检查浏览页面的访问者在用什么操作系统</h3>"; echo $_SERVER['HTTP_USER_AGENT']; echo "<hr/>"; //包含当前脚本的路径 echo "<h3>包含当前脚本的路径</h3>"; echo $_SERVER['SCRIPT_NAME']; ?>更多的 $_SERVER 變數中的重要元素請見下表:
四、PHP $_GET
PHP $_GET 被廣泛應用於收集表單數據,在HTML form標籤的指定該屬性:"method="get"。$_GET 也可以收集URL中發送的數據。假定我們有一個包含參數的超鏈接HTML頁面:<html> <body> <!--创建个连接,连接到12_7.php,并且传过去两个值--> <a href="test.php?subject=PHP&web=php.cn">点击,利用GET方式传值</a> </body> </html>當使用者點擊連結"點擊,利用GET方式傳值", 參數"subject" 和"web" 將發送至"test.php",你可以在"test.php" 文件中使用$_GET 變數來取得這些資料。
五、PHP $_POST
$_POST 和$_GET一樣,被應用於收集表單數據,在HTML form標籤的指定該屬性:"method="post"。
#以下實例顯示了一個輸入字段(input)及提交按鈕(submit)的表單(form )。其他的PHP檔案來處理該數據,你可以修改該指定的腳本檔案名稱。 #
<html> <body> <!-- 接收12_6.php传来的值 --> <?php echo "Study " . $_GET['subject'] . " at " . $_GET['web']; ?> </body> </html>
附註:因為本次提交是提交到目前頁面,所以頁面載入完成後會顯示變數fname未定義,提交過去一個值過去就會消失
PHP $_REQUEST 用來收集HTML表單提交的數據,可以收集到POST 和GET兩種提交方式提交過來的數據。透過點擊"Submit" 按鈕提交表單資料時, 表單資料將會傳送至<form>標籤中action 屬性中指定的腳本檔案。來處理該數據,你可以修改該指定的腳本檔名。 註:fname未定義原因和上面$_POST一樣
學習心得:
一些超級全域變數沒必要全部記住,需要的時候查手冊即可
$_GET,$_POST,$_REQUEST三者之間的區別,在後面的章節會詳細介紹