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

news2024/11/18 13:38:25

目录

版本说明

数据库连接

登录页面:login.html

登录处理实现:login.php

用户欢迎页面:welcome.php

用户注册页面:register.html

注册执行:DoRegister.php


版本说明

v1实现功能:

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

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

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

欢迎页面(*欢迎用户)

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

数据库连接

基于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>

用户注册页面: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>";  
                  
    }      
}



        

待开发:

用户密码修改

用户密码查找

引入sessio机制

CSS样式调整

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

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

相关文章

selenium高级应用

常见控件应用 复杂的控件操作1.操作Ajax选项2.滑动滑块操作 WebDriver的特殊操作元素class值包含空格property、attribute、text的区别定位动态id 截图功能页面截图页面截图&#xff0c;返回截图的二进制数据页面截图&#xff0c;返回base64的字符串截取指定元素。先定位元素&a…

ARMv8/ARMv9架构下特权程序之间的跳转模型与系统启动探析

文章目录 背景1、前言小结&#xff1a; 2、4个特权等级/4个安全状态之间的跳转模型小结&#xff1a; 3、启动时镜像之间的跳转模型小结&#xff1a; 4、runtime程序之间的跳转模型小结&#xff1a; 推荐 背景 ARMv8和ARMv9架构是ARM公司推出的先进处理器架构&#xff0c;被广泛…

macbook pro 2018 安装 arch linux 双系统

文章目录 友情提醒关于我的 mac在 mac 上需要提前做的事情复制 wifi 驱动 在 linux 上的操作还原 wifi 驱动连接 wifi 网络磁盘分区制作文件系统挂载分区 使用 archinstall 来安装 arch linux遗留问题 友情提醒 安装 archl linux 的时候&#xff0c;mac 的键盘是没法用的&#…

【JAVA】Collections.sort()方法详解

一、简介 Collections.sort() 是 Java 集合框架&#xff08;Java Collections Framework&#xff09;中的一个静态方法&#xff0c;用于对列表&#xff08;List&#xff09;中的元素进行排序。此方法利用了 Java 的泛型机制&#xff0c;可以很方便地对各种类型的列表进行排序。…

优思学院|5S 应该由哪个部门负责推行?

很多人以为5S是生产部的事&#xff0c;负责的部门自然是生产部&#xff0c;事实上这是一个很严重的错误&#xff0c;那么&#xff0c;究竟5S 应该由哪个部门负责推行&#xff1f;我们今天就来讨论一下。如果你喜欢我们的文章&#xff0c;记得点赞和收藏。 5S是全员参与的活动&…

EASY-LASER激光对中仪维修E710镭射仪联轴器维修

Easy-Laser激光对中仪维修常见故障&#xff1a;触摸屏损坏&#xff08;屏碎&#xff0c;不显示&#xff0c;黑屏&#xff0c;蓝屏&#xff0c;无背光等&#xff09;&#xff0c;对中仪电路板损坏&#xff0c;对中仪接收装置电路板维修&#xff0c;对中仪发射控制装置电路板等均…

基于冠豪猪优化算法(Crested Porcupine Optimizer,CPO)的无人机三维路径规划(MATLAB)

一、无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径&#xff0c;使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一&#xff0c;它可以通过算法和模型来确定无人机的航迹&#xff0c;以避开障碍物、优化飞行…

编程界的圣经:从Scheme到JavaScript构建你的计算思维

文章目录 适读人群目 录 《计算机程序的构造和解释》&#xff08;Structure and Interpretation of Computer Programs&#xff0c;简记为SICP&#xff09;是MIT的基础课教材&#xff0c;出版后引起计算机教育界的广泛关注&#xff0c;对推动全世界大学计算机科学技术教育的发…

Paimon新版本核心特性和生产实践解读

最近Apche Paimon发布了最新版本0.7.0&#xff0c;在这个版本中&#xff0c;Paimon对一些新特性进行了增强。 Paimon在数据湖领域发展迅速&#xff0c;未来会在整个数据开发领域占有很重要的地位&#xff0c;今天我们来盘点一下当前能力的特点以及在生产环境中的使用情况。 Loo…

springboot262基于spring boot的小型诊疗预约平台的设计与开发

小型诊疗预约平台 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本小型诊疗预约平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理…

选择某个元素的第几个元素

//p标签里面的奇数&#xff08;odd&#xff09;的背景设置为red,event是偶数 p:nth-of-type(odd){background-color: red;}

POS 之 惩罚机制

惩罚 Item描述惩罚机制&#x1f360;来源投票验证者给正确的来源检查点进行了及时投票如果及时投票或投票非常慢&#xff0c;没有奖励&#xff0c;并且会从验证者余额中移同等价值&#x1f35a;目标投票验证者给正确的目标检查点进行了及时投票如果及时投票或投票非常慢&#x…

文心一言 VS 讯飞星火 VS chatgpt (212)-- 算法导论16.1 3题

三、对于活动选择问题&#xff0c;并不是所有贪心方法都能得到最大兼容活动子集。请举例说明&#xff0c;在剩余兼容活动中选择持续时间最短者不能得到最大集。类似地&#xff0c;说明在剩余兼容活动中选择与其他剩余活动重叠最少者&#xff0c;以及选择最早开始者均不能得到最…

购买须知:腾讯云服务器99元一年限制月流量300GB

腾讯云99元服务器限制月流量吗&#xff1f;是的&#xff0c;限制月流量&#xff0c;每月提供300GB月流量&#xff0c;超出部分的流量&#xff0c;需要额外支付流量费&#xff0c;价格为0.8元每GB。可以在腾讯云百科 txy.wiki 查看当前99元服务器详细配置和最新的优惠券信息。如…

Pytorch学习 day10(L1Loss、MSELoss、交叉熵Loss、反向传播)

Loss loss的作用如下&#xff1a; 计算实际输出和真实值之间的差距为我们更新模型提供一定的依据&#xff08;反向传播&#xff09; L1Loss 绝对值损失函数&#xff1a;在每一个batch_size内&#xff0c;求每个输入x和标签y的差的绝对值&#xff0c;最后返回他们平均值 M…

phpcms头像上传漏洞

经典版 漏洞原理&#xff1a;我们上传一个zip的压缩包&#xff0c;它会解压然后删除其中不是.jpg .gig .png的文件 function check_dir($dir)&#xff1a;这是一个PHP函数的定义&#xff0c;它接受一个参数 $dir&#xff0c;代表要检查的目录路径。 $handle opendir($dir);&…

公众号如何获取视频号下载工具?

视频内容已经成为信息传播的重要载体&#xff0c;微信视频号作为国内主流的短视频平台之一&#xff0c;深受用户喜爱。有时我们想要保存喜欢的视频以供日后观看&#xff0c;这时就需要借助一些公众号提供的视频号下载工具。 本文将详细解析如何利用这些工具&#xff0c;让你轻…

OpenText Availability——适用于 Windows 和 Linux 服务器的高可用性和灾难恢复解决方案

OpenText Availability——适用于 Windows 和 Linux 服务器的高可用性和灾难恢复解决方案 连续复制&#xff0c;最大限度地减少数据丢失快速故障转移&#xff0c;最大限度地减少停机时间可忽略的性能影响支持物理、虚拟和基于云的系统平台 停机从多种途径侵扰 IT 企业。 从相…

Mybatis的使用快速入门

1. 数据库准备 假设目前存在以下数据库表。 CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id) );2. 依赖导入 pom.xml <dependencies><!-- mybatis依赖 --><dependency><groupId>or…

仿牛客网项目---项目总结

本篇文章是对整个项目的一个总结。下面这张图要好好理解。 整个项目都是构建在SpringBoot之上的&#xff0c;所以把它画到最底下&#xff0c;其它技术依托在springboot之上。但是springboot并不是技术的核心&#xff0c;而只是起到了一个辅助的作用&#xff0c;它的作用仅仅是降…