PHP通過session id 實現session共用和登入驗證的代碼_php技巧

來源:互聯網
上載者:User
先說說,這個機制的用途吧,到現在為止戰地知道這個機制有兩個方面的用途:

首先,多伺服器共用session問題,這個大家應該都能夠理解的,當一個網站的使用者量過大,就會使用伺服器叢集,例如專門有一個登入用的伺服器。使用者通過登入伺服器登入之後,登入伺服器儲存了使用者的登入資訊session,而其他受訪問的伺服器,例如電影伺服器沒有這個session,那麼我們就要通過一個session的唯一標識來共用這個session了——具體session的共用超出了本文的範圍,請自行查閱資料。

第二個用途就是,驗證同一使用者的不同會話,這個比較難理解。這樣說吧,一個使用者並非通過瀏覽器來請求串連,而是通過socket或者其它方式來請求資料的時候,我們首先要對他進行使用者登入驗證,驗證成功之後,就下發一個sessionid給他,然後他每次請求的時候就攜帶這個sessionid,我們通過這個sessionid來判斷session是否已經存在,如果存在我們就認定使用者已經登入……

對於第一個問題,我們可以把sessionid儲存在資料庫中得以實現,這個方法比較安全而且應用廣泛,但是不是我們討論的範圍哦

第二個問題,其實已經很簡單了,看一下代碼

首先驗證的時候產生一個sessionid;
複製代碼 代碼如下:

<?php
Session_start();
$sessionId = session_id();//得到sessionid
//將session下發給用戶端
.........
?>

用戶端攜帶sessionid這個變數來請求資料
複製代碼 代碼如下:

<?php
Session_id(‘$sessionid');//注意這個時候session_id()這個函數是帶有參數的
Session_start();//這個函數必須在session_id()之後
?>

這個時候session已經是登入驗證時候的session了。
注意:在sessionServer.php中如果使用thinkphp等其他自動啟動session_start();函數的架構時,必須先調用session_destory()函數來清空session。
相關文章

聯繫我們

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