本文章詳細的介紹了session普通的後台管理登入以及利用session id 實現多台伺服器之間的使用者共用登入的方法,有需要瞭解的朋友可查看一下全文章。
我們先來講述一下利用session來登入
登入頁面05.php的代碼如下:
| 代碼如下 |
複製代碼 |
if (isset ($_SESSION['shili'])){ header ("Location:shili.php") ; //重新定向到其他頁面 exit ; } ?>
|
該程式是一個管理員登入介面,首先初始化session,然後通過檢測session變數是否已經註冊來檢測使用者是否已經登入過,如果登入過,則無需再次登入,直接定向到其他頁面。這裡還使用了javascript來判斷是否輸入了使用者名稱和密碼。
驗證登入的頁面
06.php的代碼如下:
| 代碼如下 |
複製代碼 |
if (isset ($_SESSION['shili'])){ header ("Location:shili.php") ; //重新定向到其他頁面 exit ; } //登入過的話立即結束 $shili_name=$_POST['username'] ; //擷取參數 $password=$_POST['password'] ; //驗證管理員名稱和密碼是否正確,這裡採用直接驗證,沒有串連資料庫 if ($shili_name=="mr" and $password=="mrsoft"){ session_register ("shili") ; //註冊新的變數,儲存當前會話的暱稱 $shili = $shili_name ; echo "登入成功!" ; header ("Location:shili.php") ; //登入成功重新導向到管理頁面 }else{ echo "
" ; echo "帳號或密碼錯誤,或者不是管理員帳號 " ; echo "登入失敗! 請重新輸入"; echo " |
" ; } ?> |
該程式同樣是先通過session變數檢測使用者是否已經登入,如果沒有,則要對輸入的使用者名稱和密碼進行驗證,正確則註冊session變數,輸出登入成功!。如不正確,則提示登入失敗。
這是一個簡單的使用者登入驗證的程式,通過session變數阻止了那些沒有登入而直接瀏覽的使用者。如果想要對某個頁面限制瀏覽的使用者,可以使用同樣的方式,只要把如下的代碼放在該頁面的開頭即可:
| 代碼如下 |
複製代碼 |
if (!isset ($_SESSION['shili'])){ echo " " ; echo "" ; echo "你沒有登入,請登入!" ; echo " " ; exit () ; } ?> |
利用session_id實現共用登入
先,多伺服器共用session問題,這個大家應該都能夠理解的,當一個網站的使用者量過大,就會使用伺服器叢集,例如專門有一個登入用的伺服器。使用者通過登入伺服器登入之後,登入伺服器儲存了使用者的登入資訊session,而其他受訪問的伺服器,例如電影伺服器沒有這個session,那麼我們就要通過一個session的唯一標識來共用這個session了——具體session的共用超出了本文的範圍,請自行查閱資料。
第二個用途就是,驗證同一使用者的不同會話,這個比較難理解。這樣說吧,一個使用者並非通過瀏覽器來請求串連,而是通過socket或者其它方式來請求資料的時候,我們首先要對他進行使用者登入驗證,驗證成功之後,就下發一個sessionid給他,然後他每次請求的時候就攜帶這個sessionid,我們通過這個sessionid來判斷session是否已經存在,如果存在我們就認定使用者已經登入……
對於第一個問題,我們可以把sessionid儲存在資料庫中得以實現,這個方法比較安全而且應用廣泛,但是不是我們討論的範圍哦
首先驗證的時候產生一個sessionid;
| 代碼如下 |
複製代碼 |
Session_start(); $sessionId = session_id();//得到sessionid //將session下發給用戶端 ......... ?> |
用戶端攜帶sessionid這個變數來請求資料
| 代碼如下 |
複製代碼 |
Session_id(‘$sessionid');//注意這個時候session_id()這個函數是帶有參數的 Session_start();//這個函數必須在session_id()之後 ?> |
好了不問題己得到了很好的解決有需要瞭解的朋友可以參考一下。
http://www.bkjia.com/PHPjc/632211.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632211.htmlTechArticle本文章詳細的介紹了session普通的後台管理登入以及利用session id 實現多台伺服器之間的使用者共用登入的方法,有需要瞭解的朋友可查看一下...