<?php
/**
* 用户验证中心 登陆用户处理
*
* @param string $username - 用户名
* @param string $password - 用户原始密码
* @param boolean $remember - 是否永久记住登陆账号
* @param boolean $alreadyEnc - 传入的密码是否已经经过simpleEncPass加密过
*
* @return array - integer $return['status'] 大于 0:返回用户 ID,表示用户登录成功
* -1:用户不存在,或者被删除
* -2:密码错
* -11:验证码错误
* string $return['username'] : 用户名
* string $return['password'] : 密码
* string $return['email'] : Email
*/
static public function loginSSO($username, $password, $remember=false, $alreadyEnc=false) {
self::_init();
self::_removeLocalSid();
$ret = array();
//
//1. 处理传入webservice接口的参数
//
$_params = array(
'username' => $username,
'password' => $alreadyEnc ? trim($password) : self::simpleEncPass(trim($password)),
'ip' => self::onlineip(),
'siteFlag' => self::$site,
'remember' => $remember
);
$_params['checksum'] = self::_getCheckSum($_params['username'] . $_params['password'] .
$_params['ip'] . $_params['siteFlag'] . $_params['remember']);
//
// 2.调用webservice接口,进行登陆处理
//
$aRet = self::_callSoap('loginUCenter', $_params);
if (intval($aRet['resultFlag']) > 0 && $aRet['sessID']) {
//成功登陆
//设置本地session id
self::_setLocalSid($aRet['sessID']);
//设置用户中心的统一session id脚本路径
self::$_synloginScript = urldecode($aRet['script']);
$ret = $aRet['userinfo'];
} else {
$ret['status'] = $aRet['resultFlag'];
}
return $ret;
}//end of function
//b) 用户验证中心的webservice服务程序,接收到登陆验证请求后,调用UCenter::loginUCenter()方法来处理登陆请求。
/**
* 用户验证中心 登陆用户处理
*
* @param string $username
* @param string $password
* @param string $ip
* @param string $checksum
* @return array
*/
static public function loginUCenter($username, $password, $ip, $siteFlag, $remember=false) {
self::_init();
session_start();
$ret = array();
$arr_login_res = login_user($username, $password, $ip);
$res_login = $arr_login_res['status']; //
$ret['resultFlag'] = $res_login;
if ($res_login < 1) {
//登陆失败
} else {
//登陆成功
$_SESSION[self::$_ucSessKey] = $arr_login_res;
$_SESSION[self::$_ucSessKey]['salt'] =
self::_getUserPassSalt($_SESSION[self::$_ucSessKey]['username'], $_SESSION[self::$_ucSessKey]['password']);
$ret['userinfo'] = $_SESSION[self::$_ucSessKey];
$ret['sessID'] = session_id(); //生成全站的唯一session id,作为ticket全站通行
//
//合作中心站回调登陆接口(设置用户中心的统一session id)
//
self::_createCoSitesInfo();
$uinfo = array();
$_timestamp = time();
$_rawCode = array(
'action' => 'setSid',
'sid' => $ret['sessID'],
'time' => $_timestamp,
);
if ($remember) {
$uinfo = array(
'remember' => 1,
'username' => $username,
'password' => $password
);
}
$ret['script'] = '';
$_rawStr = http_build_query(array_merge($_rawCode, $uinfo));
//
// 合作站点的全域cookie设置脚本地址
//
foreach ((array)self::$_coSitesInfo as $_siteInfo) {
$_code = self::authcode($_rawStr, 'ENCODE', $_siteInfo['key']);
$_src = $_siteInfo['url'] . '?code=' . $_code . '&time=' . $_timestamp;
$ret['script'] .= urlencode('');
}
//
// 记住已登陆战
//
self::registerLoggedSite($siteFlag, $ret['sessID']);
unset($ret['userinfo']['salt']);
}
return $ret;
}
?>
<?php
/**
* 用户单点登陆验证函数
*
* @return array - integer $return['status'] 大于 0:返回用户 ID,表示用户登录成功
* 0:用户没有在全站登陆
* -1:用户不存在,或者被删除
* -2:密码错
* -3:未进行过单点登陆处理
* -11:验证码错误
* string $return['username'] : 用户名
* string $return['password'] : 密码
* string $return['email'] : Email
*/
public static function checkUserLogin(){
self::_init();
$ret = array();
$_sessId = self::_getLocalSid();
if (empty($_sessId)) {
//永久记住账号处理
if(isset($_COOKIE[_UC_USER_COOKIE_NAME]) && !empty($_COOKIE[_UC_USER_COOKIE_NAME])) {
//
// 根据cookie里的用户名和密码判断用户是否已经登陆。
//
$_userinfo = explode('|g|', self::authcode($_COOKIE[_UC_USER_COOKIE_NAME], 'DECODE', self::$_authcodeKey));
$username = $_userinfo[0];
$password = isset($_userinfo[1]) ? $_userinfo[1] : '';
if (empty($password)) {
$ret['status'] = -3;
} else {
return self::loginSSO($username, $password, true, true);
}
} else {
$ret['status'] = -3;
}
} else {
//
//本站原先已经登陆过,通过保留的sesson id存根去用户中心验证
//
$_params = array(
'sessId' => $_sessId,
'siteFlag' => self::$site,
'checksum' => md5($_sessId . self::$site . self::$_mcComunicationKey)
);
$aRet = self::_callSoap('getOnlineUser', $_params);
if (intval($aRet['resultFlag']) > 0) {
//成功登陆
$ret = $aRet['userinfo'];
} else {
$ret['status'] = $aRet['resultFlag'];
}
}
return $ret;
}
b) 用户验证中心的webservice服务程序,接收到检验登陆的请求后,调用UCenter::getOnlineUser()方法来处理登陆请求:
[php]/**
* 根据sid,获取当前登陆的用户信息
*
* @param string $sessId - 全站唯一session id,用做ticket
* @return array
*/
/**
* 根据sid,获取当前登陆的用户信息
*
* @param string $sessId - 全站唯一session id,用做ticket
* @return array
*/
static public function getOnlineUser($sessId, $siteFlag) {
self::_init();
session_id(trim($sessId));
session_start();
$ret = array();
$_userinfo = $_SESSION[self::$_ucSessKey];
if (isset($_userinfo['username']) && isset($_userinfo['password']) &&
self::_getUserPassSalt($_userinfo['username'], $_userinfo['password'])) {
$ret['resultFlag'] = "1";
$ret['userinfo'] = $_userinfo;
self::registerLoggedSite($siteFlag, $sessId); //记住已登陆战
unset($ret['userinfo']['salt']);
} else {
$ret['resultFlag'] = "0";
}
return ($ret);
}
?>
<?php
/**
* 全站单点登出
* - 通过webservice请求注销掉用户的全站唯一标识
*
* @return integer 1: 成功
* -11:验证码错误
*/
public static function logoutSSO(){
self::_init();
$_sessId = self::_getLocalSid();
//
//本站没有登陆的话,不让同步登出其他站
//
if (empty($_sessId)) {
self::_initSess(true);
return false;
}
$_params = array(
'sessId' => $_sessId,
'siteFlag' => self::$site,
'checksum' => md5($_sessId . self::$site . self::$_mcComunicationKey)
);
$aRet = self::_callSoap('logoutUCenter', $_params);
if (intval($aRet['resultFlag']) > 0) {
//成功登出
self::_removeLocalSid(); //移除本站记录的sid存根
self::$_synlogoutScript = urldecode($aRet['script']);
$ret = 1;
} else {
$ret = $aRet['resultFlag'];
}
return intval($ret);
} [/php]
b) 用户验证中心的webservice服务程序,接收到全站登出请求后,调用UCenter::loginUCenter()方法来处理登陆请求:
/**
* 登出全站处理
*
* @param string - 全站唯一session id,用做ticket
* @return boolean
*/
static public function logoutUCenter($sessId) {
self::_init();
session_id(trim($sessId));
session_start();
$_SESSION = array();
return empty($_SESSION) ? true : false;
}
?>
<?php
session_write_close();
ini_set('session.auto_start', 0); //关闭session自动启动
ini_set('session.cookie_lifetime', 0); //设置session在浏览器关闭时失效
ini_set('session.gc_maxlifetime', 3600); //session在浏览器未关闭时的持续存活时间
?>
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有