發新話題

[分享] 《PHP》『HTTP函式庫』

《PHP》『HTTP函式庫』

《PHP》『HTTP函式庫』header --- 送出HTTP標頭

header

(PHP3 , PHP4)

header ---  送出HTTP標頭

語法 : int header (string string)

說明 :

header( )函式是用在HTML檔案的上方,來送出HTTP標頭字串。注意 : header( )必須在任何標準的HTML標籤或是從PHP輸出之前來呼叫此函式。

這裡有二個標頭呼叫的特殊例子,第一個是"header"標頭,它可以引導瀏灠器到新的地方。

Example :

<?php

    header ("Location: 訪客無法瀏覽此圖片或連結,請先 註冊登入會員 "); /* Redirect browser
                                                         to PHP web site */
    exit;                                         /* Make sure that code below does
                                                        not get executed when we redirect. */

?>      

第二個特殊的例子是任何的標頭都以字串"HTTP/"開始。例如 : 如果你有ErrorDocument 404 Apache指令指到一個PHP程式,這將是個好主意,來確定你的PHP程式真的可以產生404。你的程式碼將會是 :

Example :

<?php

    header ("HTTP/1.0 404 Not Found");

?>

PHP程式通常是用來產生動態的HTML,有時候必須使它不被用戶端(client)的瀏灠器或是任何proxy(介於伺服器與用戶端)儲存起來,許多的proxies和client可以使用下列方式來迫使無法儲存(cache)。

<?php

    header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the past

    header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
                                                                                            // always modified

    header ("Cache-Control: no-cache, must-revalidate");  // HTTP/1.1

    header ("Pragma: no-cache");                          // HTTP/1.0

?>      

參考 : header_sent( )



[ 本帖最後由 蔡逸竹 於 2006-9-25 05:11 編輯 ]

TOP

《PHP》『HTTP函式庫』header_sent --- 判斷標頭是否已經送出

header_sent

(unknown)

header_sent ---  判斷標頭是否已經送出

語法 : boolean headers_sent (void)

說明 :

如果標頭已經送出則此函式傳回true,否則傳回false。

參考 : header( )

TOP

《PHP》『HTTP函式庫』setcookie --- 送出cookie

setcookie

(PHP3 , PHP4)

setcookie ---  送出cookie

語法 : int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

說明 :

setcookie( )定義一個cookie和標頭一起送出。cookie必須在任何其它的標頭送出之前送出,這是cookie的限制,而不是PHP。你必須在任何<html>或是<head>標籤之前呼叫此函式。

除了參數name之外,其它都是非必需的。如果只有name這一個參數,則用戶端(client)此名稱的cookie將會被刪除,你也可以使用空字串(" ")來略過此參數,參數expire和secure是個整數,你可以使用0來略過參數,而不是使用空字串。參數expire是一個正規的Unix時間整數,由time( )和mktime( )傳回。參數secure指出此cookie將只有在安全的HTTPS連結時傳送。

常見的錯誤 :

cookies將不變成可看見的,直到下次頁面載入時,此cookies才將成為可看見的。
cookies必須以它們所設定的相同參數值,才能將它刪除。
在PHP3中,在相同的程式裡多次的呼叫setcookie( ),將會以顛倒的順序來執行。如果你想在插入另一個值之前刪除cookie,你應該先執行插入之後再執行刪除。在PHP4中,多次的呼叫setcookie( )會依照呼叫的順序來執行。

下面的範例說明如何去送出cookies :

Example :

<?php

    setcookie ("TestCookie", "Test Value");

    setcookie ("TestCookie", $value,time()+3600); /* expire in 1 hour */

    setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);

?>

下面的範例說明如何將上面範例所送出的cookies刪除 :

<?php

    setcookie ("TestCookie");

    setcookie ("TestCookie", "", time());

    setcookie ("TestCookie", "", time(), "/~rasmus/", ".utoronto.ca", 1);

?>

當你送出cookie時,cookie一部份的值將會自動地urlencoded,並且當接收到此cookie時,它會自動地decoded並分配它,使它成為變數,變數的名稱則與cookie的名稱相同。我們可以簡單的使用下列範例的其中一個方法,來看見cookie的內容 :

<?php

    echo $TestCookie;

    echo $HTTP_COOKIE_VARS["TestCookie"];

?>

你也可以在cookie的名稱中使用陣列的標記法,來設定陣列cookies,這種設定的結果就像是你有著許多的cookie,但是當你的程式接收到cookie時,cookie的值全部都會放在陣列之中 :

<?php

    setcookie ("cookie[three]", "cookiethree");

    setcookie ("cookie[two]", "cookietwo");

    setcookie ("cookie[one]", "cookieone");

    if (isset ($cookie)) {

         while (list ($name, $value) = each ($cookie)) {

                    echo "$name == $value<br>\n";

         }

    }     

?>

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。