ShopSuite采用Zero\Cookie类提供缓存功能支持。默认使用加密Cookie记录用户登录身份,此处功能已经很完善。
Zero_Perm::checkLogin(); 如果没有登录,则自动跳转到登录界面
Zero_Perm::checkUserPerm(); 判断用户是否登录
读取当前登录用户数据
$user_id = Zero_Perm::getUserId(); //当前登录用户编号
$user_row = Zero_Perm::getUserRow(); //当前登录用户基本信息
$encrypt_row = array();
$encrypt_row['user_id'] = $user_id;
//对cookie存入的用户数据加密
$encrypt_str = Zero_Hash::encrypt($encrypt_row, $user_key);
/**
* 加密函数
*
* @param string 等待加密的原字串
* @param string 私有密匙(用于解密和加密)
*
* @return string 原字串经过私有密匙加密后的结果
*/
public static function encrypt($txt)
{
if (function_exists('mcrypt_encrypt') && function_exists('mcrypt_decrypt'))
{
return self::encryptNative($txt);
}
//使用随机数发生器产生 0~32000 的值并 MD5()
srand((double)microtime() *1000000);
$encrypt_key = md5(rand(0, 32000));
//变量初始化
$ctr = 0;
$tmp = '';
//for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数
$txt_len = strlen($txt);
$encrypt_key_len = strlen($encrypt_key);
for ($i = 0; $i<$txt_len; $i++)
{
//如果 $ctr = $encrypt_key 的长度,则 $ctr 清零
$ctr = $ctr == $encrypt_key_len ? 0 : $ctr;
//$tmp 字串在末尾增加两位,其第一位内容为 $encrypt_key 的第 $ctr 位,
//第二位内容为 $txt 的第 $i 位与 $encrypt_key 的 $ctr 位取异或。然后 $ctr = $ctr + 1
$tmp.= $encrypt_key[$ctr] . ($txt[$i]^$encrypt_key[$ctr++]);
}
//返回结果,结果为 passportKey() 函数返回值的 base65 编码结果
return base64_encode(self::passportKey($tmp));
}
文档更新时间: 2022-09-29 18:24 作者:随商信息技术(上海)有限公司