欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP实现简单的注册登录功能

程序员文章站 2024-03-20 14:42:28
...

使用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>