PHP Session


#PHP Session详解

Session是一种比较重要的PHP中常用的Web应用程序开发工具,它的主要作用是用来在不同页面之间共享数据,或者在同一个页面的多个请求之间共享数据。

##Session的概念

Session是一种服务器端保存用户数据的机制。当开启了Session功能后,系统会分配一个唯一的ID,比如PHPSESSID,给用户用来标识用户的会话状态。会话状态可以包括登录信息、购物车的商品信息等等,而且这些信息在不同的页面间可以进行共享。

##Session的使用

###1、开启Session

在PHP程序中,我们需要在页面的最开始部分,使用如下代码来开启Session:

session_start();

开启了Session后,PHP会自动生成一个session ID,用来唯一标识当前用户,同时,还会在服务器上开辟一个Session空间来存放当前用户数据。

###2、设置Session值

使用以下代码可以设置Session值:

$_SESSION["name"] = "PHP";

上述代码会将“PHP”这个值存入当前Session中的名为“name”的变量中。

###3、读取Session值

使用以下代码可以读取Session值:

$name = $_SESSION["name"];

###4、删除Session值

使用以下代码可以删除Session值:

unset($_SESSION["name"]);

或者使用以下代码销毁整个Session:

session_destroy();

##Session实现原理

当开启Session时,PHP会为当前用户生成一个唯一的Session ID,该ID会在用户与系统交互时一直保持不变。Session ID的生成是通过PHP自带的 session_id() 函数实现的。

当用户向服务器发送一个请求时,如果该请求中包含了Session ID,PHP会通过Session ID来查找该用户的Session相关信息,如果存在,系统就会读取Session信息并存储到当前请求中,从而可以在不同的页面间进行共享。如果没有Session ID,PHP则会重新生成一个Session ID并保存新的Session信息。

##Session设置

Session可设置的相关参数如下:

###1、Session存储路径

可以通过以下代码设置Session存储路径:

session_save_path("path");

其中,path为存储路径。如果不设置,则默认情况下Session信息会存储在服务器的临时目录中,该目录路径通常类似于 “/var/tmp/” 或 “/tmp/”。

###2、Session超时时间

Session超时时间可以通过以下代码设置:

ini_set("session.gc_maxlifetime", "36000");

其中,“36000”为Session超时时间,单位为秒。

###3、Session名称

Session的名称可以通过以下代码设置:

session_name("PHPSESSION");

默认情况下Session名称为“PHPSESSID”。

###4、Session ID 自动启动

如果希望在整个应用程序中自动开启Session,则可以将以下代码放置于PHP配置文件之中:

session.auto_start = 1;

##总结

Session是一种在不同页面之间共享数据的机制,在Web应用程序的开发中具有很重要的作用。通过开启Session并设置相关参数,我们可以灵活的控制Session功能的运作,更好地实现Web应用程序的功能需求。