本文目錄一覽:
在php中怎麼設置cookie
php設置和獲取cookie
setcookie(‘mycookie’,’value’);
//函數原型:int setcookie(string name,string value,int expire,string path,string domain,int secure)
echo($mycookie);
echo($HTTP_COOKIE_VARS[‘mycookie’]);
echo($_COOKIE[‘mycookie’]);
刪除Cookie
(1)調用只帶有name參數的setcookie();
(2)使失效時間為time()或time-1;
?php setcookie(‘name’); ?
setcookie(‘mycookie’);或setcookie(‘mycookie’,”);或setcookie(“mycookie”,false);
//setcookie(‘mycookie’,”,time()-3600);
echo($HTTP_COOKIE_VARS[‘mycookie’]);
print_r($_COOKIE);
建議刪除方法:
setcookie(‘mycookie’,”,time()-3600);
PHP提供一個很好用的函數mktime()。
你只要按順序傳送給mktime()你希望表示的小時,分鐘,秒數,月份,日期,及年份,
mktime()就會返回該日期自1970年1月1日的總秒數。
因此,如果需要模擬 Y2K 問題:
$y2k = mktime(0,0,0,1,1,2000);
setcookie(‘name’,’value’,$y2k);
setcookie(‘name’, ‘value’, time+3600);
setcookie(‘name’, ‘value’, $y2k, ‘~/myhome’, ‘.domain.com’);
獲取COOKIE過期時間的辦法
$expire = time() + 86400; // 設置24小時的有效期
setcookie (“var_name”, “var_value”, $expire); // 設置一個名字為var_name的cookie,並制定了有效期
setcookie (“var_name_expire”, $expire, $expire); // 再將過期時間設置進cookie以便你能夠知道var_name的過期時間
註:
在發送 cookie 時,cookie 的值會自動進行 URL 編碼。接收時會進行 URL 解碼。
如果你不需要這樣,可以使用 setrawcookie() 代替。
php。通過ajax設置cookie成功後,客戶端瀏覽器會更新cookie信息嗎?就是說網頁不刷新
這樣是不會刷新的,你必須在通過ajax設置cookie後由後端返回設置結果(成功/失敗)
然後在前端通過js更新頁面
因為網頁在顯示時已經下載完畢,不會改變了,你需要改變網頁內容,就要用js修改,ajax取回來數據,然後前端用js根據數據來修改頁面
你的後端將cookie刪除了,但前端頁面已經被瀏覽器解析,所以瀏覽器不會自己修改登錄信息
解決方法:
ajax發送請求→PHP接到退出請求→PHP刪cookie→PHP返回成功碼{“success”:1}或失敗碼{“success”:0}→前端接受到返回碼→如果是1,則通過js將用戶名改掉(如document.getElementById(‘username’).innerHTML=’請登錄’)等
一般退出是直接用一個鏈接,用戶訪問連接後,後端清理cookie,然後用302或301跳轉到原來頁面或首頁,目前大部分網站都是跳轉的方式退出的
雖然ajax不刷新頁面的方式理論上用戶體驗更好,但個人認為,退出賬戶這類操作不會經常使用,沒有必要用ajax,通常是網頁中動態展示的數據(如天氣、抽獎結果、活動參與信息)等經常需要變動的數據用ajax
如何使用PHP操作cookie
PHP setcookie() 函數向客戶端發送一個 HTTP cookie。cookie 是由伺服器發送到瀏覽器的變數。cookie 通常是伺服器嵌入到用戶計算機中的小文本文件。每當計算機通過瀏覽器請求一個頁面,就會發送這個 cookie。cookie 的名稱指定為相同名稱的變數。例如,如果被發送的 cookie 名為 “name”,會自動創建名為 $user 的變數,包含 cookie 的值。必須在任何其他輸出發送前對 cookie 進行賦值。如果成功,則該函數返回 true,否則返回 false。 setcookie(name, value, expire, path, domain, secure) name 必需。規定 cookie 的名稱。value 必需。規定 cookie 的值。expire 可選。規定 cookie 的有效期。path 可選。規定 cookie 的伺服器路徑。domain 可選。規定 cookie 的域名。secure 可選。規定是否通過安全的 HTTPS 連接來傳輸 cookie。可以通過 $HTTP_COOKIE_VARS[“user”] 或 $_COOKIE[“user”] 來訪問名為 “user” 的 cookie 的值。在發送 cookie 時,cookie 的值會自動進行 URL 編碼。接收時會進行 URL 解碼。如果你不需要這樣,可以使用 setrawcookie() 代替。程序1:設置並發送 cookie: ?php $value = “my cookie value”; // 發送一個簡單的 cookie setcookie(“TestCookie”,$value); ? html body … … ?php $value = “my cookie value”; // 發送一個 24 小時候過期的 cookie setcookie(“TestCookie”,$value, time()+3600*24); ? html body 程序2:檢索cookie 值的不同方法: html body ?php // 輸出個別的 cookie echo $_COOKIE[“TestCookie”]; echo “br /”; echo $HTTP_COOKIE_VARS[“TestCookie”]; echo “br /”; // 輸出所有 cookie print_r($_COOKIE); ? /body /html 程序輸出: my cookie value my cookie value Array ([TestCookie] = my cookie value) 程序3:通過把失效日期設置為過去的日期/時間,刪除一個 cookie: ?php // 把失效日期設置為一小時前 setcookie (“TestCookie”, “”, time() – 3600); ? 程序4:創建一個數組 cookie: ?php setcookie(“cookie[three]”,”cookiethree”); setcookie(“cookie[two]”,”cookietwo”); setcookie(“cookie[one]”,”cookieone”); // 輸出 cookie (在重載頁面後) if (isset($_COOKIE[“cookie”])) { foreach ($_COOKIE[“cookie”] as $name = $value) { echo “$name : $value br /”; } } ? 程序輸出: three : cookiethree two : cookietwo one : cookieone 程序5: /** * 01.cookie設置 * */ function ssetcookie($var, $value, $life=0) { global $_SGLOBAL, $_SC, $_SERVER; setcookie($_SC[‘cookiepre’].$var, $value, $life?($_SGLOBAL[‘timestamp’]+$life):0, $_SC[‘cookiepath’], $_SC[‘cookiedomain’], $_SERVER[‘SERVER_PORT’]==443?1:0); }
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/275670.html