目的:
页面停止操作30分钟后,进行操作,跳回登录页面
思路:
用户登录,保存session值
公共类中写一个islive方法,判断失效
后续的每个操作方法都调用islive方法,确保进行操作,就会进行判断
control层
control.php
<?php
$Session_start();error_reporting(0);
class control extends CI_Controller(){
parent::__construct();
// 内部报告下载
if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') {
return;
}
// 如果不是https,那么跳转到https
if ($_SERVER['SERVER_PORT'] == 80) {
redirect("https://".$_SERVER['HTTP_HOST']."/control/login");
}
$this->one = $this->session->userdata('userdata');
if($this->uri->segment(2)=='login' || $this->uri->segment(2)=='register' || $this->uri->segment(2)=='')return;
if (!$this->one) {
die('<script>top.window.location="/control/login";</script>');
}
}
function login(){
$username = $this->input->post('username');
$password = md5(md5($username.$this->input->post('password')));
$sql = 'select * from user where username = ?,password = ?';
$result = $this->db->query($sql,array($username,$password))->row();
if($result){
$expiretime = time()+($result->sessionlivetime)*60;#在哪个时间点失效
$this->session->set_userdata("expiretime",$expiretime);#将失效时间保存在session中
$this->session->set_userdata (#保存用户信息在session中
'userdata',
array(
'username' => $result -> username,
'password' => $result -> passwrod,
'userid' => $result -> userid
)
)
echo '{"title":"","message":"","url":"/control/welcome","target":"refresh"}';
}
}
?>
model 层
master.php
function islive($op){
$sql = 'select * from user where userid = ?';
$row = $row = $this->db->query($sql,array($op))->row();
if(!$row){
die('<script>top.window.location="/control/login";</script>');
return false;
}else{
if(($this->session->userdata["expiretime"]) < time()){
die('<script>top.window.location="/control/login";</script>');
}else{
$tt= time() + ($this->session->userdata['userdata']["sessionlivetime"])*60;
$this->session->set_userdata("expiretime",$tt);#修改值
}
return true;
}
}
注意,在这里,修改session的值,要用set_userdata 来实现,不能用php
$this->session->userdata['userdata']['sessionlivetime'] = $tt
来实现
control.php
function welcome(){
$uid = $this->one['userid'];
$this->load->model('master','master');
$flag = $this->master->islive($uid);
if($flag){
$this->load->view('welcome',array('one'=>$this->one));
}
}