最新的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>
运行示例»