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

news2025/2/27 1:16:47

目录

版本说明

数据库连接

登录页面: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样式调整

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

报错Importing ArkTS files to JS and TS files is not allowed. <etsLint>

ts文件并不支持导入ets文件&#xff0c;为了方便开发应用卡片&#xff0c;entryformAbility创建的时候默认是ts文件&#xff0c;这里只需要把ts文件改成ets便可以轻松的导入所需要的ets即可 我创建了一个鸿蒙开发的交流群&#xff0c;喜欢的鸿蒙朋友可以扫码或者写群号&#xf…

指针详解(从基础到入门)

一、什么是指针 在计算机科学中&#xff0c;指针是编程语言中的一个对象&#xff0c;利用地址&#xff0c;它直接指向存在电脑储存器中另一个地方的值。由于通过地址能找到所需的变量单元&#xff0c;可以说&#xff0c;指针指向该变量单元。因此&#xff0c;将地址形象化地称…

如何使用Hexo搭建个人博客

文章目录 如何使用Hexo搭建个人博客环境搭建连接 Github创建 Github Pages 仓库本地安装 Hexo 博客程序安装 HexoHexo 初始化和本地预览 部署 Hexo 到 GitHub Pages开始使用发布文章网站设置更换主题常用命令 插件安装解决成功上传github但是web不更新不想上传文章处理方式链接…

python处理geojson为本地shp文件

一.成果展示 二.环境 我是在Anaconda下的jupyter notebook完成代码的编写&#xff0c;下面是我对应的版本号&#xff0c;我建议大家在这个环境下编写&#xff0c;因为在下载gdal等包的时候会更方便。 二.参考网站 osgeo.osr module — GDAL documentation osgeo.ogr module …

Codesys的Memory存储区数据定义

以上为例&#xff1a; 假定&#xff0c;数据整个大小为131072个字节 即存在 MB0-MB131071个地址 MW0-65534个地址 MD0-32766个地址 每一个MD2个MW4个MB 即MD0MW0-MW1MB0-MB1-MB2-MB3。 即MD75MW150-MW151MB300-MB301-MB302-MB303。 对以上地址赋值时&#xff0c;会同时…

SQL中常见的DDL操作及示例,数据库操作及表操作

目录 一、数据库操作 1、创建数据库 2、查看所有数据库 3、使用数据库 4、删除数据库 二、表操作&#xff1a; 1、创建表 2、查看表结构 3、修改表结构 3.1 添加列 3.2 修改列数据类型 3.3 修改列名 3.4 删除列 3.5 修改表名 3.6 删除表 注意&#xff1a; 在数…

2.15SRAM,DRAM,ROM,主存与CPU连接

MDR取出数据&#xff0c;然后通过数据总线传递给CPU&#xff0c; 地址总线传递信号给到MAR 就是说片选线是用来选择操作哪个芯片 8*8位 第一个代表存储单元的数量&#xff0c;第二个代表存储字长 有几个存储单元&#xff0c;就对应多少位地址以及多少的地址线 存储字长决定数…

【兔子机器人】修改GO电机id(软件方法、硬件方法)

一、硬件方法 利用上位机直接修改GO电机的id号&#xff1a; 打开调试助手&#xff0c;点击“调试”&#xff0c;查询电机&#xff0c;修改id号&#xff0c;即可。 但先将四个GO电机连接线拔掉&#xff0c;不然会将连接的电机一并修改。 利用24V电源给GO电机供电。 二、软件方…

Swift 入门学习:集合(Collection)类型趣谈-上

概览 集合的概念在任何编程语言中都占有重要的位置&#xff0c;正所谓&#xff1a;“古来聚散地&#xff0c;宿昔长荆棘&#xff1b;游人聚散中&#xff0c;一片湖光里”。把那一片片、一瓣瓣、一粒粒“可耐”的小精灵全部收拢、吸纳的井然有序、条条有理&#xff0c;怎能不让…

政安晨:【深度学习处理实践】(四)—— 实施一个温度预测示例

在开始使用像黑盒子一样的深度学习模型解决温度预测问题之前&#xff0c;我们先尝试一种基于常识的简单方法。 它可以作为一种合理性检查&#xff0c;还可以建立一个基准&#xff0c;更高级的机器学习模型需要超越这个基准才能证明其有效性。对于一个尚没有已知解决方案的新问…

从零开始:神经网络(1)——神经元和梯度下降

声明&#xff1a;本文章是根据网上资料&#xff0c;加上自己整理和理解而成&#xff0c;仅为记录自己学习的点点滴滴。可能有错误&#xff0c;欢迎大家指正。 一. 神经网络 1. 神经网络的发展 先了解一下神经网络发展的历程。从单层神经网络&#xff08;感知器&#xff09;开…

【Java网络编程】TCP核心特性(下)

1. 拥塞控制 拥塞控制&#xff1a;是基于滑动窗口机制下的一大特性&#xff0c;与流量控制类似都是用来限制发送方的传送速率的 区别就在于&#xff1a;"流量控制"是从接收方的角度出发&#xff0c;根据接收方剩余接收缓冲区大小来动态调整发送窗口的&#xff1b;而…

【编译原理】1、python 实现一个 JSON parser:lex 词法分析、parser 句法分析

文章目录 一、实现 JSON lexer&#xff08;词法解析器&#xff09;二、lex 词法分析2.1 lex string 解析2.2 lex number 解析2.3 lex bool 和 null 解析 三、syntax parser 句法分析3.1 parse array 解析数组3.2 parse object 解析对象 四、封装接口 一、实现 JSON lexer&#…

论文阅读:Diffusion Model-Based Image Editing: A Survey

Diffusion Model-Based Image Editing: A Survey 论文链接 GitHub仓库 摘要 这篇文章是一篇基于扩散模型&#xff08;Diffusion Model&#xff09;的图片编辑&#xff08;image editing&#xff09;方法综述。作者从多个方面对当前的方法进行分类和分析&#xff0c;包括学习…

时间感知自适应RAG(TA-ARE)

原文地址&#xff1a;Time-Aware Adaptive RAG (TA-ARE) 2024 年 3 月 1 日 介绍 随着大型语言模型&#xff08;LLM&#xff09;的出现&#xff0c;出现了新兴能力的概念。前提或假设是LLMs具有隐藏的和未知的能力&#xff0c;等待被发现。企业家们渴望在LLMs中发现一些无人知晓…

LLM实施的五个阶段

原文地址&#xff1a;Five Stages Of LLM Implementation 大型语言模型显着提高了对话式人工智能系统的能力&#xff0c;实现了更自然和上下文感知的交互。这导致各个行业越来越多地采用人工智能驱动的聊天机器人和虚拟助手。 2024 年 2 月 20 日 介绍 从LLMs的市场采用情况可以…

Day26:安全开发-PHP应用模版引用Smarty渲染MVC模型数据联动RCE安全

目录 新闻列表 自写模版引用 Smarty模版引用 代码RCE安全测试 思维导图 PHP知识点&#xff1a; 功能&#xff1a;新闻列表&#xff0c;会员中心&#xff0c;资源下载&#xff0c;留言版&#xff0c;后台模块&#xff0c;模版引用&#xff0c;框架开发等 技术&#xff1a;输…

超分辨率(1)--基于GAN网络实现图像超分辨率重建

目录 一.项目介绍 二.项目流程详解 2.1.数据加载与配置 2.2.构建生成网络 2.3.构建判别网络 2.4.VGG特征提取网络 2.5.损失函数 三.完整代码 四.数据集 五.测试网络 一.项目介绍 超分辨率&#xff08;Super-Resolution&#xff09;&#xff0c;简称超分&#xff08…

React组件(函数式组件,类式组件)

函数式组件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>React Demo</title> <!-- 引…

嵌入式Linux串口和 poll() 函数的使用

一、poll() 函数的介绍 poll() 函数用于监控多个文件描述符的变化的函数。它可以用来检查一个或多个文件描述符的状态是否改变&#xff0c;比如是否可读、可写或有错误发生。它常用于处理 I/O 多路复用&#xff0c;这在需要同时处理多个网络连接或文件操作时非常有用。 头文件…