搜索
系统检测到您的用户名不符合规范:

分享一个单点登录验证方法

浏览:2759 发布日期:2017年10月14日 分类:功能实现 关键字: 跨站点 单点登录
类似 www.xxx.com 和 a.xxx.com 和 b.xxx.com 等单点登录
// 设置cookie、验证cookie登录
function setCookieLogin($uid=false,$domain=''){
$isLotinTime = true;
$loginTime = 0;
$cookie = cookie(); // 获取cookie
$sSid = $cookie['wailaa_ssid']; // 获取用户UID
$enKey = $cookie['wailaa_enCode']; // 获取加密串码
$sess = $cookie['wailaa_sess']; // 获取session-id
$key = ''; // 加密串
$boswer = $_SERVER['HTTP_USER_AGENT']; // 浏览器信息,确保同一个浏览器
// 检测是否设置cookie,并且进行验证,验证通过就自动登录
if( $sSid && $enKey && ($sSid>0)){
if($isLotinTime){
$infoUsers = M('users')->where(array('id'=>$sSid))->find();
$loginTime = $infoUsers['last_login_time']; // 登录时间
}
// 验证通过
if(md5($sSid.$key.$boswer.$loginTime) == $enKey){
/* 调用登录接口登录 */
$user = new UsersApi;
$uid = $user->login($infoUsers['id'], $infoUsers['password'], 4);
if(0 < $uid){
$Member = D('users_member');
if($Member->login($uid)){ //登录用户
if((CONTROLLER_NAME=='Users') && ((ACTION_NAME=='login') || (ACTION_NAME=='register'))){
header('Location:'.$_SERVER['HTTP_REFERER']);
}
} else {
$this->error($Member->getError());
}
}
}else{
return false;
}
}
// 如果登录成功,则设置cookie
if($uid > 0){
$uid = $uid; // 用户UID
if($isLotinTime){
$infoUsers = M('users')->where(array('id'=>$uid))->find();
$loginTime = $infoUsers['last_login_time'];// 登录时间
}
$enCode = md5($uid.$key.$boswer.$loginTime); // md5加密
// 设置cookie
cookie('ssid',$uid,array('prefix'=>'wailaa_','domain'=>$domain)); // 'expire'=>3600,'path'=>'/'
cookie('enCode',$enCode,array('prefix'=>'wailaa_','domain'=>$domain)); // 加密验证
cookie('loginTime',$loginTime,array('prefix'=>'wailaa_','domain'=>$domain)); // session-id
return true;
}else{
return false;
}
}
收藏
sevenleos
积分:1679 等级:LV3
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /