乙個完整 安全的PHP使用者登入系統

2021-07-08 19:25:23 字數 1299 閱讀 4629

在使用php 程式設計的時候,我有乙個習慣,不太喜歡使用現成的庫檔案,例如phplib或者其它類似的庫,在這個系統中,我也打算自己寫乙個庫檔案,它需要處理認證、確認email ,更新帳號(密碼,email )等事情。

為了在保證該系統安全的同時,不會加重我現有資料庫的負擔。因此這個新的系統要依賴cookies.這確實是乙個兩難的選擇,因為如果只是設定乙個使用者名稱的cookie,是很不安全的,這行不通,但從資料庫的負擔考慮,我也不能加入乙個簡單的無序碼而交由我的資料庫來進行驗證。

解決的方法是同時設定兩個cookie,乙個是使用者名稱的cookie,乙個是無序碼的cookie. 這個無序碼實際上是由使用者名稱和乙個超級密碼(只有程式設計者知道)組合通過md5 ()函式運算產生的。由於md5 ()是乙個單向的無序碼,因此是不可以破解的。在使用者更改email 時,我也可以用該email 和超級密碼產生乙個無序碼,以讓使用者確認修改。這實際上是乙個公匙/ 私匙類的系統。不明白?不要緊,下面再慢慢說明。

有趣的是,這個系統的擴充套件能力是可以達到無窮的,因為該系統的主要工作是計算md5 ()函式的值,而且由web 伺服器完成,在負載增加時,可以加入其它的伺服器來分擔負載,雖然認證系統不會拖跨乙個資料庫,但是這樣做就讓最終的瓶頸只能出現在資料庫上。

以下是該庫中的兩個函式——記號產生和記號認證函式。

<?php

$hidden_hash_var='your_secret_password_here';

$logged_in=false;

unset($logged_in);

function user_isloggedin() else else else else else else {

$feedback .= ' hash invalid - update failed ';

return false;

function user_send_confirm_email($email,$hash) {

這個函式在首次註冊或者改變email位址時使用

$message = "thank you for registering at company.com".

"nsimply follow this link to confirm your registration: ".

"nn". urlencode($email). "nnonce you confirm, you can use the services on phpbuilder.";

mail ($email,'registration confirmation',$message,'from: [email protected]');

?>

PHP開發乙個完整 安全的使用者登入系統

在使用php程式設計的時候,我有乙個習慣,不太喜歡使用現成的庫檔案,例如phplib或者其它類似的庫,在這個系統中,我也打算自己寫乙個庫檔案,它需要處理認證 確認email,更新帳號 密碼,email 等事情。為了在保證該系統安全的同時,不會加重我現有資料庫的負擔。因此這個新的系統要依賴cookie...

乙個完整 安全的使用者登入系統

在應用php程式設計的時候,我有乙個習慣,不太愛好應用現成的庫檔案,例如phplib或者其它類似的庫,在這個系統中,我也打算自己寫乙個庫檔案,它需要處理認證 確認email,更新帳號 密碼,email 等事情。為了在保證該系統安全的同時,不會加重我現有資料庫的累贅。因此這個新的系統要依附cookie...

乙個完整的php專案示例

在看本篇文章之前,請確保您已經完全安裝成功了php的開發環境,如有疑問,可以參考我的前一篇文章。本篇將介紹乙個php的完整示例 99pursey。首先將99pursey完整的 拷貝到伺服器根目錄下 我的根目錄是d wwwroot 各位讀者應該根據自己的根目錄的不同相應地拷貝到不同的地方。在開啟瀏覽器...