文章教程

9.2Session

9/17/2020 9:49:37 PM 人评论 次浏览

9.2 Session

当Web服务器收到客户端请求时,它会找出相关的HTML文件或程序,然后加以运行,将结果转换成HTML文件,再传送给客户端并中断联机。由于Web服务器在处理完客户端的请求便会中断联机,所以Web服务器并没有记录客户端的任何信息,倘若要记录客户端的信息,必须使用一些特殊的技巧,如Cookie和Session。

9.2.1 什么是Session

Session与Cookie不同,是将用户参数留在服务器端。Session从用户访问页面开始,到断开与网站连接为止,形成一个会话的生命周期。在会话期间,分配客户唯一的一个SessionID,用来标识当前用户,与其他用户进行区分。Session会话时,SessionID会分别保存在客户端和服务器端两个位置,对于客户端使用临时的Cookie保存(Cookie名称为PHPSESSID)或者通过URL字符串传递,服务器端也以文本文件形式保存在指定的Session目录中。Session通过ID接受每一个访问请求,从而识别当前用户、跟踪和保持用户具体资料,以及Session变量(在Session活动期间,可在Session中存储数字或文字资料),比如session_name等,这些变量信息保存在服务器端。Session默认的生命周期起始于浏览器开始运行时,结束于浏览器终止运行时,此时的Session是存放在服务器内存,但可以自行设置Session的生命周期(通常是以秒为单位),将它写入服务器端的磁盘,这样就不必担心Session自动消失而遗漏了某些信息。

9.2.2 Session的使用

Session对应会话,使用会话必须先调用session_start()函数,函数的功能和用法如下。

session_start():开始一个会话或者返回已经存在的会话。

注意:这个函数没有参数,且返回值均为true。如果使用基于Cookie的Session,那么在使用session_start()之前浏览器不能有任何输出,否则会发生以下错误。

例9-5 通过Session进行网站流量的统计。

  <?php
  		session_start();
  		if (!isset($_SESSION['Count']))
  		{
  			$_SESSION['Count']=1;	
  		}
  		else
  			$_SESSION['Count']++;
  		echo "这是您在同一个浏览器 {$_SESSION['Count']}次加载本网页";
  	?>

运行效果如图9-4所示。

image

图9-4 利用Session统计网站访问流量

教程类别