當用戶數量比較多時,用資料庫儲存用戶名稱及密碼是很好的選擇,但如果直接將用戶的密碼儲存在資料庫,即使資料庫要密碼才可以登入也有安全性的問題。例如系統管理員或者 Web Hosting 的員工便可以看到用戶的密碼,所以先將用戶密碼加密是必要的步驟。PHP 內建了 MD5() 單向加密演算法,即只可加密,而不可以反向解密,以下是利用 MD5() 函式的具體方法:這裡是將用戶密碼用 MD5() 加密後加插入資料庫:
PLAIN TEXTCODE:<?php
$db_conn = mysql_connect("host", "db_user", "db_pass");
mysql_select_db("db_name", $db_conn);
// 插入資料表的 $password 用了 md5 加密
mysql_query("insert into users values
('$username', '".md5($password)."')");
?>
檢查用戶名稱及密碼:
PLAIN TEXTCODE:<?php
$db_conn = mysql_connect("host", "db_user", "db_pass");
mysql_select_db("db_name", $db_conn);
$sql = mysql_query("select * from users where
`username`='$username' and
`password`='".md5($password)."'");
if (mysql_num_rows($sql) > 0) {
// 用戶名稱及密碼正確
} else {
// 用戶名稱及密碼錯誤
exit();
}
?>
用以上方法寫出來的登入系統,只用用戶是知道自己的密碼,系統管理員最多只能夠修改密碼,而不能看到源始密碼是什麼。
自己做個紀錄而已!呵呵! 資料來源:
Real-Blogjianmin2 發表在 痞客邦 留言(0) 人氣(6,994)
轉貼-session完整教學!! session全教程(一) -------------------------------------------------------------------------------- 一、session概述 session是什麼,剛開始我也不明白,非專業詞典翻譯為會議,會議期。作個不太恰當的比喻吧 (雖然不恰當,但意義卻是一樣的),,session是你和網站之間的感情。 session在WEB技術中佔有非常重要的份量。由於網頁是一種無狀態的連接程序,因此你無法得知 用戶的瀏覽狀態。因此我們必須 通過session記錄用戶的有關信息,以供用戶再次以此身份對web服務器提供要求時作確認,例 如,我們在某些網站中常常要求用戶登錄, 但我們怎麼知道用戶已經登錄了呢,如果沒有session的話,登錄信息是無法保留的,那豈不要讓 用戶在每一頁網頁中都要提供 用戶名和密碼。 當然,session不光用於用戶身份認證弁遄A還可能用於其它方面,以後我們會提到的。 session用中文來解釋就是會話期。一個會話期開始於用戶輸入一個站點的網址時,結束於他離開 這個站點時。 session最早出現在動態腳本語言Active Server Pages中,它的弁鄐妤j大,是一句話無法說清 楚的。 當php還在3.0版本時,session是它永遠的痛。雖然php具有執行速度快,使用靈活,弁鈺j大等 優點,但因為session的問題,使 很多站點的開發放棄了php,至少我的老闆是這樣認為的。當時有很多php免費函數庫提供在php3上 實現session的方案,但都讓人感覺不正宗。 就好像你花好幾千大洋買的手機卻配置一個很粗糙的草作的袋子一樣,雖然弁酮O一樣的,但總 讓人覺得彆扭。php4的出現讓php在session問題上 有了翻身的機會。雖然它的session實現還不是很理想(主要是效率問題),但畢竟是它自己實現 的,而且可以實際使用了。 那我們用session幹什麼呢,你說了半天,我用不上的話,你豈不有賣紙張之嫌。OK,我們來看看 session有什麼用:作過網站的人都有 這樣的體會,在一頁頁面中的變量(在本章都指服務器端變量,下同)是不能在下一頁中用的,雖 然有一些辦法可以實現,比如用form,urlstring等等 但有些對於用戶來說是不方便的,即使讓form自動提交,但其中的延時在現今的網絡狀況下足以 讓人窒息,而這兩種方法都明顯加大程序員的負擔。如果你 正在開發一個大型項目,那這些額外的負擔是不能忽略的。而有了session就好辦了,session中 註冊的變量可以作為全局變量使用。什麼,全局變量? 好極了。這樣一來,你知道有什麼用了吧:最主要的用於用戶身份認證,程序狀態記錄,頁面之間 參數傳遞。 說了它這麼半天的好處,你已經動心了吧,先別高興,它還有缺點呢:它是用文件保存的變量(當 然效率不高了,雖然可以用別的方式,但 很麻煩的),不能保存對象。與之相對的是,asp中的session可以保存對像變量,用內存變量來保 存session變量。但為什麼我們還選用php呢,呵呵, 為什麼,你能從本書的開始看到這章,想必你也應該明白了吧,你還不明白,Faint,你再從頭看起 吧,我保證你成為PHP專家^_^。 session是怎樣實現的呢?呵呵,你一定以為很高深吧,我來告訴你它的秘密。如果說只保存變量 的話,很多讀者都明白,這是很簡單的, 但前面我們說過,http協議是一種無狀態的連接,你怎麼知道那個變量是誰的,這個變量又是誰的 呢?在session實現中用cookie實現的。cookie 存在於客戶端,也就是用戶的機器中,裡面保存著用戶的session ID,也就是session號碼,當用 戶的瀏覽器請求服務器時把session ID也一起送到 服務器,這樣服務器就可以識別你是誰,也就可以把變量識別開了。這樣我們就不難理解了,為什 麼有時session會失效了。不信的話,你可以試試: 在IE的"工具"菜單上有"Internet選項"菜單,打開後再選"安全"->"自定義級別",將安全設置中 的"允釣洏峔C個對話cookies"設為禁用,再看看 session能不能用。這下明白了吧!不過php4在linux/unix平台上可以自動檢查cookies狀態,當 cookies 不可用時,自動會把session ID 附帶在url上進行傳遞。這是它在session方面比asp多的唯一的優點了。
二、php3,4中session的實現
在php3中是沒有session這種東東的,但我們又需要,怎麼辦呢?別急,有很多人替你做了這些,
這其中最有名的要算phplib了。你可以去國外下
載,也可以上國內大部分php站點下載。我們要做的第一件事是讓phplib和php3結合在一起使它能
工作。為了能實現這方面的弁遄A我們需要先安裝phplib。
跟著我來做,很容易的(以下方法在
win2000+php3.0.16+apache1.3.12+phplib7.2c+mysql3.23.21 for win32 上通過)
phplib最基本的弁鄍]括用戶認證,Session管理,權限及數據庫的抽像化。
怎樣使用phplib來實現session弁鄔O?
一、首先你將phplib解開,裡面有一個目錄叫"php",將這個目錄拷貝到apache的安裝目錄下。以
下以筆者的機器為例:
我的apache安裝在d:apache 目錄下,我將上面的"php"目錄拷貝到d:apache,並將phplib下的pages
目錄下的文件和目錄一起拷貝到
d:apachehtdocs下,注意不帶目錄本身。
phplib的類庫需要根據系統進行初始化,你可以修改local.inc文件,其中包含著一些基本參數,
你可以根據自己機器的實際情況來進行修改。
將d:apachephpprepend.php3文件中的一段程序改為如下樣子:
jianmin2 發表在 痞客邦 留言(0) 人氣(5,083)
jianmin2 發表在 痞客邦 留言(0) 人氣(1,452)
session全教程(二)
--------------------------------------------------------------------------------
三、session應用舉例
以下這些例子片斷僅供參考,你可以定制也可以不定制session,隨你便
jianmin2 發表在 痞客邦 留言(0) 人氣(203)