<div id='login-form'> <div id='login-wrap'> <p>还没有微博帐号?<a href='{:U("register")}'>立即注册</a></p> <form action="{:U('login')}" method='post' name='login'> <fieldset> <legend>用户登录</legend> <p> <label for="account">登录账号:</label> <input type="text" name='account' class='input'/> </p> <p> <label for="pwd">密码:</label> <input type="password" name='pwd' class='input'/> </p> <p> <input type="checkbox" name='auto' checked='1' class='auto' id='auto'/> <label for="auto">下次自动登录</label> </p> <p> <input type="submit" value='马上登录' id='login'/> </p> </fieldset> </form> </div> </div>
//登录控制器处理是否自动登录
//处理下一次自动登录 if (isset($_POST['auto'])) { $account = $user['account']; $ip = get_client_ip(); $value = $account . '|' . $ip; $value = encryption($value); @setcookie('auto', $value, C('AUTO_LOGIN_TIME'), '/'); }
//检测是否自动登录
Public function _initialize () { //处理自动登录 if (isset($_COOKIE['auto']) && !isset($_SESSION['uid'])) { $value = explode('|', encryption($_COOKIE['auto'], 1)); $ip = get_client_ip(); //本次登录IP与上一次登录IP一致时 if ($ip == $value[1]) { $account = $value[0]; $where = array('account' => $account); $user = M('user')->where($where)->field(array('id', 'lock'))->find(); //检索出用户信息并且该用户没有被锁定时,保存登录状态 if ($user && !$user['lock']) { session('uid', $user['id']); } } } //判断用户是否已登录 if (!isset($_SESSION['uid'])) { redirect(U('Login/index')); } }
/** * 异位或加密字符串 * @param [String] $value [需要加密的字符串] * @param [integer] $type [加密解密(0:加密,1:解密)] * @return [String] [加密或解密后的字符串] */ function encryption ($value, $type=0) { $key = md5(C('ENCTYPTION_KEY')); if (!$type) { return str_replace('=', '', base64_encode($value ^ $key)); } $value = base64_decode($value); return $value ^ $key; }