PHP 中 Session 的使用方法
为了存储可跨网页访问的信息,我们使用会话。Session不像Cookies那样存储在用户浏览器上,因此它是一个更安全的选项。
众所周知,HTTP 是一种无状态协议,如果用户访问网页并执行某些操作,则无法记住用户导航到下一个网页时他做了什么。
让我们举一个实际的例子,当您登录您的 Facebook 帐户时,通过提供您的电子邮件地址和密码,直到并且除非您注销,Web 应用程序会记住您的身份并显示您的朋友在您的新闻提要上发布和喜欢的内容,您可以更新您的个人资料,向某人发送消息,加入群组等,这是由Session完成的。
当用户在任何 Web 应用程序上登录他们的帐户时,将为他们创建一个会话,并在会话中存储他们的用户名或用户 ID或其他一些唯一标识符,然后在连续的网页上使用这些标识符来显示特定于该用户的信息. 注销时,会话将被销毁。
会话不受任何大小限制,您可以在会话中存储任何信息,而不管其大小。
在我们继续讨论如何在 PHP 中启动、更新和结束会话之前,让我们学习一些会话的实际用法。
Session 的真实使用
需要用户登录的 Web 应用程序,使用 session 来存储用户信息,以便在每个网页上都可以向用户显示相关信息。
在电子商务网站中,购物车通常作为会话的一部分保存。
我希望这能让您了解如何在 Web 应用程序中使用会话。
在 PHP 中启动会话
在 PHP 中,我们可以使用该session_start()函数启动会话。并且数据使用会话变量存储在会话中,可以使用全局变量为其分配不同的值$_SESSION
简单来说,使用session_start()我们初始化会话的函数,我们可以在其中使用会话变量存储信息$_SESSION。
让我们举个例子,下面我们有一个名为first_page.php 的PHP 文件的网页
<?php // start the session session_start(); // set the session variable $_SESSION["username"] = "iamabhishek"; $_SESSION["userid"] = "1"; ?> <html> <body> <?php echo "Session variable is set."; ?> <a href="second_page.php">Go to Second Page</a> </body> </html>
注意:函数session_start()应该是页面的第一条语句,在任何 HTML 标签之前。
获取 PHP 会话变量值
在上面的代码中,我们启动了一个会话并设置了两个会话变量。上面的网页也会有一个链接来导航到第二页second_page.php。
下面是second_page.php的代码,其中我们从设置在first_page.php 中的会话变量中获取值。
<?php // start the session session_start(); // get the session variable values $username = $_SESSION["username"]; $userid = $_SESSION["userid"]; ?> <html> <body> <?php echo "Username is: ".$username."<br/>"; echo "User id is: ".$userid; ?> </body> </html>
你一定在想,为什么我们session_start()在这里使用,尽管我们没有在 session 变量中设置任何新值。
session_start()函数用于初始化新会话并获取正在进行的会话(如果已经启动),然后使用$_SESSION全局变量,我们可以将新值设置到会话中或获取保存的值。
如果会话中存储的值过多,而您不知道要获取哪个值,则可以使用以下代码打印所有当前会话变量数据。
<?php // start the session session_start(); ?> <html> <body> <?php print_r($_SESSION); ?> </body> </html>
在 PHP 中更新会话变量
要更新会话变量中存储的任何值,请通过调用session_start()函数启动会话,然后简单地覆盖 vakue 以更新会话变量。
<?php // start the session session_start(); // update the session variable values $_SESSION["userid"] = "1111"; ?> <html> <body> <?php echo "Username is: ".$username."<br/>"; echo "User id is: ".$userid; ?> </body> </html>
我们刚刚将 session 变量中userid的值从1 更新为1111。
在 PHP 中销毁会话
要清除会话变量或从会话变量中删除所有存储的值,我们可以使用该函数session_unset()并销毁会话,我们使用session_destroy()函数。
<?php // start the session session_start(); ?> <html> <body> <?php // clean the session variable session_unset(); // destroy the session session_destroy(); ?> </body> </html>
我们在电子商务网站的注销或结账等页面上使用这些功能,以清除用户特定数据中的会话变量并最终删除当前会话。