外部傳遞變數
概述及用途
除了在程式中自行指定變數之外,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); ?> |