大家都知道,如果想將客戶唯一標識並將其進行保存的方法分爲:Cookie(餅乾)及Session(訪問)。
但是對於Session及Cookie的區別到底是在什麼方面呢?
我搜索了一下網絡上較流行的說法總結起來,即:Session爲服務器存儲Cookie爲客戶端存儲。
是,對於Session及Cookie來說最大的區別在此,但是對於區別到底在哪裏呢?以下就是我所根據代碼及相關理解所整理的。
代碼:
A1.php
<?php
function CookiesTest($newValue){
if(!isset($_COOKIE["CookiesTest"])){
setcookie('CookiesTest',$newValue,time() + 3600);
echo "CookieValue:".$_COOKIE["CookieValue"];
}
}
function SessionTest($newValue){
if(!session_is_registered('SessionTest')){
session_register("SessionTest");
}
}
CookiesTest("HelloCookies!");
SessionTest("HelloSession!");
echo "CookieValue:".print_r($_COOKIE)."<br>";
echo "CookieValue:".$_COOKIE["CookiesTest"]."<br>";
$SessionTest = "dd";
echo $SessionTest;
echo $_SESSION["SessionTest"];
?>
A2.php
<?php
//session_start();
echo $_SESSION["SessionTest"];
echo $CookiesTest;
?>
Cookie:
(1)用來存儲連續訪問一個頁面時所使用。(即,對地Cookie的值不是真正意義上的全局變更的概念,即,對於A1.php來說通過調整$_COOKIE[“XX”]可以調用相應的Cookie值,但是如果再打開一個A2.php的IE遊覽器,再取該Cookie值時就取不出來了!因此對於Cookie來說並不是實際意義上的全局概念。)
(2)Cookie是存儲在客戶端,對於Cookie來說是存儲在用戶WIN的Temp目錄中的。
Session:(一種特殊的Cookie,當Cookie被禁時Session也會被禁,但是對於Session可以通過重定向的方式重新獲得)
(1)可以用來存儲用戶全局的唯一變量。對於Session來說可以通過Session_start()重新定向並獲得Session的值並進行操作且並不分瀏覽是否被重複打開。如上面的A1.php進行了Session的操作,如果再打開一個IE後使用Sessoin_start();後Session相應的變量又會被重新啓用,即實現了真正意義的全局及唯一。
(2)對於Session來說是存儲在服務器上的php指定的目錄中的(session_dir)的位置進行的存放。以上就是我對Session及Cookie的認識,希望大家批評指正。