使用PHP连接后台数据库实现注册登录功能
首先需要链接数据库,为了减少代码量,所以在此我就使用一个单独的php文件连接数据库。
sql.php
<meta charset="UTF-8">
<!--连接数据库,后面需要链接数据库的时候直接引用就行-->
<?php
/*tourism数据库名*/
/*admin管理员表
字段:id(自增,主键) name:登录名 password:登录密码*/
/*写法与mysql_connect类似,只是在这里直接连接了数据库,少了mysql_select_db() */
$conn = mysqli_connect('localhost','root','','tourism');
if (!$conn){ die("数据库选择失败!"); }
$conn->query("set names utf8");
/*测试是否能输出数据表中的数据*/
/*$select = "select * from admin";
$query = $conn->query($select);
$row = mysqli_fetch_assoc($query);
print_r($row);*/
/*测试成功,能正常输出,则把上面的测试代码注释,准备写登录代码*/
?>
<!--在这里也可以将需要引入的css、js等写在这里-->
<meta charset="UTF-8">
<script type="text/javascript" rel="stylesheet" src="js/jquery-3.3.1.min.js"></script>
在这里将连接数据库写好后,在后面需要用到该连接方式的时候直接导入即可。
数据库连接测试结束后,就可以直接写注册登录功能,注册功能代码如下:
zhuce.php
<!--注册页面,简易化的功能,只需要输入用户名和密码即可,但需要判断用户名是否已经存在-->
<meta charset="UTF-8">
<?php
/*需要连接数据库,将代码连接进来*/
include ('sql.php');
?>
<style>
*{
padding: 0;
margin: 0;
list-style: none;
text-decoration: none;
}
</style>
<form method="post">
<h1>注册页面</h1>
<ul>
<li><input type="text" name="name" placeholder="输入登录名"></li>
<li><input type="password" name="password1" placeholder="输入密码"></li>
<li><input type="password" name="password" placeholder="确认密码"></li>
<li><input type="submit" value="注册"> <input type="button" value="返回登录" id="dl"></li>
</ul>
</form>
<?php
if ($_POST){
$name = $_POST['name'];
$password1 = $_POST['password1'];
$password = $_POST['password'];
if ($password1 == $password){
/*输入没有逻辑问题,开始判断用户名是否已经存在于数据库*/
$select = "select * from admin where name = '$name'";
$query = $conn->query($select);
$row = mysqli_fetch_assoc($query);
/*如果存在,则说明数据库中有重名的*/
if ($row){
echo "<script>alert('用户名已存在,请重新输入!')</script>";
}else{
$insert = "insert into admin(name,password) value('$name','$password')";
$query1 = $conn->query($insert);
/*将这语句执行后,就已经能够将数据存入数据库中,所以需要弹到登录页面进行登录*/
echo "<script>alert('注册成功,前往登录!');
window.location.href='denglu.php';
</script>";
}
}else{
echo "<script>alert('两次密码不一致,请重新输入!')</script>";
}
}
?>
<!--点击返回登录后,需要跳转到登录页面,还是使用js来进行-->
<script>
$('#dl').click(function () {
window.location.href="denglu.php";
});
</script>
至此,登录注册页面基本完成,但是在其中有一个小小的漏洞,在注册的时候什么都不输入,直接点击注册,是能够注册成功的,因为每一个框中的值都是空的,符合设计的条件可以在判断密码是否一致的时候加入:&& $name!=null && $password!=null使用户名和密码不能为空,但是输入相同位数的空格,也可以注册成功,需要在input框中使用正则表达式进行控制。
登录功能的实现:
denglu.php
<meta charset="UTF-8">
<?php
/*因为需要链接数据库,所以先引入链接数据库的代码*/
include ('sql.php');
?>
<style>
*{
padding: 0;
margin: 0;
list-style: none;
text-decoration: none;
}
</style>
<form method="post">
<h1>登录页面</h1>
<ul>
<li><input type="text" name="name" placeholder="输入登录名"></li>
<li><input type="password" name="password" placeholder="输入密码"></li>
<li><input type="submit" value="登录"> <input type="button" value="去注册" id="zc"></li>
</ul>
</form>
<?php
/*判断是否上面的表单是否有输入,有输入时才执行以下部分,不然打开页面的时候会报错*/
if ($_POST){
/*获取表单传输过来的值*/
$name = $_POST['name'];
$password = $_POST['password'];
/*echo $name;
echo $password1;
echo $password;*/
$select = "select * from admin where name = '$name' and password = '$password'";
$query = $conn->query($select);
$row = mysqli_fetch_assoc($query);
/*判断数据库中是否存在传输过来的信息*/
if ($row){
echo "<script>alert('登录成功!');
window.location.href='index.php';
</script>";
}else{
echo "<script>alert('用户名或密码错误!')</script>";
}
}
?>
<!--在点击注册的时候,需要跳转到注册页面,使用js代码来实现-->
<script>
$('#zc').click(function () {
window.location.href="zhuce.php";
});
</script>
至此,简单的PHP连接数据库实现注册、登录功能完成。
附件:可以使用 jquery-3.3.1.min.js在线版,连接方式一致,不过使用在线版的时候必须有网络的支持。
连接方式:<script src="https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js"></script>