PHP会话
在整个网站的各个页面上使数据可访问的另一种方法是使用PHP会话。 会话在服务器上的临时目录中创建一个文件,其中…
在整个网站的各个页面上使数据可访问的另一种方法是使用PHP会话。
会话在服务器上的临时目录中创建一个文件,其中存储了注册的会话变量及其值。该数据将在访问期间提供给网站上的所有页面。
临时文件的位置由名为 session.save_path 的 php.ini
文件中的设置决定。在使用任何会话变量之前,请确保您已设置此路径。 **
当事情发生后开始会话 –
-
PHP首先为该特定会话创建一个唯一标识符,该标识符是32个十六进制数字的随机字符串,例如3c7foj34c3jj973hjkop2fc937e3443。
-
名为 PHPSESSID 的cookie 会自动发送到用户的计算机以存储唯一的会话标识字符串。
-
在指定的临时目录中的服务器上自动创建一个文件,并在名称前面加上前缀为sess_sess_3c7foj34c3jj973hjkop2fc937e3443的唯一标识符。
当PHP脚本想要从会话变量中检索值时,PHP会自动从PHPSESSID
cookie中获取唯一的会话标识符字符串,然后在其临时目录中查找带有该名称的文件,并通过比较这两个值来完成验证。
会话在用户丢失浏览器或离开站点后结束,服务器将在预定的时间段(通常为30分钟的持续时间)后终止会话。
开始一个PHP会话
一个PHP会话很容易通过调用 session_start()
函数来启动。该函数首先检查会话是否已经启动,如果没有启动则启动一个会话。建议将呼叫发送到页面的开始处的 session_start() 。
会话变量存储在名为 $ _SESSION []的 关联数组中。这些变量可以在会话的生命周期中访问。
以下示例将启动一个会话,然后注册一个称为 计数器 的变量,每次在会话期间访问页面时都会增加该变量。
使用 isset() 函数来检查会话变量是否已经设置。
把这段代码放到一个test.php文件中,并多次加载这个文件来查看结果 –
<?php session_start(); if( isset( $_SESSION['counter'] ) ) { $_SESSION['counter'] += 1; }else { $_SESSION['counter'] = 1; } $msg = "You have visited this page ". $_SESSION['counter']; $msg .= "in this session."; ?> <html> <head> <title>Setting up a PHP session</title> </head> <body> <?php echo ( $msg ); ?> </body> </html>
它会产生以下结果 –
You have visited this page 1in this session.
销毁PHP会话
一个PHP会话可以被 session_destroy()
函数销毁。这个函数不需要任何参数,一次调用就可以销毁所有的会话变量。如果要销毁单个会话变量,则可以使用 unset() 函数来取消设置会话变量。
这里是取消设置单个变量的示例 –
<?php unset($_SESSION['counter']); ?>
这是一个会破坏所有会话变量的调用 –
<?php session_destroy(); ?>
打开自动会话
如果您可以在 php.ini 文件中将 session.auto_start
变量设置为1,则不需要调用start_session()函数在用户访问您的站点时启动会话。 **
没有cookies的会话
用户不允许在他们的机器上存储cookie时可能会出现这种情况。所以还有另一种方法将会话ID发送给浏览器。
或者,您可以使用会话开始时定义的常量SID。如果客户端没有发送适当的会话cookie,则其格式为session_name =
session_id。否则,它将展开为空字符串。因此,您可以无条件地将其嵌入到URL中。
以下示例演示如何注册一个变量,以及如何使用SID正确链接到另一个页面。
<?php session_start(); if (isset($_SESSION['counter'])) { $_SESSION['counter'] = 1; }else { $_SESSION['counter']++; } $msg = "You have visited this page ". $_SESSION['counter']; $msg .= "in this session."; echo ( $msg ); ?> <p> To continue click following link <br /> <a href = "nextpage.php?<?php echo htmlspecialchars(SID); ?>"> </p>
它会产生以下结果 –
You have visited this page 1in this session. To continue click following link
在用htmlspecialchars() 可以为了防止XSS相关的攻击打印SID时使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!