设置会话有效期

  • 2020-09-11 10:16:19
  • 阅读次数:
  • 作者:盈岚科技小编
  • 来源:http://www.lyjtt.cn

在大多数网站和应用程序中需要限制会话的时间,如12个小时、一个星期、一个月等,这时就需要设置Session会话的有效期限,过了有效期限,用户会话就被关闭。

  1. 客户端没有禁止Cookie使用session_set_cookie_params()设置Ses-sion的失效时间,此函数是Session结合Cookie设置失效时间,如果设置Session在1分钟后失效,则实现的代码如下:<?php$time = 60;session_set_cookie_params($time);session_start();$_SESSION["unsename"] = 'Mr';?>session_set_cookie_params()必须在ses-sion_start()之前调用。不过不推荐使用该函数,此函数在浏览器上会出现问题,所以一般手动设置失效时间。

    【示例1】手动设置失效时间的代码如下:<?phpsession_start();$time = 60;setcookie(session_name(),session_id(),time()+$time,"/"); //手动设置会话失效时间$_SESSION["unsename"] = 'Mr';?>session_name表示Session的名称,ses-sion_id表示客户端用户的标识,因为session_id是随机产生的唯一名称,所以Session是相对安全的,失效时间和Cookie的失效时间一样,最后一个参数为可选参数,是放置Cookie的路径。

  2. 客户端禁止Cookie当客户端禁用Cookie时,Session页面间传递会失效,解决这个问题有4种方法。   

    •在登录之前提醒用户必须开启Cookie,这是很多论坛的做法。   

    •设置php.ini文件中的session.use_trans_sid = 1,或者编译时打开-enable-trans-sid选项,让PHP自动跨页传递session_id。   

    •通过GET方法,使用隐藏域传递session_id。

      •使用文件或者数据库存储session_id,在页面传递中手动调用。第二种情况比较被动,因为普通开发者是无法修改服务器中的php.ini配置文件,第三种情况就不可以使用Cookie设置保存时间,但是登录情况没有变化,第四种情况比较重要,特别是在企业级开发中经常使用到。

【示例2】下面代码演示了以第三种方法使用GET方式进行传递:<form  method="post" action="session1.php?<?=session+name();?>=<?=session_id();?>">     用户名:<input type="text" name="user" size="20"><br />     密 码:<input type="password" name="password" size="20"><br />     <input type="submit" value="提交" /></form>

然后,在session1.php文件中设置要接收ses-sion_id值,并进行处理,示例代码如下:

<?php$sess_name = session_name();      //获取Session名称$sess_id = $_GET[$sess_name];     //以GET方式获取session_idsession_id($sess_id);             //把session_id值存储到Session对象中session_start();$_SESSION["admin"] = "Mr";?>

当前文章标题:设置会话有效期

当前URL:http://www.lyjtt.cn/news/wzzz/3275.html

上一篇:传递会话

下一篇:会话安全

网站建设、抖音推广、头条推广、微信朋友圈推广、快手推广专线:15368242187(微信同号)