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 ...
随机推荐
- Linux chmod command
@ chmod改变一个或多个文件的存取模式 chmod [options] mode files 只有文件属主或特殊用户才能使用该功能来改变文件存取模式.mode可以是数字形式或who opcode ...
- jQuery选择器之可见性过滤选择器Demo
测试代码 05-可见性过滤选择器.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...
- rfc 标准文档目录
1. xmpp的文档 (3920版本) https://tools.ietf.org/html/rfc3920 2. MQTT 3. SIP
- 基于Socket的UDP发包程序
UDP(User Datagram Protocol,用户数据报协议)是在互联网中常用的传输层协议,该协议提供了向另一用户程序发送的消息的最简便的协议机制.与TCP一样,其默认的下层协议是IP.UDP ...
- hdu1251
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- PHP面向对象之将数据库的查询结果序列化成json格式
<?php class link_mysql{ private $host,$uid,$pwd,$db,$link,$res; function link_mysql($_host,$_uid, ...
- 安装包安装服务,点修复出现的错误”Error 1001:指定的服务已存在“ 解决办法
安装项目下,右键视图->自定义操作,出现安装.提交.回滚.卸载四个文件夹,右键安装,添加自定义操作,选择安装的服务为输出文件 右键安装输出文件->在condition->Not (I ...
- oledb 操作 excel
oledb excel http://wenku.baidu.com/search?word=oledb%20excel&ie=utf-8&lm=0&od=0 [Asp.net ...
- UI2_视图切换
// // ViewController.m // UI2_视图切换 // // Created by zhangxueming on 15/7/1. // Copyright (c) 2015年 z ...
- Java中的哈希
Java中的哈希 前言 在开发中经常用到HashMap.HashSet等与哈希有关的数据结构,一直只知道这些哈希的数据结构不保证顺序,不清楚具体什么情况.所以在这里大致总结一下. Java的Has ...