PHP异位或加密实现自动登陆

1.在Common/function.php中

/**
 * 异位或加密字符串
 * @param [String] $value [需要加密或解密的字符串]
 * @param [integer] $type [0:加密 1:解密]
 * @param [String] 		  [返回加密或解密的字符串]
 */
function encryption($value, $type = 0){
	$key = md5(C('ENCRYPTION_KEY'));

	//加密
	if(!$type){
		return  str_replace('=', '', base64_encode($value ^ $key));
	}

	//解密
	$value = base64_decode($value);
	return $value ^ $key;
}

2.当勾选自动登陆时
//登陆处理
	    public function signIn(){
        if(!IS_AJAX){
            $this->redirect('Login/index');
        }
        $array = array();
        $username = trim(I('post.username'));
        $password = trim(MD5(I('post.password')));
        $auto = I('post.auto');
        $admin = M('admin');
        $uc = $admin->where(array('username'=>$username))->find();
        if($uc){
            if($uc['password'] == $password){
                $_SESSION['id'] = $uc['id'];
                $_SESSION['username'] = $uc['username'];
                //自动登陆功能实现  
                if($auto){
                    $account = $uc['username'];                 //取得用户名  
                    $ip = get_client_ip();                      //获取客户端IP  
                    $value = $account . '|' . $ip;  
                    $value = encryption($value);
                    cookie('auto',$value);
                }  
                $array['msg'] = 1;
                $array['url'] = '/Admin/Index/index';
            }else{
                $array['msg'] = '密码错误';
            }
        }else{
            $array['msg'] = '账号不存在';
        }
        exit(json_encode($array));
    }
}

3.公共头部判断是否上次登录

//自动登陆处理
if(isset($_COOKIE['auto']) && !isset($_SESSION['id'])){  
            $value = explode('|', encryption($_COOKIE['auto'], 1));  
            $ip = get_client_ip();  
            //本次登陆IP和上次登陆IP相匹配  
            if($ip == $value['1']){  
                $where = array('username' => $value['0']);  
                $user = M('admin')->where($where)->find();  
                //查看是否存在这个用户或者这个用户被锁定  
                if($user){  
                    $_SESSION['id'] = $user['id'];  
                }  
            }  
        }
4.视图页面代码

<input type="checkbox" name='auto' checked='1' class='auto' id='auto'/>
<label for="auto">下次自动登录</label>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值