外部傳遞變數
概述及用途
除了在程式中自行指定變數之外,PHP 也可以透過 form 的 GET/POST、cookie、外加參數的方式,或是從環境變數中取得外來的變數值。
自 PHP 4.2.0 起,為了強化系統安全,在 php.ini 裡頭的 register_globals 選項被預設為 off;如此一來,外部變數的讀取將更為嚴謹。在 register_globals 設為 on 時,我們只要在變數名稱前方加上 $ 符號,即可取用變數的值;但現在要改用 $_xxxx['變數名稱'] 的方式才行,xxxx 所指的包括 GET、POST、COOKIE、FILES、REQUEST、SESSION、SERVER 與 ENV。 例如,我們要讀取一個以 GET 方式傳入的外部變數,請用 $_GET['變數名稱'];要讀取一個 cookie 的值,請用 $_COOKIE['變數名稱'];要讀取一個 session 變數的值,請用 $_SESSION['變數名稱']。 這裡先介紹GET及POST,其它變數視情況另行介紹。利用Get方式傳送資料時,是將資料直接加在URL後,安全性較差;而Post方式傳送則是先將資料轉成標準輸入再傳送,不會顯示在URL後,較安全。 |
使用說明與範例
說明 |
一般Server端要取得Client端所輸入的資料都是透過HTML From表單來傳送,而傳送的方式(method)有Get、Post二種。以下概述:
Form之用法 參數說明
|
範例 | POST方法之html程式碼 | |
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>無標題文件</title> </head> <body> <form name="form1" method="post" action="demo1-34.php"> <input type="text" name="test"><br> <input type="submit" name="Submit" value="送出"> <input type="reset" name="Submit2" value="重設"> </form> </body> </html> |
||
PHP顯示處理部份 | 顯示結果 | |
<?php echo "從表單取得\$_POST['test']:",$_POST['test']; echo "<br>從表單取得\$test:",$test; //第二行的值在register_globals="on"才會出現 echo "<br>",var_dump($_POST); ?> |
範例 | GET方法之html程式碼 | |
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>無標題文件</title> </head> <body> <form name="form1" method="get" action="demo1-35.php"> <input type="text" name="test"><br> <input type="submit" name="Submit" value="送出"> <input type="reset" name="Submit2" value="重設"> </form> </body> </html> |
||
PHP顯示處理部份 | 顯示結果 | |
<?php echo "從表單取得\$_GET['test']:",$_GET['test']; echo "<br>從表單取得\$test:",$test; //第二行的值在register_globals="on"才會出現 echo "<br>",var_dump($_GET); ?> |
附註 |
上面的範例說明了POST及GET的使用方式,注意觀察網址列的最後有什麼不同?另外 ,在程式的最後我們利用顯示陣列的方式將$_POST和$_GET變數顯示出來,發現到其實POST和GET方法是將資料存成陣列,藉此了解其工作方式,底下列出幾個外部傳遞變數陣列: $_COOKIE - 包含 cookie 的變數。 $_ENV - 包函主機的環境變數。 $_FILES - 包含上傳的檔案資訊。 $_GET - 包含 http get 的變數。 $_POST - 包含 http post 的變數。 $_REQUEST - 包含 $_GET, $_POST, $_COOKIE 的變數。 $_SERVER - 包含主機的資料變數。 $GLOBALS - 包含全部的全域變數。 |
補充 | 外加參數 | ||||||
|
|||||||