成人在线你懂的-成人在线免费小视频-成人在线免费网站-成人在线免费视频观看-日韩精品国产一区二区-日韩精品国产一区

掃一掃
關注微信公眾號

一個完整、安全的PHP用戶登錄系統 1
2007-11-14   網絡

在使用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() {
   
 global $user_name,$id_hash,$hidden_hash_var,$LOGGED_IN;
 
   file://已經進行無序碼的檢測了嗎

   file://如果是的話,返回該變量

   if ( isset($LOGGED_IN) ) {

   return $LOGGED_IN;

   }

   file://are both cookies present?

   if ($user_name && $id_hash) {

   /*
 
由cookies中得來的用戶名和系統超級密碼產生一個認證用的無序碼如果該無序碼與cookie中的無序碼一樣,則cookies中的變量是可信的,用戶已經登錄

   */

   $hash=md5($user_name.$hidden_hash_var);

   if ($hash == $id_hash) {

   file://無序碼符合,設置一個全局變量,這樣我們在再次調用該函數的時候,

   file://就無需再次進行md5()運算

   $LOGGED_IN=true;

   return true;

   } else {

   file://兩個無序碼不符合,沒有登錄

   $LOGGED_IN=false;

   return false;

   }

   } else {

    $LOGGED_IN=false;

   return false;

   }

  }

   function user_set_tokens($user_name_in) {

   /*

   一旦用戶名和密碼通過驗證,就調用這個函數

   */

   global $hidden_hash_var,$user_name,$id_hash;

   if (!$user_name_in) {

   $feedback .= ' ERROR - User Name Missing When Setting Tokens ';

   return false;

   }

   $user_name=strtolower($user_name_in);

   file://使用用戶名和超級密碼創建一個無序碼,作判斷是否已經登錄用

   $id_hash= md5($user_name.$hidden_hash_var);

   file://設置cookies的有效期為一個月,可設置為任何的值

   setcookie('user_name',$user_name,(time()+2592000),'/','',0);

   setcookie('id_hash',$id_hash,(time()+2592000),'/','',0);

   }

   ?>

熱詞搜索:

上一篇:linux操作系統收發郵件命令
下一篇:一個完整、安全的PHP用戶登錄系統2

分享到: 收藏
主站蜘蛛池模板: 生日特效动图| 我的成功密码| 李柯以写真照片| 雨后的故事34张原版视频| 姐妹在线观看| 柯哀分析文| 猫小帅睡前故事| 必修二英语电子课本外研版| 成人在线播放视频| 二哈和他的白猫师尊车子图片| 最美表演| 姐妹兄弟演员表| 双勾函数的图像与性质| 日韩女同性恋| 爱情面包房| 澳门华侨报| 真的爱你黄家驹 原唱| 抖音pc版| 菊地亚美| 小班健康活动教案40篇| 性的视频| 乔什布洛林| 电影终结者| 啊嗯啊嗯啊嗯| 色戒 在线看| 国家地理频道| 战斧行动2喋血 电影| 眼睛胬肉手术多久恢复| 梦断楼兰电影| 帕巴拉呼图克图| 王妍个人资料简介| 春闺梦里人电影在线观看| 吻激情| 张颜齐| 放下一个人最狠的网名| 无线新闻| 猿球崛起| 吴添豪| 美腿丝袜高跟三级视频| 女同性恋视频网站| 爱情赏味期|