不登入wordpress的時候,開啟一個網頁,這個網頁不可以編輯。
現在,我登入wordpress,然後重新重新整理剛才的頁面,發現可以編輯了。
請問,這個過程中,發生了哪些事情呢?
回複內容:
不登入wordpress的時候,開啟一個網頁,這個網頁不可以編輯。
現在,我登入wordpress,然後重新重新整理剛才的頁面,發現可以編輯了。
請問,這個過程中,發生了哪些事情呢?
你輸對了使用者名稱和密碼之後,伺服器會在你的瀏覽器裡放一個標識,接下來你再訪問的時候伺服器就根據這個標識知道『噢!你就是輸對了密碼的那個人!』,因此就給你看能編輯的頁面。
補充:
噗…第一次見到有不太懂還要求多用術語的,好吧
wordpress根據什麼知道你能不能編輯?
根據你的登入狀態。
它怎麼知道你登入了沒有?
你登入的時候,登入表單發送給服務端程式,程式從資料庫取出使用者並驗證密碼,正確的話就將使用者的id放入session
中,你每次訪問的時候因為有session在,服務端就知道你是登入過的使用者,擁有編輯的許可權。
session是怎麼工作的?
http
協議是無串連、無狀態的(websocket
不算),你每次請求
一個地址,伺服器響應
結束後,整個http服務過程就結束了,你下次再訪問,伺服器並不知道你是不是剛才那個人。那麼為什麼session知道呢?
session是服務端程式維護的一個資料結構,用於區別登入成功的使用者。當你登入成功後,伺服器會在你的瀏覽器中放一個cookie
,其中記錄了一個sessionid
,當你再次訪問,瀏覽器會把這個cookie攜帶給伺服器,服務端程式根據其中的sessionid,就知道哪個session是為你開啟的,就可以從其中為你存取資料了。
就好像,服務端為每個使用者開了一個保險柜,服務端雖然不知道來開柜子的人是誰,但只要他帶著鑰匙,就為他開對應的保險箱。
cookie是什嗎?
cookie是在要求-回應的過程中,伺服器存放在瀏覽器中的一些資料,他們很短小。cookie上記錄了他們是在訪問哪個網域名稱時被存放下來的,因此在再次訪問這個網域名稱時,這個網域名稱下的cookie會被攜帶發送給伺服器,伺服器就能讀取它放在瀏覽器裡的資料了。
簡單來說就是這樣
根據登入狀態判斷是否可以有編輯許可權
既然樓主是在PHP下面問的我稍微詳細點,通用的基於cookie的session:
1、第一次開啟一個一般的PHP程式頁面的時候,伺服器端會產生一個標識(session_start);
2、然後伺服器通過http請求中的set-cookie設定到你的瀏覽器中,一般是PHPSESSID;
3、再次向伺服器發送請求的時候,你的瀏覽器都會帶上這個cookie資訊,伺服器通過這個cookie資訊讀取session;
4、登入的時候,伺服器會通過使用者名稱,在資料庫中找到你的使用者資訊,儲存在session中;
5、之後其他所有的請求伺服器端都能通過session讀到你的使用者資訊——會話保持住了;