MySQL數(shù)據(jù)庫的用戶認(rèn)證系統(tǒng)實(shí)例編寫解析 |
發(fā)布時(shí)間: 2012/8/4 16:36:10 |
這兩天受朋友的托付,要我?guī)退麑懸粋(gè)使用MySQL數(shù)據(jù)庫的用戶認(rèn)證系統(tǒng)。我當(dāng)然不好推脫的,只得耗費(fèi)了一晚上的休息時(shí)間,寫了個(gè)很簡單的PHP程序。由于趕的很倉卒,可能會(huì)太簡陋了些,而且可能還會(huì)有錯(cuò)誤和漏洞。 用戶認(rèn)證的原理很簡單:首先需要用戶在頁面上填入用戶名和密碼,當(dāng)然沒注冊(cè)的用戶需要先注冊(cè)。然后調(diào)用數(shù)據(jù)庫搜索是否有相應(yīng)的用戶。如果有就確認(rèn),沒有則提醒用戶先注冊(cè)。使用PHP來完成這一切很簡單,但需要注意的是如果想在以后的頁面中都能確認(rèn)用戶身份,使用PHP3我只能想出使用cookie的方法。要想使用session,就只能等待PHP4正式版的發(fā)布了! -
第二步開始登錄后的確認(rèn)程序的設(shè)計(jì)。 login.php: mysql_connect("localhost","user","password") /*連接數(shù)據(jù)庫,用戶名和密碼自行修改*/ or die("無法連接數(shù)據(jù)庫,請(qǐng)重試"); mysql_select_db("userinfo") or die("無法選擇數(shù)據(jù)庫,請(qǐng)重試"); $today=date("Y-m-d H:i:s"); $query=" select id from usertbl where name=$name and password=$password /*從數(shù)據(jù)庫中搜索和登錄用戶相應(yīng)的資料*/ "; $result=mysql_query($query); $numrows=mysql_num_rows($result); if($numrows==0){ /*驗(yàn)證是否能找出相同資料的用戶,不能則未注冊(cè)*/ echo 非法用戶; echo 請(qǐng)注冊(cè)先; echo 重試; } else{ $row=mysql_fetch_array($result); $id=$row[0]; $query=" update usertbl set lastlogin=$today where id=$id"; $result=mysql_query($query); SetCookie("usercookie", "歡迎你,$name");/*這里使用了cookie,以方便之后的頁面認(rèn)證。但我未開發(fā)完這一塊。希望有興趣的朋友指正*/ echo 登錄成功; echo 請(qǐng)進(jìn)!; } ?>
第四步是注冊(cè)后的身份確認(rèn)和輸入數(shù)據(jù)庫。 register.php: mysql_connect("localhost","user","password") /*請(qǐng)修改用戶名和密碼*/ or die("無法連接數(shù)據(jù)庫,請(qǐng)重試"); mysql_select_db("userinfo") or die("無法選擇數(shù)據(jù)庫,請(qǐng)重試"); $query="select id from usertbl where name=$name\";/*從數(shù)據(jù)庫中搜索相同名字的用戶資料*/ $result=mysql_query($query); $numrows=mysql_num_rows($result); if($numrows!=0) /*找到了當(dāng)然就是有人先注冊(cè)了相同的名字*/ {echo 已有人注冊(cè)此名,請(qǐng)重新選擇名字!;} else {$query="insert into usertbl values(0,$name,$password,\)";/*找不到相同的就輸入新的用戶資料*/ mysql_query($query); echo 注冊(cè)成功; echo 請(qǐng)登錄!;} ?>
if(!$usercookie) {header("非法用戶"); } ?> welcome.php: require("cookie.php"); /*調(diào)用cookie.php*/ ?> echo $usercookie; ?>
create table usertbl ( ID int auto_increment primary key, Name varchar(30), Password varchar(20), Lastlogin varchar(20) ); 本文出自:億恩科技【www.riomediacenter.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |