PHP会话 PHP Cookies 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时使用。 PHP Cookies PHP发送电子邮件