thinkphp——PHP异位或加密实现自动登陆
最近做一个网站,需要实现自动登陆的功能,代码如下:
HTML代码
<formonsubmit="returnfalse"><divclass="pop-contentaccountPage"><divclass="form_item"><divclass="item_tip">用户名/邮箱</div><inputtabindex="1"name="username"class="form_input"id="username"onblur="blurInputLoginBox($(this))"onfocus="focusInputLoginBox($(this))"autocomplete="off"type="text"><spanclass="error">不能为空</span><iclass="icon-loginright"></i><spanclass="grey">允许用中英文、数字、下划线,提交后不可修改</span></div><divclass="form_item"><divclass="item_tip">密码</div><inputtabindex="3"name="pwd"class="form_input"id="pwd"onblur="blurInputLoginBox($(this))"onfocus="focusInputLoginBox($(this))"autocomplete="off"type="password"><spanclass="error">不能为空</span><spanclass="grey">6-20位</span><iclass="icon-loginright"></i></div><divclass="twoWeeks"><inputclass="ckeckBox"name="rememberme"id="rememberme"type="checkbox"><labelfor="rememberme">两周内免登录</label><aclass="a_underline"href="http://www.sucaihuo.com/forget.html">忘记密码?</a></div><pclass="notice_error"id="notice_error"></p><inputtabindex="7"value="登 录"class="btn_regbtn"id="btn_reg"onclick="subLogin($(this))"type="submit"><divclass="co_login">联合登录<aclass="a_underline"href="http://www.sucaihuo.com/Index/login/type/qq.html">腾讯QQ</a><aclass="a_underline"href="http://www.sucaihuo.com/Index/login/type/sina.html">新浪微博</a><aclass="a_underline"href="http://www.sucaihuo.com/Index/login/type/renren.html">人人网</a>绑定送<spanclass="red">200</span>积分</div></div></form>
Ajax提交登陆信息,提交地址自行修改
<scripttype="text/javascript">functionsubLogin(obj){varusername=$.trim($('#username').val());varpwd=$.trim($('#pwd').val());varremember;if($('#rememberme').is(":checked")){remember=1;}else{remember=2;}if(username==''){showLoginError("请输入用户名或邮箱");returnfalse;}if(pwd==''){showLoginError("请输入密码");returnfalse;}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);varurl=data.url;setTimeout("goUrl('"+url+"')",1000);}obj.removeClass('disabled').val('登录');},"json")}functionshowLoginError(tip){$("#notice_error").text(tip).show();$("#notice_error").fadeOut(2500);}</script>
在Common/function.PHP中
/***异位或加密字符串*@param[String]$value[需要加密或解密的字符串]*@param[integer]$type[0:加密1:解密]*@param[String][返回加密或解密的字符串]*/functionencryption($value,$type=0){$key=md5(C('AUTO_LOGIN_KEY'));//$type==1则加密cookieif($type==1){returnstr_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']);}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。