PHP中session共用和登入驗證的實現方法_PHP教程

來源:互聯網
上載者:User
本文章詳細的介紹了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 實現多台伺服器之間的使用者共用登入的方法,有需要瞭解的朋友可查看一下...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.