基于php的用户登录实现(v2版)(持续迭代)

目录

版本说明

数据库连接

登录页面:login.html

登录处理实现:login.php

用户欢迎页面:welcome.php

密码修改页面:change_password.html

 修改执行:change_password.php

用户注册页面:register.html

注册执行:DoRegister.php


版本说明

v2实现功能:

数据库连接(*用户匹配)

用户登录(*前后端判断输入是否为空(弹窗))

用户注册(*前后端判断注册用户是否是新/旧用户(弹窗))

欢迎页面(*欢迎用户)

用户密码修改

用户注销(*返回登录页)

数据库连接

基于php的MySQL数据库联动代码模板

属于公有文件,可用文件包含:include 'session_conn.php';

(以下代码都是)

登录页面:login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>登录</title>
    <style type="text/css">
        form{
            position: absolute;
            top: 20%;
            left: 39%;     
        }
  
        /* 控制input:name=login的元素居中 */
        input[name='login']{
            /* 配置其为块级元素 */
            width: 173px;
            display: block;
            margin-left: 28%;
            margin-top: 3%;
        }
        input[name='register']{
            /* 配置其为块级元素 */
            width: 173px;
            display: block;
            margin-left: 28%;
            margin-top: 3%;
        }  
    </style>

    <script type="text/javascript">
        function redirectToPage(){
            window.location.href = 'register.html';
        }


        function checkForm(form){
            if(form.username.value == "" || form.username.value == null){
                //表单名.文本域名.value == ""
                alert("用户名不能为空");
                form.username.focus();
            // 验证完用户名后,如果没有填写,会弹出alert提示,并自动把光标定位到username的输入框

            return false;     
            }
           
            if(form.password.value == "" || form.password.value == null){
                alert("密码不能为空");
                form.password.focus();
                return false;       
            }
            return true;
            }
    </script>
</head>

<body>  
        <form action="login.php" method="post">  
            <!-- onsubmit事件在表单提交时触发 -->
            <!-- 
                fieldset标签:表单分区/分组
             -->
            <fieldset>
                <legend>
                    用户登录-php登录系统测试
                </legend>
                <ul>
                    <li>
                        <label>
                            用户名:
                        </label>
                        <input type="text" name="username"/>
                    </li>
                    <li>
                        <label>密&emsp;码:</label>
                        <input type="password" name="password"/>
                        
                    </li>

                        <label></label>

                        <input  type="submit" name="login" value="登录" onclick="checkForm(form)" />                          
                        
                        <input type="button"  name="register" value="注册"  onclick="redirectToPage()"/>                 
                               
                </ul>
            </fieldset>
        </form>  
</body>
</html>

登录处理实现:login.php

*注释部分用于调测,可忽略。

<?php
include 'session_conn.php';

$username = htmlspecialchars($_POST['username']);   //使用这个函数将用户名转为html实体
$password = md5($_POST['password']);  // MD5加密

$conn = mysqli_connect($host,$db_username,$db_pwd,$db_name);     //打开一个mysql连接
if(!$conn){
    die('连接数据库失败!请检查数据库是否开启'.mysqli_connect_error());     //die()输出一条消息并结束脚本
}
else{
    if(isset($username) && !empty($username)){
        
        if(isset($_POST['password']) && !empty($_POST['password'])){
            
            $check_query = mysqli_query($conn,"select * from login_user where username = '$username' limit 1");
            $arr = mysqli_fetch_assoc($check_query);   //获取结果集作为关联数据
            
            if($password == $arr['password']){
                if($arr){
                  
                    $_SESSION['username'] = $username;
                    $_SESSION['id'] = $arr['id'];
                    
                    echo "<script language = 'javascript'>;location = 'welcome.php'</script>";
                }
            }
            else{
                echo "<script language = 'javascript'>alert('账户或密码错误');location = 'login.html'</script>";
            }
        }
        else{
            echo "<script language = 'javascript'>alert('请输入密码信息。');location = 'login.html'</script>";
        }    
    }
    else{  
        echo "<script language = 'javascript'>alert('请完善登录信息!');location = 'login.html'</script>";
    }

    
} 
//mysqli_free_result($check_query);//释放内存
//mysqli_close($conn);//关闭连接

用户欢迎页面:welcome.php

*注释部分用于调测,可忽略。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>welcome</title>
    <style>
    .table{
    text-align: center;
    width: 70%;
    padding: 15px;
    background-color: skyblue;
    border: 5px solid green;
    border-collapse: collapse;
    margin-left: 17%;
    }
    input[type='button']{
        margin-left: 50%;
    }
    .change_password{
        margin-left: 70%;
        
    }
    </style>
    <script>
        function redirectToPage(){
            window.location.href = "login.html";
        }
    </script>

</head>

<body>
<br/><br/><br/><br/><br/><br/><br/><br/>
   <?php 
            include 'session_conn.php';   //session引入             
            
            if(!isset($_SESSION['id'])){ 
            echo "<script language = 'javascript'>alert('请先登录');location='login.html</script>";
            //echo '登录超时';
            exit();
            }

            else{
                $username = $_SESSION['username'];
                $conn = mysqli_connect($host,$db_username,$db_pwd,$db_name);
    
                if(!$conn){
                    die("数据库连接失败!请检查数据库是否开启".mysqli_connect_errno());
                }
                else{
                        if(isset($_SESSION['username']) && $_SESSION['username'] == true){
                            
                            echo "<h2 class='table'>登录成功,欢迎用户:".$username."</h2>";
                            echo "<a class = 'change_password' href = 'change_password.html'/>修改密码</a>";
                        }
                        else{
                            $_SESSION['username'] = false;
                            die('请登录');
                        }
                }
                echo " <input type='button' name='back_login' value='返回登录' onclick='redirectToPage()'/>";
                echo "<a href = 'close_login.php'/>用户注销</a>";
       
                //mysqli_free_result($check_query);    //释放内存
                //mysqli_close($conn);    //关闭连接      
            }          
           
        ?> 
</body>
</html>

密码修改页面:change_password.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>账户修改</title>
    <style type="text/css">
        .title{
            text-align: center;
        }
        input[type='password']{
            margin-left:auto ;
        }
        
    </style>
    <script type="text/javascript">
        function redirectToPage(){
            window.location.href='login.html';
        }
        function check(form){
            if(form.OldPassword.value == "" || form.OldPassword.value == null){
                alert("请输入原密码");
                form.OldPassword.focus();
                return false;               
            }

            if(form.NewPassword.value == "" || form.NewPassword.value == null){
                alert("请输入新密码");
                form.NewPassword.focus();
                return false;               
            }
            
            if(form.ConfirmNewPassword.value == "" || form.ConfirmNewPassword.value == null){
                alert("请确认密码");
                form.ConfirmNewPassword.focus();
                return false;
                
            }
            return true;
        }   

    </script>
</head>
<body>
  <div class="box">
    <div class="title">change your password</div>
    
    <form action="change_password.php" method="post">      
            <table class="change_password">
                <tr>
                    <th>
                        用户名:
                    </th>
                    <td>
                        <input type="text" name="username"/>
                    </td>
                </tr>
                <tr>
                    <th>
                        原密码:
                    </th>
                    <td>
                        <input type="password" name="OldPassword">
                    </td>
                </tr>
                <tr>
                    <th>
                        新密码:
                    </th>
                    <td>
                        <input type="password" name='NewPassword' />
                    </td>
                </tr>
                <tr>
                    <th>
                        确认密码:
                    </th>
                    <td>
                        <input type="password" name="ConfirmNewPassword" />
                    </td>
                </tr>
            </table>
            <input type="submit" name='confirm' value="确认修改"  onclick="check(form)" />
            <input type="button" name='back' value="返回登录"  onclick="redirectToPage()"/>  
        </form>
</body>
</html>

 修改执行:change_password.php

*注释部分用于调测,可忽略。

<?php
include 'session_conn.php';


    $change_password=[];
    $change_password['username'] = htmlspecialchars($_POST['username']);
    $change_password['old_password'] = md5($_POST['OldPassword']);  
    $change_password['new_password'] = md5($_POST['NewPassword']);
    $change_password['confirm_NewPassword'] = md5($_POST['ConfirmNewPassword']);
    $NewPasswordConn = mysqli_connect($host,$db_username,$db_pwd,$db_name);
    
    $Old_password = $_POST['OldPassword'];
    $New_password = $_POST['NewPassword'];
    $Confirm_NewPassword = $_POST['ConfirmNewPassword'];

    $NewPasswordConn = mysqli_connect($host,$db_username,$db_pwd,$db_name);
    // echo $old_password;


    if(!$NewPasswordConn){
        die('数据库连接失败!'.mysqli_connect_error());
        // echo "数据库连接失败";
    }
    else{
     
        if(isset($Old_password) && !empty($Old_password)){
         
            if(isset($New_password)  && !empty($New_password)){

                if(isset($Confirm_NewPassword) && !empty($Confirm_NewPassword)){
                         
                    if( $Confirm_NewPassword == $New_password){

                        // $new_password = $change_password['new_password'];
                        $MD5_NewPassword = md5($_POST['NewPassword']);
                        
                        // $username = $change_password['username'];
                        $username = htmlspecialchars($_POST['username']);
                        
                        $sql_update = "update login_user set password = '$MD5_NewPassword' where username = '$username' ";
    
                        if(mysqli_query($NewPasswordConn,$sql_update)){
                            echo "<script language='javascript'>alert('修改成功,请重新登录!');location='login.html'</script>";
                        }
        
                        else{
                            echo "<script language='javascript'>alert('密码修改失败,请重新修改!');location='change_password.html'</script>";
                        }
                    }
                    else{
                            echo "<script language='javascript'>alert('密码确认错误');location='change_password.html'</script>";
                    }                   
                  
                }

                else{
                    echo "<script language='javascript'>alert('请确认密码!');location = 'change_password.html'</script>";
                }
            } 

            else{
                echo "<script language='javascript'>alert('请输入新密码!');location='change_password.html'</script>";
            }       
        }

        else{
            echo "<script language='javascript'>alert('请输入原密码信息!');location='change_password.html'</script>";
        }
    }   
?>

用户注册页面:register.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>新用户注册</title>
</head>
<style type='text/css'>
    .title{
        text-align:center;
        line-height: 8;
    }
    .login {
        display: block;
        position: absolute;
        transform: translate(-50%,-61.8%);

        left: 56%;
        top:20%;
        width: 450px;
        border-radius:8px ;         
            /*登陆框4个角设置为圆角*/
        background:rgba(255, 255,255, 0.9);    
            /*白色背景,不透明度90%  */
    }
    input[type='submit']{
        width: 173px;
        display: block;
        margin-left: auto;
            /* 输入框与表头之间的距离 */
        margin-top: 3%;
    }
    
</style>
<script>
    function redirectToPage(){
        window.location.href = 'login.html';
    }
</script>

<body>
    <div class='box'>
        <div class="title">new user register</div>
        <form action="DoRegister.php"  method="post">
            <table class="login">
                <tr>
                    <th>
                        用户名:
                    </th>
                    <td>
                        <input type="text"  name="username" required/>
                    </td>
                </tr>
                <tr>
                    <th>
                        密码:
                    </th>
                    <td>
                        <input type="password"  name="password"/>
                    </td>
                </tr>
                <tr>
                    <th>
                        确认密码:
                    </th>
                    <td>
                        <input type="password"  name="repassword" />
                    </td>
                </tr>
                <tr>
                    <th>
                        
                    </th>
                    <td>
                        <input type="submit"  value="注册完成"/>
                    </td>
                    <td>
                        <input type="button"  value="返回登录" onclick="redirectToPage()"/>
                    </td>
                </tr>
            </table>
        </form>
    </div>
    
</body>
</html>

注册执行:DoRegister.php

*注释部分用户调测,可忽略。

<?php
// 连接参数
include 'session_conn.php';
$dsn = "$dbms:host=$host;dbname=$db_name";   //$dsn是PDO连接字符串,包括数据库类型、主机名、数据名称和字符集

try{
    $conn = new PDO($dsn,$db_username,$db_pwd);
}
catch(PDOException $e){
    echo '连接失败'.$e->getMessage();    //getMessage定位详细报错信息
}

// 接受前端数据
$data=[];
$data['username'] = htmlspecialchars($_POST['username']);
$username = $data['username'];

$data['password'] = md5($_POST['password']); 
//$password= $data['password']; 

$data['repassword'] = md5($_POST['repassword']);
//$repassword = $data['repassword'];

//print_r($data);
$conn = mysqli_connect($host,$db_username,$db_pwd,$db_name);

// echo "var_dump(die($data(['password'])))";
// echo "var_dump(die($data(['repassword'])))";
  
// 准备SQL语句
// $sql_select = "select * from login_user where username = '$username';";
$sql_select = "select * from login_user where username = '$username' limit 1";  
$sql_id = "select id from login_user";
// $select = $conn->prepare($sql_select);
// $selelct -> execute();   //执行sql语句
// $arr = $select -> fetch(PDO::FETCH_BOUN  
$result_select = mysqli_query($conn,$sql_select);
//$result_new_id = mysqli_num_rows($result_id);
//$result_new_id = $result_id + 1; 


    
if(mysqli_num_rows($result_select) != 0){ 
    echo  "<script language='javascript'>alert('该用户已存在,请更换用户名!');location='register.html'</script>";
    }
    
else{
    //先判断是否存在在判断是否为空
    
    if(!empty($data['password']) && !empty($data['repassword'])){
        
         //die ($data['password']);
                                          
            if($data['repassword'] === $data['password']){    //判断两次密码是否相同
                       
                        $password = $data['repassword'];                    
                        $result_sql_id = mysqli_query($conn,$sql_id);                     
                        $result_id = mysqli_num_rows($result_sql_id);                      
                        $result_new_id = $result_id + 1;                      
                        $sql_insert = "insert into login_user(id,username,password) values('$result_new_id','$username','$password');";
                                         
                            if(mysqli_query($conn,$sql_insert)){
                                //echo "注册成功";
                                echo "<script language='javascript'>alert('注册成功请返回登录!');location='login.html'</script>";
                            }
                            else{
                                echo "<script language='javascript'>alert('注册失败请重新注册!');location='register.html'</script>";
                        }
                
                    //$sql_insert = "insert into login_user valuse(NULL,".$data['username'].",".$dsata['md5(password)'].")";    //插入SQL语句
                    }                
                //}
            
        else{
                    echo "<script language='javascript'>alert('确认密码错误!');location='register.html'</script>";  
        }                           
    }
        
    else{
        //echo '密码:'.$data['password']; 
        echo "<script language='javascript'>alert('请完善密码。');location='register.html'</script>";  
                  
    }      
}



        

待开发:

用户密码修改 :
基于php的用户登录实现(v2版)(持续迭代)-CSDN博客

用户密码查找

引入sessio机制

CSS样式调整

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/444091.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WebGPU vs. 像素流

在构建 Bzar 之前&#xff0c;我们讨论过我们的技术栈是基于在云上渲染内容的像素流&#xff0c;还是基于使用设备自身计算能力的本地渲染技术。 由于这种选择会极大地影响项目的成本、可扩展性和用户体验&#xff0c;因此在开始编写一行代码之前&#xff0c;从一开始就采取正确…

C语言指针、数组学习记录

指针 指针是什么 数据在内存中存放的方式 声明一个变量int i 3;&#xff0c;那么在内存中就会分配一个大小为4字节&#xff08;因为int类型占4字节&#xff09;的内存空间给变量i&#xff0c;这块内存空间存放的数据就是变量i的值。 换句话说就是&#xff0c;在内存中给变…

指针的学习5

目录 sizeof和strlen的区别 sizeof strlen 数组和指针笔试题解析 一维数组 字符数组 二维数组 指针运算笔试题解析 题目1&#xff1a; 题目2&#xff1a; 题目3&#xff1a; 题目4&#xff1a; 题目5&#xff1a; 题目6&#xff1a; 题目7&#xff1a; sizeof和…

安装配置Hadoop集群

安装配置Hadoop集群的主要步骤 1、安装配置Hadoop 2、配置用户环境变量 3、配置Hadoop 配置core-site.xml文件配置hdfs-site.xml文件配置mapred-site.xml文件配置yarn-site.xml文件配置slaves文件配置hadoop-env.sh文件 更多配置文件的配置信息请参见官方网站的解释。 4、…

vue2中使用异步组件

在大型应用中&#xff0c;我们可能需要将应用分割成小一些的代码块&#xff0c;并且只在需要的时候才从服务器加载一个模块。这时就就可以使用异步组件。 1.通过import方式引入 //组件1<tempalte><Parent v-if"show"></Parent><button clickha…

关于Spring依赖注入简洁方式的探索

最近在项目开发过程中关注到一个依赖注入的写法差异&#xff0c;因为本人代码上有点强迫症&#xff0c;看到这种不同人不一样的写法&#xff0c;特意了解了一下&#xff0c;但是依然有部分疑惑未解。 两种写法&#xff1a;(就是传说中最常见的属性注入和构造函数注入) Service…

云打印机多少钱一台?

随着新的一年的开始&#xff0c;很多同学们都开始打印资料&#xff0c;以应对新一年的各种考试。但是对于学生们来说&#xff0c;去打印店打印价格贵、打印不方便、没时间去打印等多种原因导致我们没办法及时打印资料&#xff0c;这个时候我们就需要用到云打印机。那么云打印机…

浅谈游戏AI LOD的智能控制——LOD交易员

前引 LOD的概念 提到 细节层次 &#xff08;Level of Details&#xff0c;简写LOD&#xff09;&#xff0c;大家可能首先会想到图像渲染&#xff0c;像游戏中大地图的3D物体会随玩家与其距离的远近而变化精度&#xff08;主要是模型面数的变化&#xff0c;有时还会直接剔除&a…

CSS基础知识

font-family: "Trebuchet MS", Verdana, sans-serif; 字体栈&#xff0c;浏览器会一个一个试过去看下哪个可以用 font-size16px; font-size1em; font-size100%;//相对于16px 字体大小&#xff0c;需要进行单位换算16px1em font-weightnormal;//400font-weight属性…

ai直播数字人:AI大模型应用开发的神奇世界

当AI技术的发展走向一个新的高峰&#xff0c;AI直播数字人逐渐成为人们关注的焦点。这种全新的数字人形态&#xff0c;通过大模型应用开发&#xff0c;带来了一个神奇世界。 在这个神奇世界里&#xff0c;AI直播数字人可以展现出与真实人类相媲美的外貌和声音。通过先进的图像…

HarmonyOS ArkTS工程目录结构(Stage模型)

1. ArkTS工程目录结构&#xff08;Stage模型&#xff09; 官方文档&#xff08;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/start-with-ets-stage-0000001477980905-V2&#xff09; 1.1. AppScope AppScope > app.json5&#xff1a;应用的全局配…

图的单源最短路径问题

目录 一、简述 二、前置配置 三、迪杰斯特拉算法 四、改进的迪杰斯特拉算法 五、贝尔曼福特算法 一、简述 图是一种比较常用的数据结构&#xff0c;将问题转换成图相关的思路也是比较常用的。 图的单源最短路径问题&#xff0c;也就是图中某一个节点到图中其他节点的最短路…

基于SSM的植物园管理系统设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 开发技术简介 3 1.1 SSM框架 3 1.2 JSON 3 1.3 Ajax 4 1.4 Bootstrap前台框架 4 1.5 Eclipse 4 1.6 本章小结 4 2 系统分析 5 2.1可行性分析 5 2.1.1 技术可行性 5 2.1.2 经济可行性 5 2.1.3 操作可行性 5 2.2 功能需求 5 2.3 用例分析 6…

洞悉 Kubernetes 高阶奥秘:掌控资源、网络、存储,玩转容器化应用!

昨天我们已经入门了K8S&#xff0c;今天带大家学习一下资源、网络、存储这几个进阶的知识点模块内容。这几天陆陆续续会把K8S从头到尾讲一遍&#xff0c;最后会带大家实战一下&#xff0c;下面就开始今天的学习吧。 高级资源和控制器 Kubernetes 提供了一系列高级资源和控制器…

请编程输出无向无权图各个顶点的度 ← 链式前向星存图

【题目描述】请利用链式前向星存图&#xff0c;编程输出无向无权图各个顶点的度。【输入样例】 5 6 1 3 2 1 1 4 2 3 3 4 5 1【输出样例】 4 2 3 2 1【算法分析】 本例需要用到基于链式前向星的广度优先搜索&#xff08;BFS&#xff09;。 链式前向星广度优先搜索&#xff08;B…

JavaScript 实现飞机大战

文章目录 一些关键点概览&#xff1a;核心模块的具体实现示例&#xff1a;飞机类&#xff08;Plane&#xff09;的基本结构&#xff1a;子弹类&#xff08;Bullet&#xff09;的基本结构&#xff1a;敌机类&#xff08;Enemy&#xff09;的基本结构&#xff1a; 基于前面定义的…

Idea创建Maven项目

Maven安装配置步骤&#xff1a; 解压安装 bin目录 &#xff1a; 存放的是可执行命令。&#xff08;mvn 命令重点关注&#xff09; conf目录 &#xff1a;存放Maven的配置文件。&#xff08;settings.xml配置文件后期需要修改&#xff09; lib目录 &#xff1a;存放Maven依赖的j…

Python快速入门系列-2(Python的安装与环境设置)

第二章&#xff1a;Python的安装与环境设置 2.1 Python的下载与安装2.1.1 访问Python官网2.1.2 安装Python对于Windows用户对于macOS用户对于Linux用户 2.2 集成开发环境&#xff08;IDE&#xff09;的选择与设置2.2.1 PyCharm2.2.2 Visual Studio Code2.2.3 Jupyter Notebook2…

bat文件给多个Android设备安装apk

本文是安装一个apk 1、确保以下3个文件在同一个目录下 1>要安装的apk&#xff0c;这里是mmb.apk 2>设备名单&#xff0c;保存在.txt文件中&#xff0c;一行一个设备名&#xff0c;设备名通过adb devices获取&#xff0c;截图中是两个设备 txt文件中的样式 3>要运行…

基于springboot实现大学外卖管理系统项目【项目源码+论文说明】

基于springboot实现大学外卖管理系统演示 摘要 如今&#xff0c;信息化不断的高速发展&#xff0c;社会也跟着不断进步&#xff0c;现今的社会&#xff0c;各种工作都离不开信息化技术&#xff0c;更离不开电脑的管理。信息化技术也越来越渗透到各小型的企业和公司中&#xff…