最新的Web開發教程
 

PHP 5會話


會話是存儲信息的方式(in variables)在多個頁面中使用。

不像餅乾,信息不會存儲用戶的計算機上。


什麼是PHP會話?

當你與一個應用程序時,您打開它,做一些更改,然後關閉它。 這很像一個會話。 計算機知道你是誰。 它知道,當你啟動應用程序,當你結束。 但是,在互聯網上有一個問題:Web服務器不知道你是誰,你做什麼,因為HTTP地址不能保持狀態。

Session變量解決在多個頁面中使用此問題,通過存儲用戶信息(eg username, favorite color, etc) 。 默認情況下,會話變量持續到用戶關閉瀏覽器。

所以; Session變量容納約一個單一用戶的信息,並提供給一個應用程序中的所有頁面。

提示:如果你需要一個永久存儲,你可能希望將數據存儲在數據庫中


啟動PHP會話

會話啟動與session_start()函數。

會話變量的設置與PHP全局變量:$ _SESSION。

現在,讓我們創建一個名為新頁面"demo_session1.php" 在這個頁面中,我們開始一個新的PHP會話,並設置一些會話變量:

<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>

</body>
</html>
運行示例»

Note:session_start()函數必須是文檔中的第一件事情。 任何HTML標記之前。


獲取PHP會話變量值

接下來,我們創建一個名為另一頁"demo_session2.php" 從這個頁面,我們將進入我們的第一個頁面上設置的會話信息("demo_session1.php")

請注意,會話變量不單獨傳遞給每一個新的頁面,相反,他們是從我們在每一頁的開頭打開會話檢索( session_start()

還要注意,所有的會話變量值存儲在全局$ _SESSION變量:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>

</body>
</html>
運行示例»

顯示所有的會話變量值的用戶會話另一種方法是運行下面的代碼:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
print_r($_SESSION);
?>

</body>
</html>
運行示例»

它是如何工作的? 它怎麼知道是我?

大多數會話設置用戶的計算機上看起來是這樣的一個用戶密鑰:765487cf34ert8dede5a562e4f3a7e12。 然後,當會話打開另一個頁面上,它會掃描用戶密鑰的計算機。 如果有匹配,它訪問會話,如果沒有,它開始一個新的會話。


修改PHP會話變量

要改變一個會話變量,只是簡單地覆蓋它:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>

</body>
</html>
運行示例»

銷毀PHP會議

要刪除所有的全局會話變量並銷毀會話,使用session_unset()session_destroy()

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// remove all session variables
session_unset();

// destroy the session
session_destroy();
?>

</body>
</html>
運行示例»