摘 要:隨著網(wǎng)站規(guī)模日益龐大,網(wǎng)站安全態(tài)勢日益嚴峻,目前許多網(wǎng)站或系統(tǒng)已將注冊登錄系統(tǒng)列為其安全保障的重要組成部分,成為不可缺少的重要功能之一。闡述了一種基于PHP+MYSQL的用戶注冊登錄系統(tǒng)的設(shè)計構(gòu)思,以及該系統(tǒng)各項功能的實現(xiàn)方法。
關(guān)鍵詞:PHP;MYSQL;系統(tǒng)設(shè)計;網(wǎng)站安全
DOIDOI:10.11907/rjdk.162041
中圖分類號:TP319
文獻標識碼:A文章編號:1672-7800(2016)012-0089-03
0 引言
網(wǎng)站規(guī)模發(fā)展迅猛,截至2015年12月底,中國網(wǎng)站總量達到426.7萬余個[1],但與此同時,網(wǎng)站安全態(tài)勢更加嚴峻。2015年被植入后門的中國網(wǎng)站數(shù)量為75028個[2]。目前,注冊與登錄系統(tǒng)已經(jīng)成為越來越多的網(wǎng)站或系統(tǒng)安全保障的重要組成部分,普遍都加載了用戶注冊登錄系統(tǒng),需要用戶進行注冊并登錄后,才能有權(quán)限使用網(wǎng)站或系統(tǒng)的有關(guān)功能,如OA系統(tǒng)、淘寶、京東等?;诖?,本文基于PHP+MYSQL設(shè)計了一種用戶注冊登錄系統(tǒng),闡述了該系統(tǒng)的設(shè)計構(gòu)思,以及各項功能的實現(xiàn)方法。
1 系統(tǒng)設(shè)計
1.1 用戶注冊
在用戶注冊部分,可以分成兩種情況:一種情況是注冊成功,另一種情況是注冊失敗(因為注冊用戶名已經(jīng)被注冊占用)。用戶注冊登錄流程如圖1所示。
1.2 用戶登錄
在用戶登錄部分,也可以分成兩種情況:一種情況是登錄成功,另一種情況登錄失?。赡茏赃€沒有通過管理員審核、用戶名錯誤、密碼錯誤)。在登錄判斷處理時,只需判斷是否登錄成功,登錄成功,則直接進入主頁;登錄失敗,則重新跳回登錄頁面。
1.3 數(shù)據(jù)庫
數(shù)據(jù)庫存儲著所有信息,是網(wǎng)站的核心,對網(wǎng)站的運營與建設(shè)起到關(guān)鍵性作用[3]。本文設(shè)計的用戶注冊登錄系統(tǒng)只需要建立一個用戶注冊信息表(user)。用戶的注冊與登錄都要使用user表,通過用戶輸入的用戶名及密碼在數(shù)據(jù)庫表中查找比對,最后返回比對結(jié)果,以此判斷注冊或登錄是否成功。
2 系統(tǒng)實現(xiàn)
2.1 站點建立
建立站點Home,并在Home下建立數(shù)據(jù)庫Test,其余文件都存放在站點根目錄下。需要創(chuàng)建的主要文件如圖2。
2.2 數(shù)據(jù)庫和表的建立
sql在已有數(shù)據(jù)庫里創(chuàng)建user表,有id、username、password 3個字段。代碼如下:
create table user(id int(10) not null auto_increment,username varchar(30),password varchar(40),primary key(id));
2.3 數(shù)據(jù)庫連接
使“前臺、后臺”工作流暢,安全穩(wěn)定,數(shù)據(jù)庫的連接操作是非常重要的環(huán)節(jié)[4]。新建一個頁面存放連接數(shù)據(jù)庫的語句,保存并命名為connect.php 。代碼如下:
<?php
$server="localhost";//主機
$db_username="";//你的數(shù)據(jù)庫用戶名
$db_password="";//你的數(shù)據(jù)庫密碼
$con = mysql_connect($server,$db_username,$db_password);//鏈接數(shù)據(jù)庫
if(!$con){
die("can't connect".mysql_error());//如果鏈接失敗輸出錯誤
}
mysql_select_db('test',$con);//選擇數(shù)據(jù)庫(我的是test)
?>
2.4 用戶注冊
2.4.1 注冊頁面
新建用戶注冊頁面signup.html 。注冊頁面可供用戶填寫的表單有注冊用戶名、注冊密碼和確認密碼、提交。
代碼如下:
<!doctype html>
用戶名:
密 碼:
2.4.2 注冊判斷處理
新建注冊判斷處理頁面signup.php 。當用戶名不存在時,可以注冊,如當用戶名已經(jīng)存在,則注冊失敗。只有當表單中用戶名、密碼不為空時,表單才能提交到注冊處理頁面,否則不提交。核心代碼如下:
<?php
header("Content-Type: text/html; charset=utf8");
if(!isset($_POST['submit'])){
exit("錯誤執(zhí)行");
}//判斷是否有submit操作
$name=$_POST['name'];//post獲取表單里的name
$password=$_POST['password'];//post獲取表單里的password
include('connect.php');//鏈接數(shù)據(jù)庫
$q="insert into user(id,username,password) values (null,'$name','$password')";//向數(shù)據(jù)庫插入表單傳來的值的sql
$reslut=mysql_query($q,$con);//執(zhí)行sql
if (!$reslut){
die('Error: ' . mysql_error());//如果sql執(zhí)行失敗輸出錯誤
}else{
echo "注冊成功";//成功輸出注冊成功
}
mysql_close($con);//關(guān)閉數(shù)據(jù)庫
?>
2.5 主頁
新建主頁面welcome.php。
2.6 用戶登錄
2.6.1 登錄頁面
新建一個登錄頁面login.html,當用戶點擊確認提交表單,只有當表單中用戶名及密碼不為空時,表單才能提交到登錄判斷處理頁面。如果用戶沒有注冊,可以轉(zhuǎn)到注冊頁面進行注冊。頁面部分代碼如下:
<!doctype html>
用戶名
密 碼
2.6.2 登錄處理
新建用戶登錄處理頁面login.php ,用戶登錄成功的情況下,頁面跳轉(zhuǎn)到welcom.html頁面;如果登錄失敗,則跳回登錄界面重試。核心代碼如下:
<?PHP
header("Content-Type: text/html; charset=utf8");
if(!isset($_POST["submit"])){
exit("錯誤執(zhí)行");
}//檢測是否有submit操作
include('connect.php');//鏈接數(shù)據(jù)庫
$name = $_POST['name'];//post獲得用戶名表單值
$passowrd = $_POST['password'];//post獲得用戶密碼單值
if ($name && $passowrd){//如果用戶名和密碼都不為空
$sql = "select * from user where username = '$name' and password='$passowrd'";//檢測數(shù)據(jù)庫是否有對應(yīng)的username和password的sql $result = mysql_query($sql);//執(zhí)行sql $rows=mysql_num_rows($result);//返回一個數(shù)值
if($rows){//0 false 1 true
header("refresh:0;url=welcome.html");//如果成功跳轉(zhuǎn)至welcome.html頁面
exit;
}else{
echo "用戶名或密碼錯誤";
echo "
setTimeout(function(){window.location.href='login.html';},1000);
";//如果錯誤使用js 1秒后跳轉(zhuǎn)到登錄頁面重試;
}
}else{//如果用戶名或密碼有空
echo "表單填寫不完整";
echo "
setTimeout(function(){window.location.href='login.html';},1000);
";
//如果錯誤使用js 1秒后跳轉(zhuǎn)到登錄頁面重試;
}
mysql_close();//關(guān)閉數(shù)據(jù)庫
?>
3 結(jié)語
經(jīng)過對該用戶注冊登錄系統(tǒng)的調(diào)試與測試表明,系統(tǒng)基本滿足要求,能夠很好地起到保護網(wǎng)站或系統(tǒng)數(shù)據(jù)信息的作用,并隔離不良用戶的惡意登錄或暴力攻擊。此系統(tǒng)后續(xù)使用過程中,一方面可以添加圖層及樣式,美化系統(tǒng)界面,另一方面可以結(jié)合并加載一種注冊登錄系統(tǒng)圖片驗證碼[5],提高用戶注冊與登錄的驗證難度,從而進一步提高網(wǎng)站或系統(tǒng)的安全防范能力。
參考文獻:
[1] 曹華平,崔盈雪,趙鑫,等.2015中國互聯(lián)網(wǎng)網(wǎng)站發(fā)展狀況及其安全報告[J].互聯(lián)網(wǎng)天地,2016(4):70-74.
[2] 杜峰.國家勾畫網(wǎng)信事業(yè)戰(zhàn)略藍圖 網(wǎng)絡(luò)安全亟待核心技術(shù)突破[DB/OL].http://www.p5w.net/news/cjxw/201605/t20160504_1435997.htm,2016-05-04.
[3] 羅鵬.網(wǎng)站開發(fā)的數(shù)據(jù)庫構(gòu)建[J].電子技術(shù)與軟件工程,2014(13):214.
[4] 魏善沛.網(wǎng)站數(shù)據(jù)庫連接技術(shù)[J].教育信息化,2003(7): 44-45.
[5] 陳義中,李松林.一種注冊登錄系統(tǒng)圖片驗證碼設(shè)計與實現(xiàn)[J].軟件導(dǎo)刊,2016,15(7): 82-85.
(責(zé)任編輯:孫 娟)