当前位置 : 主页 > 网络编程 > PHP >

在TP中使用memcache控制用户单一登录,实现一个用户不能同时在多处登陆

来源:互联网 收集:自由互联 发布时间:2021-06-28
测试代码:LoginController.class.php 'memcache','host'= 'localhost','port'= '11211','prefix'= '','expire'= 120 //缓存有效期));}public function index(){//调用验证方法。可以将验证方法写入到一个公共类中,在构造
测试代码:LoginController.class.php
  '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;
上一篇:本地配置虚拟域名
下一篇:获取当前URL
网友评论