Cookie:
直接看代碼-說明及用法都在代碼中:
<?php date_default_timezone_set('Asia/Shanghai'); //設定正確的時區?><?php /* PHP中通過setcookie函數來創造Cookie。使用前必須瞭解: Cookie是 HTTP 頭標的組成部分,而頭標必須在頁面其它內容之前發送, 它必須最先輸出。若在setcookie函數之前輸出一個HTML標記或echo語句。 甚至一個空行都會導致程式出錯。 setcookie() 函數語言自行參考php手冊 */ //這裡把到期時間設為0可以直接刪除cookie //setcookie('visittime',"",0); if(isset($_COOKIE['visittime'])) { echo "上次訪問的時間是:".$_COOKIE['visittime']; } else { //設定cookie的有效時間為300秒,及五分鐘 setcookie('visittime',date('Y-m-d H:i:s'),time()+300); //刪除setcookie --這裡把到期時間設為0可以直接刪除cookie //setcookie('visittime',"",time()-1); }?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title></head><body> </body></html>
=====================================================================
Session:
首先要說一下,session也是一個個存在伺服器的檔案,而通過session ID來讀取的session,session ID可以存在用戶端的cookie裡,也可以存放在資料庫裡等等
<?php /*啟(建立)動session會話。和cookie一樣,使用session前,遊覽器不能有任何輸出 --所以放在最前面很保險 說明: 其實不管放哪裡。php代碼都會比html先執行。由後台成生遊覽器可以認識的html所以,這裡防止的是 在其他php代碼執行輸出前,先進行會話的啟動和註冊! */ session_start(); $_SESSION['admin'] = null; //註冊一個會話,並且賦空?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title><script type="text/javascript"> function yz(id) { <?php /*這裡如果先輸出echo的話。會話就會出現錯誤*/ //echo '這是錯誤的!'; $_SESSION['ad'] = '1234567890'; ?> window.open(id); }</script></head><body> <input type="button" value="跳轉" onclick="yz('sessionto.php');"/></body></html>
session讀取:
<?php /*讀取會話也是一樣的,都是使用會話。所以得先啟動。*/ session_start(); echo "注意讀取會話時,前面是可以有html輸出的,但是註冊會話就不行了<br />"; echo $_SESSION['ad'];?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title></head><body> </body></html>
==============================================================
設定session失效時兩種方法
1-
<?php //讓session一分鐘後失效 $time = 1*60; //設定session的失效時間 /*session_set_cookie_params() 函數必須在session_start()函數之前調用 但是不推薦使用此函數,此函數在一些遊覽器上會出現問題,所以一般手動設定失效時間 */ session_set_cookie_params($time); //使用函數 session_start(); //初始化設定 $_SESSION['username'] = 'mr';?>
2-
<?php /*使用 setcookie() 函數可對Session設定失效時間,如讓Session在一分鐘後失效,關鍵代碼如下*/ session_start(); //給出session失效時間 $time = 1*60; /*session_name 是session的名稱,session_id是判斷用戶端使用者的標識,因為session_id是 隨機產生的唯一名稱,所以session是相對安全的。失效時間和cookie的失效時間一樣,最後一個參數 為可選產數,是防止cookie的路勁(就是cookie的作用目錄) cookie()共有6個參數。 最後兩個分別是 範圍名,和是否通過安全連線https */ setcookie(session_name(),session_id(),time()+$time,"/"); //使用setcookie()手動設定session失效時間 $_SESSION['user'] = 'mr'; ?>
=====================================================================
用戶端禁止Cookie的情況:
請求端:
<?php session_start(); //還是要首先啟動session會話的?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title></head><body> <!-- 當用戶端禁止Cookie時,頁面見的session傳遞就會失效,因為session_id是存放在cookie裡的。 所以這是我們要用GET的方式傳遞Session_ID ,但在之前我們必須先啟動session --> <form id="form1" name="form1" method="post" action="common.php?<?=session_name();?>=<?=session_id();?>"> <input type="submit" value="提交" /> </form></body></html>
接收端:
<?php /*原理 -- session原理為請求該頁面之後會產生一個session_id ,如果這個時候禁止了Cookie就無法傳遞 session_id , 在請求下一個頁面時候將會重新產生一個session_id ,這樣就造成了session在頁面傳遞 失效. */ $sess_name = session_name(); //擷取session名稱 --擷取session是那個檔案 $sess_id = $_GET[$sess_name]; //根據session名稱擷取session_id Get方式 session_id($sess_id); //關鍵步驟 -根據sessionid擷取來確定資訊 session_start(); $_SESSION['admin'] = 'mrsoft';?>
=====================================================================