用PHP寫的MySQL數(shù)據(jù)庫(kù)用戶認(rèn)證系統(tǒng)代碼
更新時(shí)間:2007年03月22日 00:00:00 作者:
這兩天受朋友的托付,要我?guī)退麑懸粋€(gè)使用MySQL數(shù)據(jù)庫(kù)的用戶認(rèn)證系統(tǒng)。我當(dāng)然不好推脫的,只得耗費(fèi)了一晚上的休息時(shí)間,寫了個(gè)很簡(jiǎn)單的PHP程序。
用戶認(rèn)證的原理很簡(jiǎn)單:首先需要用戶在頁(yè)面上填入用戶名和密碼,當(dāng)然沒(méi)注冊(cè)的用戶需要先注冊(cè)。然后調(diào)用數(shù)據(jù)庫(kù)搜索是否有相應(yīng)的用戶。如果有就確認(rèn),沒(méi)有則提醒用戶先注冊(cè)。使用PHP來(lái)完成這一切很簡(jiǎn)單,但需要注意的是如果想在以后的頁(yè)面中都能確認(rèn)用戶身份,使用PHP3我只能想出使用cookie的方法。要想使用session,就只能等待PHP4正式版的發(fā)布了!
第一步是做一個(gè)登錄的頁(yè)面,這兒就不多講了。我只做了個(gè)極簡(jiǎn)單的,大家可以做得漂亮點(diǎn)。
第二步開始登錄后的確認(rèn)程序的設(shè)計(jì)。
login.php:
mysql_connect("localhost","user","password")
/*連接數(shù)據(jù)庫(kù),用戶名和密碼自行修改*/
or die("無(wú)法連接數(shù)據(jù)庫(kù),請(qǐng)重試");
mysql_select_db("userinfo")
or die("無(wú)法選擇數(shù)據(jù)庫(kù),請(qǐng)重試");
$today=date("Y-m-d H:i:s");
$query="
select id
from usertbl
where name=$name and password=$password
/*從數(shù)據(jù)庫(kù)中搜索和登錄用戶相應(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,以方便之后的頁(yè)面認(rèn)證。
但我未開發(fā)完這一塊。希望有興趣的朋友指正*/
echo 登錄成功
echo 請(qǐng)進(jìn)!
}
?>
第三步當(dāng)然是做好注冊(cè)的頁(yè)面,也不多講了。
第四步是注冊(cè)后的身份確認(rèn)和輸入數(shù)據(jù)庫(kù)。
register.php:
mysql_connect("localhost","user","password") /*請(qǐng)修改用戶名和密碼*/
or die("無(wú)法連接數(shù)據(jù)庫(kù),請(qǐng)重試");
mysql_select_db("userinfo")
or die("無(wú)法選擇數(shù)據(jù)庫(kù),請(qǐng)重試");
$query="select id from usertbl where name=$name\";
/*從數(shù)據(jù)庫(kù)中搜索相同名字的用戶資料*/
$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)登錄!;}
?>
下一步是cookie的使用,我原打算使用cookie來(lái)使每一頁(yè)都能識(shí)別用戶身份,但由于別的頁(yè)面還沒(méi)做好,不知道需要用到哪些資料。于是就只有一個(gè)很簡(jiǎn)單的使用,這里用到了php的引用:
if(!$usercookie)
{header("非法用戶");
}
?>
welcome.php:
require("cookie.php"); /*調(diào)用cookie.php*/
?>
echo $usercookie;
?>
到這兒便完成了一個(gè)很簡(jiǎn)單的用戶認(rèn)證系統(tǒng),當(dāng)然如果你要使用它還得建好數(shù)據(jù)庫(kù)。下面是我的數(shù)據(jù)庫(kù)表的結(jié)構(gòu),庫(kù)的名字是userinfo。
create table usertbl
(
ID int auto_increment primary key,
Name varchar(30),
Password varchar(20),
Lastlogin varchar(20)
);
用戶認(rèn)證的原理很簡(jiǎn)單:首先需要用戶在頁(yè)面上填入用戶名和密碼,當(dāng)然沒(méi)注冊(cè)的用戶需要先注冊(cè)。然后調(diào)用數(shù)據(jù)庫(kù)搜索是否有相應(yīng)的用戶。如果有就確認(rèn),沒(méi)有則提醒用戶先注冊(cè)。使用PHP來(lái)完成這一切很簡(jiǎn)單,但需要注意的是如果想在以后的頁(yè)面中都能確認(rèn)用戶身份,使用PHP3我只能想出使用cookie的方法。要想使用session,就只能等待PHP4正式版的發(fā)布了!
第一步是做一個(gè)登錄的頁(yè)面,這兒就不多講了。我只做了個(gè)極簡(jiǎn)單的,大家可以做得漂亮點(diǎn)。
第二步開始登錄后的確認(rèn)程序的設(shè)計(jì)。
login.php:
復(fù)制代碼 代碼如下:
mysql_connect("localhost","user","password")
/*連接數(shù)據(jù)庫(kù),用戶名和密碼自行修改*/
or die("無(wú)法連接數(shù)據(jù)庫(kù),請(qǐng)重試");
mysql_select_db("userinfo")
or die("無(wú)法選擇數(shù)據(jù)庫(kù),請(qǐng)重試");
$today=date("Y-m-d H:i:s");
$query="
select id
from usertbl
where name=$name and password=$password
/*從數(shù)據(jù)庫(kù)中搜索和登錄用戶相應(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,以方便之后的頁(yè)面認(rèn)證。
但我未開發(fā)完這一塊。希望有興趣的朋友指正*/
echo 登錄成功
echo 請(qǐng)進(jìn)!
}
?>
第三步當(dāng)然是做好注冊(cè)的頁(yè)面,也不多講了。
第四步是注冊(cè)后的身份確認(rèn)和輸入數(shù)據(jù)庫(kù)。
register.php:
復(fù)制代碼 代碼如下:
mysql_connect("localhost","user","password") /*請(qǐng)修改用戶名和密碼*/
or die("無(wú)法連接數(shù)據(jù)庫(kù),請(qǐng)重試");
mysql_select_db("userinfo")
or die("無(wú)法選擇數(shù)據(jù)庫(kù),請(qǐng)重試");
$query="select id from usertbl where name=$name\";
/*從數(shù)據(jù)庫(kù)中搜索相同名字的用戶資料*/
$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)登錄!;}
?>
復(fù)制代碼 代碼如下:
if(!$usercookie)
{header("非法用戶");
}
?>
welcome.php:
require("cookie.php"); /*調(diào)用cookie.php*/
?>
echo $usercookie;
?>
復(fù)制代碼 代碼如下:
create table usertbl
(
ID int auto_increment primary key,
Name varchar(30),
Password varchar(20),
Lastlogin varchar(20)
);
相關(guān)文章
ThinkPHP5.0框架使用build 自動(dòng)生成模塊操作示例
這篇文章主要介紹了ThinkPHP5.0框架使用build 自動(dòng)生成模塊操作,結(jié)合實(shí)例形式分析了thinkPHP5使用build自動(dòng)生成模塊的具體步驟、方法與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-04-04
Zend Framework實(shí)現(xiàn)多服務(wù)器共享SESSION數(shù)據(jù)的方法
這篇文章主要介紹了Zend Framework實(shí)現(xiàn)多服務(wù)器共享SESSION數(shù)據(jù)的方法,詳細(xì)分析了SESSION數(shù)據(jù)共享的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-03-03
大家須知簡(jiǎn)單的php性能優(yōu)化注意點(diǎn)
通過(guò)本文給大家介紹在什么情況下可能遇到性能問(wèn)題,php性能問(wèn)題的解決方向及優(yōu)化點(diǎn),對(duì)php性能優(yōu)化注意點(diǎn)相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-01-01
PHP getallheaders無(wú)法獲取自定義頭(headers)的問(wèn)題
這篇文章主要介紹了PHP getallheaders無(wú)法獲取自定義頭(headers)的問(wèn)題的相關(guān)資料,需要的朋友可以參考下2016-03-03
laravel 之 Eloquent 模型修改器和序列化示例
今天小編就為大家分享一篇laravel 之 Eloquent 模型修改器和序列化示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10
PHP如何通過(guò)AJAX方式實(shí)現(xiàn)登錄功能
PHP是一門很好的語(yǔ)言,可以很方便的開發(fā)web應(yīng)用程序,下面介紹一下Ajax+PHP+MySQL登陸示例,感興趣的小伙伴們可以參考一下2015-11-11

