PHP外的變數

HTML Forms (GET and POST)

當一份表格(Form)傳給 PHP script 時, 表格內所有的變數在PHP script 內都是 有效的. 例如以下的表格(Form) :

Example 5-2. Simple form variable

<form action="foo.php3" method="post">
    Name: <input type="text" name="name"><br>
    <input type="submit">
</form>
      

當按下submit鍵時, PHP 會產生 $name變數, $name變數的值就是任何輸入在 Name: 這個欄位里資料.

PHP 也能接受表格(form)的陣列變數, 但只限於一維的. 表格(form)的陣列變數好處是在於我們可以將性質相近的變數聚集在一起, 或 可以用這個陣列變數去存取多樣選擇(multiple select)的輸入 :

Example 5-3. More complex form variables

<form action="array.html" method="post">
    Name: <input type="text" name="personal[name]"><br>
    Email: <input type="text" name="personal[email]"><br>
    Beer: <br>
    <select multiple name="beer[]">
        <option value="warthog">Warthog
        <option value="guinness">Guinness
        </select>
    <input type="submit">
</form>
      

如果PHP的track_vars 的功能有打開, 用 track_vars 組態設定或 <?php_track_vars?>指令, 那麼經過 POST 或 GET 的方法, 表格的變數在global associative arrays 的 $HTTP_POST_VARS and $HTTP_GET_VARS 可以找得到.

用影像傳遞變數

當我們在傳遞一張表格(form)時, 我們可以用影像代替標準的 submit按鈕. 寫法如下 :

<input type=image src="image.gif" name="sub">
      

當使用者按下該影像時,額外的兩個變數會伴隨著該表格(form)傳到 伺服器(server)端, sub_x 和 sub_y.這兩個變數是儲存使用者點選該圖象的座標.

HTTP Cookies

PHP 也有支援 HTTP cookies ,它的規格可以在 Netscape's Spec找到 . Cookies 是一種將資料留在客戶端的游覽器機制,這可以 用對使用証進行追蹤或認證. 你可用 SetCookie()這個函式來設定 cookie. Cookies 是HTTP 標頭的一部份, 所以 SetCookie 這個函式要在所有的輸出送到游覽器 端之前就要先被呼叫了. Header()這個函式也同樣有這個限制. 所有的由客戶端(client)送過來的cookies 會自動的轉變成PHP的變數 .

如果你想指定好幾個值給單一個coookie,可以在cookie的名字上加[ ] 例如 :


SetCookie ("MyCookie[]", "Testing", time()+3600);
     

有一點要注意的, 當你用相同名字的cookie ,那麼它之前的值會被取代掉, 除非是路徑或網域不同 .所以在電子商店的應用, 你可能要保留一個計數器 的值 . 你可以這樣寫 :

Example 5-4. SetCookie Example

$Count++;
SetCookie ("Count", $Count, time()+3600);
SetCookie ("Cart[$Count]", $item, time()+3600);
     

環境(Environment)變數

PHP 會自動的將環境變數當成普通的 PHP 變數 .

echo $HOME;  /* Shows the HOME environment variable, if set. */
      

經由 GET, POST 和 Cookie 等機制進來的資訊, PHP會自動的將 其視為 PHP 變數, 所以經由環境明確的讀取該變數, 較能確保我們存取到我們想要的 變數.getenv() 函式可以達到這個功能 . 除此以外, 你也可以用 putenv() 設置一個環境變數 .