你好,有看到你提过的一个关于php中session失效的问题。请问你的解决方案是什么?

发布网友 发布时间:2022-04-06 04:08

我来回答

3个回答

懂视网 时间:2022-04-06 08:30

php登录超时session的解决办法:首先登录时候用session记录登录时间;然后页面打开时候判断session如果不存在,就跳回登录页面;接着如果session存在,则将页面加载时间和登录时间对比;最后如果大于超时时间,则删除即可。

【相关学习推荐:php编程(视频)】

php登录超时session的解决办法:

php登录超时session问题,原理是:

1、登录时候用session记录登录时间

$_SESSION['time']=time();

2、页面打开时候判断session如果不存在,就跳回登录页面;如果session存在,则将页面加载时间和登录时间对比,如果大于超时时间,则删除session,如果时间小于超时时间,则更新登录时间session值!

登录代码:

public function login(){
 if($_POST){
  $where['username']=$_POST['username'];
  $where['password']=md5("php100".$_POST['password']);
  $users=M('users')->where($where)->find();
  if($users){
  $_SESSION['id']=$users['id'];
  $_SESSION['user_shell']=md5($users['username'].$users['password']);
  $_SESSION['time']=time();
  $this->redirect('Index/index');
  }else{
  echo "<script type='text/javascript'>alert('用户名或密码错误');window.history.go(-1);</script>";
  }
 }else{
  $this->display();
 }
 }

公共控制器构造函数代码:

public function _initialize()
 {
 if(isset($_SESSION['user_shell'])){
  if(time()-$_SESSION['time']>60){
  unset($_SESSION['user_shell']);
  $url=U('Login/login');
  Header("Location:$url");
  }else{
  $_SESSION['time']=time();
  }
 }else{
  $url=U('Login/login');
  Header("Location:$url");
 }
 }

【相关学习推荐:php图文教程】

热心网友 时间:2022-04-06 05:38

1,如果是指如何防止失效,那就是使用ajax,根据你的session默认过期时间,在你的程序加载的时候,将这个过期时间转换成秒数,写入到页面某个元素中,用js进行倒计时,指定一个时间定时访问一个后台程序,一般情况下在你的后台程序中session_start()就行,不行的话也可以取出session的值,再重新赋值即可。

2,另外一种就是配置服务器,延长session 的过期时间。

3,如果是让session失效,就很简单了,直接session_unregister()即可

热心网友 时间:2022-04-06 06:56

当你将页面关闭的时候,session就已经失效了,当然你也可以设置session的手动失效,
isset($_SESSION[sessionname]); // 判断该session是否存在
unset($_SESSION[sessionname]); //删除该session变量
session_destroy(); //删除所有session变量

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com