PHP Cookie & PHP Session

作用:常用于識別用戶。

簡介:
cookie常用于識別用戶。cookie是服務器留在用戶計算機中的小文件。每當相同的計算機通過瀏覽器請求網頁時候,它同事會發送cookie。通過php,可以創建并且取回cookie的值。

創建cookie:
setcookie() 函數用于設置cookie
注釋:setcookie()函數必須位于<html>標簽之前。
語法:

setcookie(name, value, expire, path, domain);

例子:

<?php 
    setcookie("user", "leo", time()+3600);
?>
<html>
<body>
</body>
</html>

注釋:在發送cookie的時候,cookie的值會自動進行URL編碼,
在取回時進行自動解碼(為防止URL編碼,請使用setrawcookie()取而代之)。

取回Cookie的值

PHP的$_COOKIE變量用于取回cookie的值。
在下面的例子中,我們取回了名為usercookie值,并把它顯示在了頁面上:

<?php
     echo $_COOKIE["user"];
    print_r($_COOKIE);
?>

在下面的例子中,我們使用isset()函數來確認是否已經設置了cookie:

<html>
<body>
<?php
    if(isset($_COOKIE["user"])) {
        echo "Welcome ".$_COOKIE["user"]."!<br/>";
    }else {
       echo "Welcom guest!<br>";
    }
?>
</body>
</html>

刪除cookie:

使用過期日期變更為過去的事件點。
刪除的例子:

<?php
    setcookie("user", "", time()-3600);  // 將過期日期變更為過去的時間點。
?>

如果瀏覽器不支持cookie怎么辦?

如果你的應用程序設計不支持cookie的瀏覽器,你就不得不采取其他方法在應用程序中從一張頁面向另一張頁面傳遞信息。一種方式是從表單傳遞數據(有關表單和用戶輸入的內容)。

<html>
<body>
    <form action="welcome.php" method="post">
        Name:<input type="text" name="name">
        Age:<input type="text" name="age">
        <input type="submit">
    </form>
</body>
</html>

取回"welcom.php"中的值,就像這樣:

<html>
<body>
    Welcome <?php echo $_POST["name"]; ?>.<br>
    You are <?php echo $_POST["age"]; ?> years old.
</body>
</html>

PHP Sessions

PHP Sessions 變量用于存儲有關用戶會話的信息,或更改用戶會話的設置。
Session變量保存的信息是單一用戶的,并且可供應用程序中的所有頁面使用。

PHP Session變量

當你運行一個應用程序時,你會打開它,做些更改,然后關閉它。這很像一次會話。計算機清楚你是誰。它知道你合適啟動應用程序,并在合適終止。但是在因特網上,存在一個問題:服務器不知道你是誰以及你做什么,這個是由于HTTP地址不能維持狀態。

通過在服務器上存儲用戶信息以便隨后使用,PHP session 解決了這個問題(比如用戶名稱,購買商品等)。不過,會話信息是臨時的,在用戶離開網站后將被刪除。如果你需要永久存儲信息,可以把數據存儲在數據庫中。

Session的工作機制是:為每個訪問者創建一個唯一的id(UID),并基于這個UID 來存儲變量。UID 存儲在cookie中,亦或通過URL進行傳導。

開始PHP Session:

在把用戶信息存到PHP Session之前,首先必須啟動會話。
注釋:session_start()函數必須位于<html>標簽之前:

<?php session_start(); ?>
<html>
<body>
</body>
</html>

上面的代碼會向服務器注冊用戶的會話,以便你可以開始保存用戶信息,同時會為用戶會話分配一個UID。

存儲Session變量

存儲和取回session變量的正確方法是使用PHP $_SESSION變量:

<?php
    session_start();
    // 存儲session 數據
    $_SESSION['views'] = 1;
?>
<html>
<body>
<?php  
    // 取回session data
    echo "Pageviews=".$_SESSION['views'];
?>
</body>
</html>

計數器:

<?php
session_start();

if(isset($_SESSION['views']))
  $_SESSION['views']=$_SESSION['views']+1;

else
  $_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>

終結Session:

可以使用unset()或者session_destory()函數。
unset()函數用于釋放指定的session變量

<?php
    unset($_SESSION['views']);
?>

或者:

<?php
    session_destroy();
?>

注釋:session_destroy() 將重置session,你將會失去所有session數據。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容