ThinkPHP做自動登陸及異位或加密COOKIE!

來源:互聯網
上載者:User

標籤:auto   更新   時間   lock   rect   ace   control   ted   pass   

異位或加密方法:

/* *登陸如果自動登陸加密 *預設是0解密狀態,1是加密  *採用的方法是異位或加密 */function encrytion($value,$type=0){    $key = md5(C(‘AUTO_LOGIN_KEY‘));    //加密    if($type){        // 64位加密         //return base64_encode($value ^ $key);        // 加密後可能會有等號        return str_replace(‘=‘,‘‘,base64_encode($value ^ $key));    };    $value = base64_decode($value);    return $value ^ $key;}

在Config.php檔案中設定異位或加密欄位及自動登陸有效時間:

<?phpreturn array(    //‘配置項‘=>‘配置值‘    //異位或加密    ‘AUTO_LOGIN_KEY‘ => md5(‘www.ask.com‘),    //自動登陸有效時間    ‘AUTO_LOGIN_TIME‘ => time() +3600*24*7,    ‘LV_LOGIN‘ => 1,);

如果要自動登陸,設定cookie:儲存自動登陸帳號的ID,IP,和帳號:(login控制器)

// 判斷下一次是否自動登陸if(isset($data[‘auto‘])){    $value = $user[‘id‘].‘|‘.get_client_ip().‘|‘.$user[‘username‘];    //echo $value."<hr>"; // 需要儲存的資訊 1|127.0.0.1|趙子龍    //進行加密    $value = encrytion($value,1);    //echo $value."<br>"; //加密結果    //解密    $val = encrytion($value,0);    //echo $val; // 解密結果    // 設定 COOKIE     @setcookie(‘auto‘,$value,C(‘AUTO_LOGIN_TIME‘),‘/‘);};

判斷COOKIE及自動登陸:

class CommonController extends Controller {    Protected function _initialize(){        //if(!C(‘WEB_STATE‘)){$this->error(‘網站正在維護中...‘);};        //是否自動登陸        //判斷是否有COOKIE 且 沒有登陸        if(isset($_COOKIE[‘auto‘]) && !isset($_SESSION[‘uid‘])){            $value = $_COOKIE[‘auto‘];            $value = encrytion($value,0);            //echo $value; // 1|127.0.0.1|趙子龍            // 拆成數組            $value = explode(‘|‘,$value);            if($value[1] == get_client_ip()){                session(‘uid‘,$value[0]);                session(‘username‘,$value[2]);            }        };    }}

整個控制器:

<?phpnamespace Home\Controller;use Think\Controller;class CommonController extends Controller {    Protected function _initialize(){               //if(!C(‘WEB_STATE‘)){$this->error(‘網站正在維護中...‘);};        //是否自動登陸        //判斷是否有COOKIE 且 沒有登陸        if(isset($_COOKIE[‘auto‘]) && !isset($_SESSION[‘uid‘])){                        $value = $_COOKIE[‘auto‘];            $value = encrytion($value,0);            //echo $value; // 1|127.0.0.1|後盾網            // 拆成數組            $value = explode(‘|‘,$value);            if($value[1] == get_client_ip()){                session(‘uid‘,$value[0]);                session(‘username‘,$value[2]);            }        };    }    public function login(){        //if(IS_POST){$this->error(‘頁面不存在‘);};        $data = I(‘post.‘);        //p($data);die;        $dataPad = I(‘post.pwd‘,‘‘,‘md5‘);               $db = M(‘user‘);        $where = array(‘account‘=>$data[‘account‘]);        $field = array(‘id‘,‘username‘,‘password‘,‘logintime‘,‘lock‘);        $user = $db->where($where)->field($field)->find();           if(!$user || $user[‘password‘] != $dataPad){            $this->error(‘帳號或密碼錯誤‘);        };        // 如果正確就繼續往下走        // 判斷是否鎖定        if(!$user[‘lock‘]){            $this->error(‘帳號被鎖定‘);        };        // 判斷下一次是否自動登陸        if(isset($data[‘auto‘])){            $value = $user[‘id‘].‘|‘.get_client_ip().‘|‘.$user[‘username‘];            //echo $value."<hr>"; // 需要儲存的資訊 1|127.0.0.1|趙子龍            //進行加密            $value = encrytion($value,1);            //echo $value."<br>"; //加密結果            //解密            $val = encrytion($value,0);            //echo $val; // 解密結果            // 設定 COOKIE             @setcookie(‘auto‘,$value,C(‘AUTO_LOGIN_TIME‘),‘/‘);        };        //每天登陸增加經驗        // 讀取它上一次的登陸時間,在和今天的 0點0時0分0秒 對比 如果小就是新登陸        $today = strtotime(date(‘Y-m-d‘));        $where = array(‘id‘=>$user[‘id‘]);        if($user[‘logintime‘]<$today){            $db->where($where)->setInc(‘exp‘,C(‘LV_LOGIN‘));                    }        //更新時間        $db->where($where)->save(array(‘logintime‘=>time()));        //寫入到session        session(‘uid‘,$user[‘id‘]);        session(‘username‘,$user[‘username‘]);        //從那個頁面來就跳轉到那個頁面去        redirect($_SERVER[‘HTTP_REFERER‘]);    }    //退出登入    Public function logout () {        session_unset();        session_destroy();        redirect(__APP__);    }}

 

ThinkPHP做自動登陸及異位或加密COOKIE!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.