Cookie和Session算是網站登陸驗證的常用手段了。不管論壇也好,微博也好,它們都依賴於cookie和session以完成各項工作。
這裡就不具體介紹Cookie和Session的概念了,我們可以簡單的把它們理解為臨時鑰匙,用於開啟不同的網絡資源。
下面開始介紹在PHP裡如何操作Cookie和Session。
Cookie:
在PHP裡,我們可以使用setcookie()函數來設置cookie。但特別注意,setcookie函數必須置於<html>標簽之前。setcookie函數包含了一下幾個參數:setcookie(name, value, expire, path, domain)。name參數是用來規定cookie的名稱的,而value則是規定對應名稱cookie的值,expire則是設定cookie有效期的。特別注意path和domain參數可選的。(path是規定cookie的服務器路徑,而domain是規定cookie的所有域名)。
一般我們這樣設置cookie
設置cookie
<?php
setcookie("username","Ku_Andrew",time()+3600);
?>
username就是我們cookie的名字了,而Ku_Andrew則是username的值,time()+3600就是一小時後該cookie過期。
現在我們用$_COOKIE來做一個實例
設置、讀取cookie
<?php
$username = $_COOKIE['username'];
if ($username == "")
{
setcookie("username","Ku_Andrew",time()+3600);
echo "we've not found your username from your cookie";
echo "but now we've give it to you , please refresh this page";
die("<a href=$PHP_SELF>kick me and refresh</a>");
}
else
{
echo ("hello $usernama");
}
?>
如果想做出更復雜的判斷,例如用戶登陸等,我們可以在IF語句中的加入從數據庫從檢索出來的值。
Session:
與Cookie不同,Session是保存在服務器上的,同時Session會隨著浏覽器的關閉而自動滅亡,生命周期較短。在PHP上,我們使用session_start()函數來啟動session;與設置cookie相同,我們必須在<html>標簽之前使用這個函數。使用這個函數之後我們就可以開始設置我們的Session變量了。方法也是極為簡單:用$_SESSION數組直接定義。完成了定義,在不使用的時候為了節約服務器資源,我們要關閉它。這時可以使用unset()函數或者session_destroy()函數;unset()是解除變量,session_destroy()則是徹底終結session。下面是代碼片段。
Session設置、讀取
<?php
session_start();
if ($_SESSION['pid'] == "")
{
$_SESSION['pid'] = 1;
}
else
{
$_SESSION['pid'] += 1;
}
echo "this is your $_SESSION['pid'] times watching this page";
?>
這是一個簡單的網頁計數器,通過設置pid來實現計數。第一次判斷中,如果session為空,那麼設置成一,並且讀取session,反饋給用戶。以後的每次訪問,都會在原有session的基礎上逐次加一反饋給用戶。