PHP5 Session提供了一个函数 session_set_cookie_params(),来设置PHP5 Session的生存期的,该函数必须在 session_start() 函数调用之前调用。

PHP5有很多值得学习的地方,这里我们主要介绍PHP5 Session的使用,Session 是如何来判断客户端用户的呢?它是通过 Session ID 来判断的,什么是 Session ID,就是那个 Session 文件的文件名,Session ID 是随机生成的,因此能保证***性和随机性,确保Session 的安全。一般如果没有设置 Session 的生存周期,则 Session ID 存储在内存中,关闭浏览器后该 ID 自动注销,重新请求该页面后,重新注册一个 Session ID。

关于PHP5 Session生命周期介绍(php的session)  PHP5 Session 第1张

如果客户端没有禁用 Cookie,则 Cookie 在启动 Session 会话的时候扮演的是存储 Session ID 和 Session 生存期的角色。我们来手动设置 Session 的生存期:

  1. <?php
  2. session_start();
  3. //保存一天
  4. $lifeTime=24*3600;
  5. setcookie(session_name(),session_id(),time()+$lifeTime,"/");
  6. ?>

其实PHP5 Session还提供了一个函数 Session_set_cookie_params(); 来设置PHP5 Session的生存期的,该函数必须在 session_start() 函数调用之前调用:

  1. <?php
  2. //保存一天
  3. $lifeTime=24*3600;
  4. session_set_cookie_params($lifeTime);
  5. session_start();
  6. $_SESSION["admin"]=true;
  7. ?>

#T#如果客户端使用 IE 6.0 , session_set_cookie_params(); 函数设置 Cookie 会有些问题,所以我们还是手动调用 setcookie 函数来创建 cookie。假设客户端禁用 Cookie 怎么办?没办法,所有生存周期都是浏览器进程了,只要关闭浏览器,再次请求页面又得重新注册 Session。那么怎么传递 Session ID 呢?通过 URL 或者通过隐藏表单来传递,PHP 会自动将 Session ID 发送到 URL 上,URL 形如:http://www.openphp.cn /index.php?PHPSESSID=bba5b2a240a77e5b44cfa01d49cf9669,其中 URL 中的参数 PHPSESSID 就是 Session ID了,我们可以使用 $_GET 来获取该值,从而实现 Session ID 页面间传递。

  1. <?php
  2. //保存一天
  3. $lifeTime=24*3600;
  4. //取得当前Session名,默认为PHPSESSID
  5. $sessionName=session_name();
  6. //取得SessionID
  7. $sessionID=$_GET[$sessionName];
  8. //使用session_id()设置获得的SessionID
  9. session_id($sessionID);
  10. session_set_cookie_params($lifeTime);
  11. session_start();
  12. $_SESSION["admin"]=true;


转载请说明出处
知优网 » 关于PHP5 Session生命周期介绍(php的session)

发表评论

您需要后才能发表评论