thinkphp——PHP异位或加密实现自动登陆
admin
2023-06-16 23:02:06
0

最近做一个网站,需要实现自动登陆的功能,代码如下:


 HTML代码   


        
            
                用户名/邮箱
                                 不能为空                                  允许用中英文、数字、下划线,提交后不可修改             
                             密码
                                 不能为空                 6 - 20位                              
                                              两周内免登录                 忘记密码?             
            

                                          联合登录                 腾讯QQ                 新浪微博                 人人网                 绑定送200积分             
        
    


Ajax提交登陆信息,提交地址自行修改


    function subLogin(obj) {
        var username = $.trim($('#username').val());
        var pwd = $.trim($('#pwd').val());
        var remember;
        if($('#rememberme').is(":checked")){
            remember=1;
        }else{
            remember=2;
        }
        if (username == '') {
            showLoginError("请输入用户名或邮箱");
            return false;
        }
        if (pwd == '') {
            showLoginError("请输入密码");
            return false;
        }
        obj.addClass('disabled').val('登录中...');
        $.post(controller+'Ajax/checkLogin', {username: username, pwd: pwd,rememberme:remember}, function(data) {
            if (data.error != '') {
                showLoginError(data.error);
            } else {
                showSuccessTip(data.success);
                var url = data.url;
                setTimeout("goUrl('" + url + "')", 1000);
            }
            obj.removeClass('disabled').val('登录');
        }, "json")
    }
    function showLoginError(tip) {
        $("#notice_error").text(tip).show();
        $("#notice_error").fadeOut(2500);
    }


在Common/function.PHP

/**  
 * 异位或加密字符串  
 * @param [String] $value [需要加密或解密的字符串]  
 * @param [integer] $type [0:加密 1:解密]  
 * @param [String]        [返回加密或解密的字符串]  
 */
function encryption($value,$type=0){
$key = md5(C('AUTO_LOGIN_KEY'));
//$type==1则加密cookie
if($type==1){
return str_replace('=','',base64_encode($value ^ $key));
}
//解密
$value = base64_decode($value);
return $value ^ $key;
}

PHP

     //是否要记录cookie

    if(I('rememberme')==1){

    $value = $user['id'].'|'.get_client_ip().'|'.$user['username'];

    $value = encryption($value,1);

cookie('sucai',$value,array('expire'=>time()+3600*24*7*2,'path'=>'/'));

    }


在Home/Controller/CommonController.class.php中

if(isset($_COOKIE('sucai')){
                        //解析cookie,生成session
$value = encryption(cookie('sucai'));
$value = explode('|',$value);
if($value['1']==get_client_ip()){
session('uid',$value[0]);
session('username',$value['2']);
}
}


相关内容

热门资讯

菲总统马科斯访日,菲律宾民众在... 【环球时报报道 记者 邢晓婧】菲律宾总统马科斯26日抵达日本,开启为期4天的访日行程。据菲律宾ABS...
国家安全部提示:这些码不能随便... 扫码关注,扫码支付,扫码登录……二维码已融入我们工作、生活的方方面面,为我们提供了巨大便利。然而,国...
伊比莱瑞取得不锈钢粉末自动注射... 国家知识产权局信息显示,东莞市伊比莱瑞科技有限公司取得一项名为“一种不锈钢粉末自动注射成型装置”的专...
星链涨价5倍,五角大楼和Spa... 【文/观察者网 熊超然】随着亿万富翁马斯克拥有的“星链”(Starlink)网络引导美制自杀式无人机...
人民日报刊文:妄图洗白成“解放... 妄图洗白成“解放者”,日本注定徒劳(环球走笔)牛瑞飞 《人民日报》(2026年05月27日 第 15...
AI支付时代要来了吗?支付宝A... 【大河财立方 记者 杨霄 王宇】5月26日,在支付宝AI支付生态大会上,支付宝宣布,“AI支付”已完...
毫厘间的山河:0.001%背后... 元素周期表的版图上,锌,是一块古老而平凡的疆域。但当它的纯度跃升至99.998%时,这块金属便被赋予...
朝鲜进行新型武器系统试射 当地时间5月26日,朝鲜导弹总局和国防科学院进行轻型多用途导弹发射系统和多管战术巡航导弹武器系统试验...
原创 华... 华为各大产品全面发展,而且是多系列多版本,其中手机/笔记本均拥有4个系列,平板/手表均拥有6个系列,...
俄法院裁定:立即赔偿俄约200... △俄罗斯中央银行(资料图)当地时间5月26日,俄罗斯莫斯科仲裁法院批准俄央行的申请,将对欧洲清算银行...