PHP SESSION之自動登陸的實現

2021-07-09 04:00:23 字數 1618 閱讀 3318

今天是平安夜,現在已經是聖誕節了,祝大家都平平安安,開開心心的!

今晚我們分享一下用php實現**的自動登陸功能,自動登陸的本質就是長久的儲存session資訊,即關閉瀏覽

器,重新啟動之後,儲存在session的資訊依據存在,這樣就實現了自動登陸!為了讓大家能夠更好的理解技術的本

質,我先給大家聊聊cookie與session。首先,cookie是儲存在瀏覽器本地的,它是與本機的某個瀏覽器密切相關

的,換乙個瀏覽器,cookie就會失效;而session是儲存在伺服器那端的,當我們建立session之後,比如登陸成功之

後,將使用者名稱儲存在session裡面,這個時候在伺服器端會自動生成乙個sessionid,而且這個sessionid會以cookie

的形式,給我們瀏覽器返回來,因此,當我們訪問該**的其它頁面的時候,我們就會帶著這個sessionid的cookie

資訊過去,然後,**就會比對我們傳過去的sessionid與它伺服器端儲存的sessionid的值是不是一樣,假如一樣,

那它就會認為你是登陸成功的!

那麼為什麼關閉瀏覽器之後,重啟瀏覽器去訪問該**頁面,session登陸資訊就會失效了呢?其實原理是這樣

的:由於本機的sessionid是以cookie資訊儲存的,而且伺服器端給我們返回的帶有sessionid的cookie是沒有設定有

效時間的,因此,只要關閉瀏覽器,cookie就自動銷毀了,那麼儲存的sessionid資訊也就不存在了,所以伺服器判

斷的時候,就會認為你登陸資訊失效了!那麼解決辦法就是:只要我們能夠給那個特殊的cookie的sessionid設定一

個失效時間,那麼一切問題就迎刃而解了,下面我以乙個例子,講解一下**,讓大家徹底明白本質!!

// php開啟session

session_start();

// 模擬登陸驗證成功

$name = $_post['name'];

$pwd = $_post['pwd'];

if($pwd == '123'){

// 儲存使用者名稱資訊到session 

$_session['uname'] = $name;

// 這個就是伺服器端生成的sessionid,非常重要,用於身份驗證的判定

$session_id = session_id();

// phpsessid就是伺服器端儲存的sessionid名字,這個名字是固定的,不允許亂取

// 當我們去訪問show頁面的時候,只要phpsessid這個cookie值儲存的sessionid還存在,說明就是登入狀態

// 也就實現了關閉瀏覽器重啟,還保持登入狀態

// 給特殊的phpsession這個cookie,設定有效生命週期,這樣重啟瀏覽器後,cookie資訊依舊存在

使用php session實現登陸

使用php的session功能,實現了簡單的登陸系統。1.登陸頁面 login.php session start session admin null 啟動session,設定名為admin的變數。2.form表單提交之後的處理頁面 if post username ltphoto post pa...

自動登陸 Cookie

再來兩句 cookie是由servlet api提供的類,是web伺服器傳送給客戶端的一小段資訊。客戶端在請求時,可以讀取資訊併發送到伺服器端,cookie中包含多個名稱 值對,伺服器傳送乙個cookie時,客戶端可以接受並儲存這個cookie。伺服器可以設定cookie的名稱 值 存活時間以及版本...

filter 自動登陸

filter過濾器filter 篩請求的 快速入門 filter攔截之後需要放行才能訪問到相應的資源位址,不然就執行完dofilter方法後停止 public class quickfilter implements filter public void dofilter servletreques...