摘 要:随着网站规模日益庞大,网站安全态势日益严峻,目前许多网站或系统已将注册登录系统列为其安全保障的重要组成部分,成为不可缺少的重要功能之一。阐述了一种基于PHP+MYSQL的用户注册登录系统的设计构思,以及该系统各项功能的实现方法。
关键词:PHP;MYSQL;系统设计;网站安全
DOIDOI:10.11907/rjdk.162041
中图分类号:TP319
文献标识码:A文章编号:1672-7800(2016)012-0089-03
0 引言
网站规模发展迅猛,截至2015年12月底,中国网站总量达到426.7万余个[1],但与此同时,网站安全态势更加严峻。2015年被植入后门的中国网站数量为75028个[2]。目前,注册与登录系统已经成为越来越多的网站或系统安全保障的重要组成部分,普遍都加载了用户注册登录系统,需要用户进行注册并登录后,才能有权限使用网站或系统的有关功能,如OA系统、淘宝、京东等。基于此,本文基于PHP+MYSQL设计了一种用户注册登录系统,阐述了该系统的设计构思,以及各项功能的实现方法。
1 系统设计
1.1 用户注册
在用户注册部分,可以分成两种情况:一种情况是注册成功,另一种情况是注册失败(因为注册用户名已经被注册占用)。用户注册登录流程如图1所示。
1.2 用户登录
在用户登录部分,也可以分成两种情况:一种情况是登录成功,另一种情况登录失败(可能注册还没有通过管理员审核、用户名错误、密码错误)。在登录判断处理时,只需判断是否登录成功,登录成功,则直接进入主页;登录失败,则重新跳回登录页面。
1.3 数据库
数据库存储着所有信息,是网站的核心,对网站的运营与建设起到关键性作用[3]。本文设计的用户注册登录系统只需要建立一个用户注册信息表(user)。用户的注册与登录都要使用user表,通过用户输入的用户名及密码在数据库表中查找比对,最后返回比对结果,以此判断注册或登录是否成功。
2 系统实现
2.1 站点建立
建立站点Home,并在Home下建立数据库Test,其余文件都存放在站点根目录下。需要创建的主要文件如图2。
2.2 数据库和表的建立
sql在已有数据库里创建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 数据库连接
使“前台、后台”工作流畅,安全稳定,数据库的连接操作是非常重要的环节[4]。新建一个页面存放连接数据库的语句,保存并命名为connect.php 。代码如下:
<?php
$server="localhost";//主机
$db_username="";//你的数据库用户名
$db_password="";//你的数据库密码
$con = mysql_connect($server,$db_username,$db_password);//链接数据库
if(!$con){
die("can't connect".mysql_error());//如果链接失败输出错误
}
mysql_select_db('test',$con);//选择数据库(我的是test)
?>
2.4 用户注册
2.4.1 注册页面
新建用户注册页面signup.html 。注册页面可供用户填写的表单有注册用户名、注册密码和确认密码、提交。
代码如下:
<!doctype html>
用户名:
密 码:
2.4.2 注册判断处理
新建注册判断处理页面signup.php 。当用户名不存在时,可以注册,如当用户名已经存在,则注册失败。只有当表单中用户名、密码不为空时,表单才能提交到注册处理页面,否则不提交。核心代码如下:
<?php
header("Content-Type: text/html; charset=utf8");
if(!isset($_POST['submit'])){
exit("错误执行");
}//判断是否有submit操作
$name=$_POST['name'];//post获取表单里的name
$password=$_POST['password'];//post获取表单里的password
include('connect.php');//链接数据库
$q="insert into user(id,username,password) values (null,'$name','$password')";//向数据库插入表单传来的值的sql
$reslut=mysql_query($q,$con);//执行sql
if (!$reslut){
die('Error: ' . mysql_error());//如果sql执行失败输出错误
}else{
echo "注册成功";//成功输出注册成功
}
mysql_close($con);//关闭数据库
?>
2.5 主页
新建主页面welcome.php。
2.6 用户登录
2.6.1 登录页面
新建一个登录页面login.html,当用户点击确认提交表单,只有当表单中用户名及密码不为空时,表单才能提交到登录判断处理页面。如果用户没有注册,可以转到注册页面进行注册。页面部分代码如下:
<!doctype html>
用户名
密 码
2.6.2 登录处理
新建用户登录处理页面login.php ,用户登录成功的情况下,页面跳转到welcom.html页面;如果登录失败,则跳回登录界面重试。核心代码如下:
<?PHP
header("Content-Type: text/html; charset=utf8");
if(!isset($_POST["submit"])){
exit("错误执行");
}//检测是否有submit操作
include('connect.php');//链接数据库
$name = $_POST['name'];//post获得用户名表单值
$passowrd = $_POST['password'];//post获得用户密码单值
if ($name && $passowrd){//如果用户名和密码都不为空
$sql = "select * from user where username = '$name' and password='$passowrd'";//检测数据库是否有对应的username和password的sql $result = mysql_query($sql);//执行sql $rows=mysql_num_rows($result);//返回一个数值
if($rows){//0 false 1 true
header("refresh:0;url=welcome.html");//如果成功跳转至welcome.html页面
exit;
}else{
echo "用户名或密码错误";
echo "
setTimeout(function(){window.location.href='login.html';},1000);
";//如果错误使用js 1秒后跳转到登录页面重试;
}
}else{//如果用户名或密码有空
echo "表单填写不完整";
echo "
setTimeout(function(){window.location.href='login.html';},1000);
";
//如果错误使用js 1秒后跳转到登录页面重试;
}
mysql_close();//关闭数据库
?>
3 结语
经过对该用户注册登录系统的调试与测试表明,系统基本满足要求,能够很好地起到保护网站或系统数据信息的作用,并隔离不良用户的恶意登录或暴力攻击。此系统后续使用过程中,一方面可以添加图层及样式,美化系统界面,另一方面可以结合并加载一种注册登录系统图片验证码[5],提高用户注册与登录的验证难度,从而进一步提高网站或系统的安全防范能力。
参考文献:
[1] 曹华平,崔盈雪,赵鑫,等.2015中国互联网网站发展状况及其安全报告[J].互联网天地,2016(4):70-74.
[2] 杜峰.国家勾画网信事业战略蓝图 网络安全亟待核心技术突破[DB/OL].http://www.p5w.net/news/cjxw/201605/t20160504_1435997.htm,2016-05-04.
[3] 罗鹏.网站开发的数据库构建[J].电子技术与软件工程,2014(13):214.
[4] 魏善沛.网站数据库连接技术[J].教育信息化,2003(7): 44-45.
[5] 陈义中,李松林.一种注册登录系统图片验证码设计与实现[J].软件导刊,2016,15(7): 82-85.
(责任编辑:孙 娟)