thinkphp通行证服务,验证登录,注销登录
<?php
/**
* 通行证服务
*/
class PassportService extends Service { /**
* 验证用户或者管理员是否已登录
* @return boolean
*/
public function isLogged($admin=false){
//$_cookie_user=cookie('LOGGED_USER');
$_session_username = $_SESSION[C('COOKIE_PREFIX').'username'];
$_session_uid = $_SESSION[C('COOKIE_PREFIX').'uid'];
$_session_isadmin = intval($_SESSION[C('COOKIE_PREFIX').'isadmin']);
// 验证本地系统登录
if ($_session_user || $_session_uid){
if(!$admin){
return true;
}
elseif($admin&&$_session_isadmin==1){
return true;
}
else{
return false;
}
}else{
return false;
}
}
//验证登录提交参数
public function doLogin($username,$password){
if(empty($username) || empty($password)){
return false;
}
//$username=addcslashes($username); $password=md5($password);
$map=array();
$map['username']=$username;
$map['password']=$password;
$uid=M("user")->where($map)->getField('uid'); // $password=md5($password);
//$uid=M("user")->where("username='{$username}' and password='{$password}'")->getField('uid');
if(!$uid){
return false;
}
else{
return $this->online($uid);
}
}
//写入cookie和session
public function online($uid){
$uid=intval($uid);
if($uid<=0){
return false;
}
else{
$user=M("user")->where("uid={$uid}")->field('uid,username,isadmin')->find();
if(!$user){
return false;
}else{
header("P3P: CP=.");
cookie('LOGGED_USER',$user['username']);
$_SESSION[C('COOKIE_PREFIX').'username'] = $user['username'];
$_SESSION[C('COOKIE_PREFIX').'uid'] = $user['uid'];
$_SESSION[C('COOKIE_PREFIX').'isadmin'] = $user['isadmin'];
$this->recordLogin($user['uid']);
return true;
}
}
} /**
* 注销本地登录
* @return void
*/
public function logoutLocal() {
//注销session
unset($_SESSION[C('COOKIE_PREFIX').'username']);
unset($_SESSION[C('COOKIE_PREFIX').'uid']);
unset($_SESSION[C('COOKIE_PREFIX').'isadmin']);
//注销cookie
cookie('LOGGED_USER',NULL); } /**
* 登录记录
*
* @param int $uid 用户ID
*/
public function recordLogin($uid) {
$login['uid'] = $uid;
$login['ip'] = get_client_ip();
$login['place'] = convert_ip($login['ip']);
$login['ctime'] = time();
M('login_record')->add($login);
} /* 后台管理相关方法 */ // 运行服务,系统服务自动运行
public function run(){
return;
} //启动服务,未编码
public function _start(){
return true;
} //停止服务,未编码
public function _stop(){
return true;
} //卸载服务,未编码
public function _install(){
return true;
} //卸载服务,未编码
public function _uninstall(){
return true;
}
}
?>
thinkphp通行证服务,验证登录,注销登录的更多相关文章
- MVC5 网站开发之六 管理员 1、登录、验证和注销
上次业务逻辑和展示层的架构都写了,可以开始进行具体功能的实现,这次先实现管理员的登录.验证和注销功能. 目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 MV ...
- 简单两步快速实现shiro的配置和使用,包含登录验证、角色验证、权限验证以及shiro登录注销流程(基于spring的方式,使用maven构建)
前言: shiro因为其简单.可靠.实现方便而成为现在最常用的安全框架,那么这篇文章除了会用简洁明了的方式讲一下基于spring的shiro详细配置和登录注销功能使用之外,也会根据惯例在文章最后总结一 ...
- SSM 拦截器验证权限和登录与注销的实现
拦截器的作用在于,比如我们输入 xxx.com/admin 发起请求进入 网站后台或者其他后台页面.我们的拦截器会在 Controller 调用之前进行拦截,至于什么拦截,由我们来写.比如,判断用户 ...
- 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销
第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...
- User Profile Service服务未能登录,无法登录
不知你是否遇到这样的问题,某一天你打开PC,开机正常,可当你输入正确的密码回车,却发现Vista或Win7拒绝让你登录,提示"User Profile Service 服务未能登录.无法加载 ...
- python测试开发django-43.session机制(登录/注销)
前言 当我们登录访问一个网站时,服务器需要识别到你已经登录了,才有相应的权限访问登录之后的页面.用户退出登录后,将无权限访问再访问登录后的页面. 从登录到退出的一整个流程,可以看成是与服务器的一次会话 ...
- openfire Android学习---android客户端聊天开发之登录 和 注销登录
一切就绪,新建一个android测试工程: 上网权限配置,界面绘制啥的,这里就不说了. 首先 导入一个smark包.这个是用来维护长连接的,也可以是asmark.我用的是asmark 先普及一些基本知 ...
- ThInkPHP加密和解密cookie(登录操作)
摘自:http://www.thinkphp.cn/code/1794.html 通过加密cookie是网站安全性更高,登录信息不保存在session中在function.php文件在建立两个函数,加 ...
- Linux(七)开机,重启和用户登录注销
7.1 关机&重启命令 基本介绍: shutdown -h now 立刻进行关机 shutdown -h 1 1分钟后关机 shutdown -r now ...
随机推荐
- hdu 4010 Query on The Trees LCT
支持:1.添加边 x,y2.删边 x,y3.对于路径x,y上的所有节点的值加上w4.询问路径x,y上的所有节点的最大权值 分析:裸的lct...rev忘了清零死循环了两小时... 1:就是link操作 ...
- asp.net for itextsharp 操作pdf
今天分享下昨天做的一个东西 asp.net 的文件 zip 批量下载,首先你需要去 到http://dotnetzip.codeplex.com这个站点下载zip 的包,在里面找到 Ionic.Zip ...
- HTML插入SWF
1.插入透明flash代码 <object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000" codebase=" ...
- CSS选择器笔记
一.元素选择符 序号 选择器 含义 1. * 通用元素选择器,匹配任何元素 2. E 标签选择器,匹配所有使用E标签的元素 3. .info class选择器,匹配所有class属性中包含info的元 ...
- css3简易实现图标动画由小到大逐个显现
在制作网站时避免图片太平淡经常会用到动画效果:由小到大跳跃出现.这种效果很有视觉冲击力,显著提高关注度~ 原理:利用css3的动画属性@keyframes@-moz-keyframes@-webkit ...
- .NET DLL 保护措施应用实例(百度云分享工具)
最近做了个小工具,将保护措施思路全部应用到了此工具中. 点我下载 “百度分享工具”介绍 大家都知道,在百度云盘中分享文件,只能手工一条条地点击“分享”,如果想分享很多文件,操作会非常辛苦.“百度云分享 ...
- 第三回 Bootstrap3.x 起步
基本模版 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="u ...
- 七. CSS字体
概述 所谓字体:即文字的形体结构,根据外观字体分不同的类别:衬线字体Serif.无衬线字体sans-serif和等宽字体monospace.每一个类别的字体又可以分成不同的字体族font family ...
- Part 59 to 60 Difference between Convert ToString and ToString,String and StringBuilder
Part 59 Difference between Convert ToString and ToString Part 60 Difference between String and Strin ...
- [老老实实学WCF] 第三篇 在IIS中寄存服务
老老实实学WCF 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我 ...