複選框勾選記住登錄信息(三天免登陸)的實現

方案一:

user表中加入u_express_token字段,登錄的時候把生成的u_express_token存到cookie中來驗證是否選擇記住登錄信息。

u_express_token生成唯一的隨機碼就可以

common.php驗證
    獲取驗證session['uid'];
    如果(沒有session['uid']){
        獲取cookie['u_express_token'];
        如果(根據數據庫中u_express_token字段查詢出用戶uid){
            存到session中;
        }否則{
            跳轉到登錄頁面;
        }
    }

login.php
    如果(勾選記住){
        設置session['uid'];
        設置$value具有唯一性,不容易被猜到
        修改uid對應的字段u_express_token爲$value;
        設置setcookie("u_express_token", $value, time()+3600*24*3);  /* 3天過期  */
    }否則{
        設置session['uid'];
    }


out.php
    清除session和cookie

方案二:

用到了加密解密(cookie不能明文存儲,否則不安全)可參考

對稱加密:https://blog.csdn.net/Zph1234/article/details/52443556

非對稱加密:https://blog.csdn.net/Zph1234/article/details/52440613

common.php驗證
	獲取驗證session['uid'];
	如果(沒有session['uid']){
		獲取驗證cookie['uid'];//加密過的
	    如果(存在cookie['uid']&&存在cookie['u_express_token']){
	        解密cookie['uid'];//需要解密
			複製給sesson['uid']
	    }否則{
			跳轉到登錄頁面;
		}
	}
login.php
    如果(勾選記住){
        設置session['uid'];
        設置setcookie("uid", $value, time()+3600*24*3);  /* 3天過期,加密後的  */
        設置setcookie("u_express_token", $value, time()+3600*24*3);  /* 3天過期  */
    }否則{
        設置session['uid'];
    }
out.php
    清除session和cookie

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章