亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

PHP 菜鳥教程

PHP 高級教程

PHP & MySQL

PHP 參考手冊

PHP Session

在本教程中,您將學(xué)習(xí)如何使用PHP會話將某些數(shù)據(jù)臨時存儲在服務(wù)器上。

什么是Session

盡管您可以使用Cookie存儲數(shù)據(jù),但是它存在一些安全問題。 由于cookie存儲在用戶計算機上,因此攻擊者可以輕松地修改cookie內(nèi)容,以在您的應(yīng)用程序中插入可能有害的數(shù)據(jù),從而可能破壞您的應(yīng)用程序。

此外,每次瀏覽器向服務(wù)器請求URL時,網(wǎng)站的所有cookie數(shù)據(jù)都會在請求中自動發(fā)送到服務(wù)器。 這意味著如果您在用戶系統(tǒng)上存儲了5個Cookie,每個Cookie的大小為4KB,則瀏覽器需要在用戶每次查看頁面時上傳20KB的數(shù)據(jù),這可能會影響您站點的性能。

您可以通過使用PHP session來解決這兩個問題。 PHP session將數(shù)據(jù)存儲在服務(wù)器而不是用戶的計算機上。 在基于會話的環(huán)境中,每個用戶都是通過稱為會話標識符或SID的唯一編號來標識的。 此唯一的會話ID用于將每個用戶與自己在服務(wù)器上的信息(例如電子郵件,帖子等)鏈接起來。

提示:session ID是由PHP引擎隨機生成的,幾乎無法猜測。此外,由于會話數(shù)據(jù)存儲在服務(wù)器上,因此不必隨每個瀏覽器請求一起發(fā)送。

開始 Session

在將任何信息存儲在會話變量中之前,必須首先啟動Session。要開始新的Session,只需調(diào)用PHP session_start()函數(shù)。它將創(chuàng)建一個新會話并為用戶生成一個唯一的Session ID。

下面示例中的PHP代碼只是開始一個新Session。

<?php
//開始 session
session_start();
?>

session_start()函數(shù)首先通過查找會話ID的存在來檢查會話是否已經(jīng)存在。如果找到一個會話,即會話已經(jīng)啟動,則設(shè)置會話變量,如果沒有,則通過創(chuàng)建新的會話ID來啟動新會話。

注意:您必須session_start()在頁面的開頭(即在瀏覽器中腳本生成的任何輸出之前)調(diào)用該函數(shù),就像在使用setcookie()函數(shù)設(shè)置cookie時一樣。

存儲和訪問Session數(shù)據(jù)

您可以將所有會話數(shù)據(jù)作為鍵值對存儲在$_SESSION[]超全局數(shù)組中。可以在會話的生存期內(nèi)訪問存儲的數(shù)據(jù)??匆韵履_本,該腳本創(chuàng)建一個新會話并注冊兩個會話變量。

<?php
//正在啟動會話
session_start();
 
//存儲會話數(shù)據(jù)
$_SESSION["firstname"] = "Peter";
$_SESSION["lastname"] = "Parker";
?>

要訪問我們在上一個示例中從同一Web域的任何其他頁面上設(shè)置的會話數(shù)據(jù),只需調(diào)用session_start()即可重新創(chuàng)建會話,然后將相應(yīng)的鍵傳遞給$_SESSION關(guān)聯(lián)數(shù)組。

<?php
//正在啟動會話
session_start();
 
//訪問會話數(shù)據(jù)
echo 'Hi, ' . $_SESSION["firstname"] . ' ' . $_SESSION["lastname"];
?>

上面示例中的PHP代碼產(chǎn)生以下輸出。

Hi, Peter Parker

注意:要訪問同一頁面中的會話數(shù)據(jù),無需重新創(chuàng)建會話,因為它已在頁面頂部啟動。

銷毀 Session

如果要刪除某些會話數(shù)據(jù),只需取消設(shè)置$_SESSION關(guān)聯(lián)數(shù)組的相應(yīng)鍵,如以下示例所示:

<?php
//啟動會話
session_start();
 
//正在刪除會話數(shù)據(jù)
if(isset($_SESSION["lastname"])){
    unset($_SESSION["lastname"]);
}
?>

但是,要完全銷毀會話,只需調(diào)用session_destroy()函數(shù)。該函數(shù)不需要任何參數(shù),一次調(diào)用會銷毀所有會話數(shù)據(jù)。

<?php
//啟動會話
session_start();
 
//銷毀會話
session_destroy();
?>

注意:在使用session_destroy()函數(shù)銷毀會話之前,如果會話環(huán)境尚未存在,則需要先使用session_start()函數(shù)重新創(chuàng)建該會話環(huán)境,以便進行銷毀。

每個PHP會話都有一個超時值(持續(xù)時間,以秒為單位),該值確定在沒有任何用戶活動的情況下會話應(yīng)保持活動狀態(tài)的時間。 您可以通過更改PHP配置文件(php.ini)中session.gc_maxlifetime變量的值來調(diào)整此超時時間。