测试代码:LoginController.class.php 'memcache','host'= 'localhost','port'= '11211','prefix'= '','expire'= 120 //缓存有效期));}public function index(){//调用验证方法。可以将验证方法写入到一个公共类中,在构造
'memcache',
'host' => 'localhost',
'port' => '11211',
'prefix'=> '',
'expire'=> 120 //缓存有效期
));
}
public function index(){
//调用验证方法。可以将验证方法写入到一个公共类中,在构造方法中调用,需要进行登录验证的类,继承该公共的类
$this->home();
echo '恭喜你,登录成功喽~
';
}
public function home(){
if(!session('?username')){
$this->error('请登录','login');
}else{
//验证cookie中存放的sessionID是否等于缓存中的sessionID,如果不一致,则判断登录状态改变,然后清除该用户的session信息
$session_id = S(session('username'));
if(!$session_id){
$this->error('登录过期,请重新登录','login');
}
if(cookie('PHPSESSID') !== $session_id){
session('username',null);
$this->error('您的账号在别处登陆,请重新登录','login');
}
}
}
public function login(){
if(IS_GET){
//展示登录页面
$this->display();
}else{
$data = I('post.');
//查询用户信息
$res = M('user',null)->where("username='{$data['username']}'")->find();
if($data['password'] == $res['password']){
//如果用户信息正确,就将当前浏览器的session_id存入缓存
S($data['username'],session_id());
session('username',$data['username']);
$this->success('登录成功','index');
}
}
}
}
数据库文件:user.sql
SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户id', `username` varchar(20) DEFAULT NULL COMMENT '用户名称', `password` char(32) DEFAULT NULL COMMENT '用户密码', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
