Latest web development tutorials

PHP setrawcookie() 函數

PHP HTTP 參考手冊 完整的PHP HTTP參考手冊

定義和用法

setrawcookie() 函數不對cookie 值進行URL 編碼,發送一個HTTP cookie。

cookie 是由服務器發送到瀏覽器的變量。 cookie 通常是服務器嵌入到用戶計算機中的小文本文件。 每當同一台計算機通過瀏覽器請求頁面時,就會發送這個cookie。

cookie 的名稱自動指定為相同名稱的變量。 例如,如果被發送的cookie 名為"user",則會自動創建一個名為$user 的變量,包含cookie 的值。

必須在任何其他輸出發送到客戶端前對cookie 進行賦值。

如果成功,該函數返回TRUE。 如果失敗則返回FALSE。

語法

setrawcookie(name,value,expire,path,domain,secure)

参数 描述
name 必需。规定 cookie 的名称。
value 必需。规定 cookie 的值。
expire 可选。规定 cookie 的过期时间。

time()+3600*24*30 将设置 cookie 的过期时间为 30 天。如果这个参数没有设置,那么 cookie 将在 session 结束后(即浏览器关闭时)自动失效。

path 可选。规定 cookie 的服务器路径。

如果路径设置为 "/",那么 cookie 将在整个域名内有效.如果路径设置为 "/test/",那么 cookie 将在 test 目录下及其所有子目录下有效。默认的路径值是 cookie 所处的当前目录。

domain 可选。规定 cookie 的域名。

为了让 cookie 在 example.com 的所有子域名中有效,您需要把 cookie 的域名设置为 ".example.com"。当您把 cookie 的域名设置为 www.example.com 时,cookie 仅在 www 子域名中有效。

secure 可选。规定是否需要在安全的 HTTPS 连接来传输 cookie。如果 cookie 需要在安全的 HTTPS 连接下传输,则设置为 TRUE。默认是 FALSE。


提示和註釋

提示:可以通過$HTTP_COOKIE_VARS["user"]或$_COOKIE["user"]來訪問名為"user"的cookie的值。

注意: setrawcookie()函數與setcookie()函數幾乎完全相同,不同的是不會在發往客戶端時,對cookie值進行自動URL編碼。


實例1

設置並發送cookie:

<?php
$value = "my cookie value";

// send a simple cookie
setrawcookie("TestCookie",$value);
?>

<html>
<body>

...
...

<?php
$value = "my cookie value";

// send a cookie that expires in 24 hours
setrawcookie("TestCookie",$value, time()+3600*24);
?>

<html>
<body>

...
...


實例2

檢索cookie 值的不同方法(在cookie 設置之後):

<html>
<body>

<?php
// Print individual cookies
echo $_COOKIE["TestCookie"];
echo "<br />";
echo $HTTP_COOKIE_VARS["TestCookie"];
echo "<br />";

// Print all cookies
print_r($_COOKIE);
?>

</body>
</html>

上面的代碼將輸出:

my cookie value
my cookie value
Array ([TestCookie] => my cookie value)


實例3

通過把失效日期設置為過去的日期/時間,刪除一個cookie:

<?php
// Set the expiration date to one hour ago
setrawcookie ("TestCookie", "", time() - 3600);
?>

<html>
<body>

...
...


實例4

創建一個數組cookie:

<?php
setrawcookie("cookie[three]","cookiethree");
setrawcookie("cookie[two]","cookietwo");
setrawcookie("cookie[one]","cookieone");

// print cookies (after reloading page)
if (isset($_COOKIE["cookie"]))
{
foreach ($_COOKIE["cookie"] as $name => $value)
{
echo "$name : $value <br />";
}
}
?>

<html>
<body>

...
...

上面的代碼將輸出:

three : cookiethree
two : cookietwo
one : cookieone


PHP HTTP 參考手冊 完整的PHP HTTP參考手冊