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   作者:随商信息技术(上海)有限公司