php通过session登陆验证后,session失效问题

来源:互联网 发布:网络备案号查询 编辑:程序博客网 时间:2024/06/06 15:00

只通过if (isset($_SESSION['if_login'])) 进行登陆验证,出现如下问题:
客户端用户输入用户名和密码后,成功登陆。如果用户在一段时间内没有任何操作,session的回收机制有一定概率销毁session数据,导致当用户通过ajax请求数据时,服务端不会返回任何数据。

解决办法:
    if (isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"]) == "xmlhttprequest") {            echo json_encode(array('tip'=>'timeout'));        } else {            redirect(base_url().'login');        };

因为ajax请求相比普通请求,http的header信息中会多一个HTTP_X_REQUESTED_WITH字段,因此,服务端可以通过获取header中是否存在该字段来判断此次请求是否为ajax请求,然后再做出回应。
客户端通过服务端返回的json数据,进行重定向。