外部傳遞變數

概述及用途
    除了在程式中自行指定變數之外,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之用法
<Form name = "Form Name"
           action = "資料處理程式的URI"
           method = "GET/POST"
………
</Form>

參數說明

    name 係指該 form 的名稱。在事件處理程序中,若要存取本 form 的任何資料時,您可以用 document.UserLogin 來稱呼它;如果省略不寫的話,您也可以用 document.forms[0] 來稱呼它(說明:forms[0] 係指網頁中的第一個 form 而言,若還有第二個、第三個 form 的話,請依序用 forms[1], forms[2])。
 action 係指該 form 被使用者送出之後,負責接收與處理資料的程式之 URI(Uniform Resource Identifiers)。
 method 該 form 被送出時,所採用的 HTTP method,預設值是 GET。
 POST 方法是將資料包裝在 HTTP 標頭內傳送給 Web server;而 GET 方法則是將資料直接加在 URI 之後。
 使用 GET method 所能傳遞的資料有限(連同 URI 共 255 字元),在需要上傳大量資料或檔案時,請使用 POST method。

範例 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);
?>