在使用PHP $_COOKIE獲取cookie值時(shí),有時(shí)候可能會(huì)遇到獲取到的值與存入的值不同的情況,這時(shí)候我們需要對(duì)代碼進(jìn)行一些調(diào)試和檢查。
下面將介紹一些可能導(dǎo)致獲取的cookie值與存入的值不同的原因。
(相關(guān)資料圖)
由于cookie本身是一個(gè)標(biāo)準(zhǔn)的HTTP協(xié)議中的請(qǐng)求頭,所以存入cookie時(shí)使用的變量名需要和獲取時(shí)使用的變量名一致。如果變量名不一致,則獲取的值就會(huì)和存入的值不同。
舉個(gè)例子:
// 存入cookie時(shí)setcookie("test", "abc", time() + 3600, "/"); // 獲取cookie時(shí)$test = $_COOKIE["Test"];在這個(gè)例子中,存入cookie時(shí)使用的變量名為"test",但是在獲取時(shí)使用了"Test",這會(huì)導(dǎo)致獲取到的值與存入的值不同。
cookie作用路徑不一致與變量名類似,cookie作用的路徑也需要保持一致。如果存入cookie時(shí)指定了作用路徑,但是獲取時(shí)沒有指定,則獲取到的值就會(huì)和存入的值不同。
舉個(gè)例子:
// 存入cookie時(shí)setcookie("test", "abc", time() + 3600, "/test"); // 獲取cookie時(shí)$test = $_COOKIE["test"];在這個(gè)例子中,存入cookie時(shí)指定了作用路徑為"/test",但是獲取cookie時(shí)沒有指定,導(dǎo)致獲取到的值不同。
cookie過期時(shí)間不一致如果在存入cookie時(shí)指定過期時(shí)間,但是在獲取cookie時(shí)已經(jīng)超過了過期時(shí)間,則獲取到的值為null。
舉個(gè)例子:
// 存入cookie時(shí)setcookie("test", "abc", time() + 3600, "/"); // 過了過期時(shí)間再獲取cookie時(shí)sleep(3605);$test = $_COOKIE["test"];在這個(gè)例子中,存入cookie的過期時(shí)間為一小時(shí)后,但是在獲取cookie時(shí)已經(jīng)超過了過期時(shí)間,導(dǎo)致獲取到的值為null。
cookie跨域問題如果存入cookie的域名和獲取cookie的域名不一致,則獲取到的cookie值也會(huì)與存入的不同。
舉個(gè)例子:
// 存入cookie時(shí)setcookie("test", "abc", time() + 3600, "/", ".example.com"); // 在另一個(gè)域名上獲取cookie時(shí)$test = $_COOKIE["test"];在這個(gè)例子中,存入cookie時(shí)指定了域名為".example.com",但是在另一個(gè)域名上獲取cookie,則會(huì)獲取不到或者獲取到不同的值。
總結(jié):
確保變量名、作用路徑、過期時(shí)間、域名都要保持一致,避免cookie跨域問題,這些都是獲取cookie值與存入的值不同的原因。在調(diào)試代碼時(shí),一定要注意這些問題,避免不必要的錯(cuò)誤。
以上就是淺析php $_cookie值與存入值不同的原因的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
關(guān)鍵詞: