本文目錄一覽:
- 1、php setcookie(name, value, expires, path, domain,
- 2、如何設置cookie的伺服器路徑
- 3、php使用setcookie設置的session在指定目錄有效
- 4、PHP的cookie問題
php setcookie(name, value, expires, path, domain,
setcookie() 定義一個和其餘的 HTTP 標頭一起發送的 cookie 和其它標頭一樣 cookie 必須在腳本的任何其它輸出之前發送(這是協議限制) 這 需要將本函數的調用放到任何輸出之前 包括 和 head 標籤以及任何空格 如果在調用 setcookie() 之前有任何輸出 本函數將失敗並返回 FALSE 如果 setcookie() 函數成功運行 將返回 TRUE 這並不說明用戶是否接受了 cookie 函數定義 bool setcookie ( string name [ string value [ int expire [ string path [ string domain [ bool secure]]]]] ) setcookie() 參數詳解
參數 說明 舉例 name cookie的名字 使用 $_COOKIE[ cookiename ] 調用名為 cookiename 的 cookie value cookie的值 存放在客戶端 不要存放敏感數據 假定 name 是 cookiename 可以通過 $_COOKIE[ cookiename ] 取得其值 expire
Cookie 過期的時間 這是個 Unix 時間戳 即從 Unix 紀元開始的秒數
換而言之 通常用 time() 函數再加上秒數來設定 cookie 的失效期
或者用 mktime() 來實現
time()+ * * * 將設定 cookie 天后失效
如果未設定 cookie 將會在會話結束後(一般是瀏覽器關閉)失效
path Cookie 在伺服器端的有效路徑
如果該參數設為 / 的話 cookie 就在整個 domain 內有效
如果設為 /foo/ cookie 就只在 domain 下的 /foo/ 目錄及其子目錄內有效 例如 /foo/bar/
默認值為設定 cookie 的當前目錄
domain 該 cookie 有效的域名
要使 cookie 能在如 example 域名下的所有子域都有效的話 該參數應該設為 example
雖然 並不必須的 但加上它會兼容更多的瀏覽器
如果該參數設為 example 的話 就只在 子域內有效
細節見Cookie 規範中的 tail matching
secure
指明 cookie 是否僅通過安全的 HTTPS 連接傳送
當設成 TRUE 時 cookie 僅在安全的連接中被設置 默認值為 FALSE
或
例子 setcookie() 發送例子
複製代碼 代碼如下: $value = something from somewhere ; setcookie(“TestCookie” $value); setcookie(“TestCookie” $value time()+ ); /* expire in hour */ setcookie(“TestCookie” $value time()+ “/~ra *** us/” ” utoronto ca” );
注意 cookie 中值的部分在發送的時候會被自動用 urlencode 編碼並在接收到的時候被自動解碼並把值賦給與自己同名的 cookie 變數 如果不想這樣並且在使用 PHP 的話 可以用 setrawcookie() 來代替 下面這個簡單的例子可以得到剛才所設定的 cookie 的值
複製代碼 代碼如下: ?php // 輸出單獨的 cookie echo $_COOKIE[“TestCookie”]; echo $HTTP_COOKIE_VARS[“TestCookie”]; // 另一個調試的方法就是輸出所有的 cookie print_r($_COOKIE); ?
要刪除 cookie 需要確保它的失效期是在過去 才能觸發瀏覽器的刪除機制 下面的例子說明了如何刪除剛才設置的 cookie 例子 setcookie() 刪除例子
複製代碼 代碼如下: // 將過期時間設為一小時前 setcookie(“TestCookie” “” time() ); setcookie(“TestCookie” “” time() “/~ra *** us/” ” utoronto ca” );
也可以通過在 cookie 名稱中使用數組符號來設定數組 cookie 可以設定多個 cookie 作為數組單元 在腳本提取 cookie 時所有的值都放在一個數組種 例子 setcookie() 中使用數組的例子
複製代碼 代碼如下: ?php // 設定 cookie setcookie(“cookie[three]” “cookiethree”); setcookie(“cookie[o]” “cookieo”); setcookie(“cookie[one]” “cookieone”); // 刷新頁面後 顯示出來 if (isset($_COOKIE[ cookie ])) { foreach ($_COOKIE[ cookie ] as $name = $value) { echo “$name : $value br /n”; } } ? lishixinzhi/Article/program/PHP/201311/21055
如何設置cookie的伺服器路徑
Cookie的setPath()方法,指定的是可訪問該Cookie的目錄!默認只有同一個Web伺服器上同一個路徑下設置了該cookie的網頁讀取!如果你想讓這個cookie在多個頁面中共享,那麼需要使用Cookie的setPath()方法設置path
cookie.setPath(“/”),在Tomcat的webapps目錄下的所有目錄中共享這個cookie。
cookie.setPath(“/app1”),只能在app1應用下獲取這個cookie,就算這個cookie是app2產生的,app2也不能訪問它。
cookie.setPath(“/app1/action”),只能在app1/action目錄下獲取這個cookie。
我想你應該可以明白了,cookie的路徑指的是可以訪問該cookie的頂層目錄,該路徑的子路徑也可以訪問該cookie。
====
在中設置的cookie,但需要在zhidao.baidu.com下獲取,這樣就需要Cookie的setDomain()方法了。
cookie.setPath(“/”);
cookie.setDomain(“baidu.com”);//只給出域名的相同部分
response.add(cookie);
php使用setcookie設置的session在指定目錄有效
?php
session_set_cookie_params(0,’/path’);
session_start();
if ($_SESSION[‘name’] = “session”){
echo “設置成功”;
} else {
echo “設置失敗”;
}
?
?php
session_start();
var_dump($_SESSION);
?
PHP的cookie問題
發錯地方了!
PHP中使用cookie
1、設置Cookie
PHP用SetCookie函數來設置Cookie。必須注意的一點是:Cookie是HTTP協議頭的一部分,用於瀏覽器和伺服器之間傳遞信息,所以必須在任何屬於HTML文件本身的內容輸出之前調用Cookie函數。
SetCookie函數定義了一個Cookie,並且把它附加在HTTP頭的後面,SetCookie函數的原型如下:
int
SetCookie(string
name,
string
value,
int
expire,
string
path,
string
domain,
int
secure);
除了name之外所有的參數都是可選的。value,path,domain三個參數可以用空字元串代換,表示沒有設置;expire
和
secure兩個參數是數值型的,可以用0表示。expire參數是一個標準的Unix時間標記,可以用time()或mktime()函數取得,以秒為單位。secure參數表示這個Cookie是否通過加密的HTTPS協議在網路上傳輸。
當前設置的Cookie不是立即生效的,而是要等到下一個頁面時才能看到.這是由於在設置的這個頁面里Cookie由伺服器傳遞給客戶瀏覽器,在下一個頁面瀏覽器才能把Cookie從客戶的機器里取出傳回伺服器的原因。
在同一個頁面設置Cookie,實際是從後往前,所以如果要在插入一個新的Cookie之前刪掉一個,必須先寫插入的語句,再寫刪除的語句,否則可能會出現不希望的結果。
來看幾個例子:
簡單的:
SetCookie(“MyCookie”,
“Value
of
MyCookie”);
帶失效時間的:
SetCookie(“WithExpire”,
“Expire
in
1
hour”,
time()+3600);//3600秒=1小時
什麼都有的:
SetCookie(“FullCookie”,
“Full
cookie
value”,
time()+3600,
“/forum”,
“.phpuser.com”,
1);
這裡還有一點要說明的,比如站點有幾個不同的目錄,那麼如果只用不帶路徑的Cookie的話,在一個目錄下的頁面里設的Cookie在另一個目錄的頁面里是看不到的,也就是說,Cookie是面向路徑的。實際上,即使沒有指定路徑,WEB伺服器會自動傳遞當前的路徑給瀏覽器的,指定路徑會強制伺服器使用設置的路徑。解決這個問題的辦法是在調用SetCookie時加上路徑和域名,域名的格式可以是「」,也可是「.phpuser.com」。
SetCookie函數里表示value的部分,在傳遞時會自動被encode,也就是說,如果value的值是「test
value」在傳遞時就變成了「test%20value」,跟URL的方法一樣。當然,對於程序來說這是透明的,因為在PHP接收Cookie的值時會自動將其decode。
如果要設置同名的多個Cookie,要用數組,方法是:
SetCookie(“CookieArray[]”,
“Value
1″);
SetCookie(“CookieArray[]”,
“Value
2″);
或
SetCookie(“CookieArray[0]”,
“Value
1″);
SetCookie(“CookieArray[1]”,
“Value
2″);
2、接收和處理Cookie
PHP對Cookie的接收和處理的支持非常好,是完全自動的,跟FORM變數的原則一樣,特別簡單。
比如設置一個名為MyCookier的Cookie,PHP會自動從WEB伺服器接收的HTTP頭裡把它分析出來,並形成一個與普通變數一樣的變數,名為$myCookie,這個變數的值就是Cookie的值。數組同樣適用。另外一個辦法是引用PHP的全局變數$HTTP_COOKIE_VARS數組。
分別舉例如下:(假設這些都在以前的頁面里設置過了,並且仍然有效)
echo
$MyCookie;
echo
$CookieArray[0];
echo
count($CookieArray);
echo
$HTTP_COOKIE_VARS[“MyCookie”];
就這麼簡單。
3、刪除Cookie
要刪除一個已經存在的Cookie,有兩個辦法:
一是調用只帶有name參數的SetCookie,那麼名為這個name的Cookie將被從關係戶機上刪掉;另一個辦法是設置Cookie的失效時間為time()或time()-1,那麼這個Cookie在這個頁面的瀏覽完之後就被刪除了(其實是失效了)。
要注意的是,當一個Cookie被刪除時,它的值在當前頁在仍然有效的。
4、使用Cookie的限制
首先是必須在HTML文件的內容輸出之前設置;
其次不同的瀏覽器對Cookie的處理不一致辭,且有時會出現錯誤的結果。
第三個限制是在客戶端的。一個瀏覽器能創建的Cookie數量最多為30個,並且每個不能超過4KB,每個WEB站點能設置的Cookie總數不能超過20個。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/200057.html