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

目录

版本说明

数据库连接

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

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

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

相关文章

基于UDP实现的网络聊天室

服务器&#xff1a; #include <myhead.h> struct msg {char type;char name[20];char text[1024]; };int main(int argc, const char *argv[]) {if(argc!3){printf("input error\n");printf("./a.out IP地址 端口号\n");return -1;}//1、创建用于通…

美国国家安全局(NSA)和美国政府将Delphi/Object Pascal列为推荐政府机构和企业使用的内存安全编程语言

上周&#xff0c;美国政府发布了《回到构建块&#xff1a;通往安全和可衡量软件的道路》的报告。本报告是美国网络安全战略的一部分&#xff0c;重点关注多个领域&#xff0c;包括内存安全漏洞和质量指标。 许多在线杂志都对这份报告发表了评论&#xff0c;这些杂志强调了对 C…

css clip-path polygon属性实现直角梯形

2024.3.8今天我学习了如何用css实现直角梯形的效果&#xff0c; 效果&#xff1a; 具体实现原理&#xff1a; 一、需要三个div&#xff1a; 外面一个大的div&#xff0c;里面左右两个小的div 我们需要先把第一个div变成直角梯形&#xff1a; 大概是这样&#xff0c;设置好之…

web服务之虚拟主机功能

华子目录 概述基于IP地址的虚拟原理实验 基于不同端口号的虚拟主机原理实验 基于域名的虚拟主机原理域名解析实验 概述 如果每台运行 Linux 系统的服务器上只能运行一个网站&#xff0c;那么人气低、流量小的草根站长就要被迫承担着高昂的服务器租赁费用了&#xff0c;这显然也…

项目申报书引言部分

文献引用方式&#xff1a; 张三 等&#xff0c;2024&#xff1b; Zhang S et al.,2015&#xff1b; &#xff08;中文是中文逗号&#xff0c;英文是英文逗号&#xff09;

【你也能从零基础学会网站开发】Web建站之HTML+CSS入门篇 CSS常用属性

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 CSS常用属性…

ARM64汇编04 - 条件码

关于分支控制与条件码的作用可以去看 《CSAPP》的第 3.6 节&#xff0c;讲的非常清楚&#xff0c;建议看看&#xff0c;这里就不重复了。 我们直接使用一个例子来简单理解汇编是如何实现分支控制的&#xff1a; #include <stdio.h> #include <stdlib.h> #include…

【MATLAB第98期】基于MATLAB的MonteCarlo蒙特卡罗结合kriging克里金代理模型的全局敏感性分析模型【更新中】

【MATLAB第98期】基于MATLAB的Monte Carlo蒙特卡罗结合kriging克里金代理模型的全局敏感性分析模型【更新中】 PS:因内容涉及较多&#xff0c;所以一时半会更新不完 后期会将相关原理&#xff0c;以及多种功能详细介绍。 麻烦点赞收藏&#xff0c;及时获取更新消息。 引言 在…

Easticsearch性能优化之索引优化

Easticsearch性能优化之索引优化 一、合理的索引设计二、合理的分片和副本三、合理的索引设置 对于性能优化&#xff0c;Elasticsearch&#xff08;以下简称ES&#xff09;的索引优化是提高性能的关键因素之一。合理的设计索引&#xff0c;合理的分片和副本以及合理的缓存设置等…

VSCode报错:/bin/sh: python: command not found

背景 以前都是直接用txt写python&#xff0c;然后直接命令行运行。 这次涉及的代码较多&#xff0c;决定用编译器。 写好的一段python点击运行报错&#xff01; 问题描述 因为我本地安装的是python3&#xff0c;但是vscode用的是另一个路径的python&#xff0c;所以找不到 解…

[React 进阶系列] React Context 案例学习:使用 TS 及 HOC 封装 Context

[React 进阶系列] React Context 案例学习&#xff1a;使用 TS 及 HOC 封装 Context 具体 context 的实现在这里&#xff1a;[React 进阶系列] React Context 案例学习&#xff1a;子组件内更新父组件的状态。 根据项目经验是这样的&#xff0c;自从换了 TS 之后&#xff0c;…

光谱整形1

华为张德江&#xff1a;下一代光传送网将走向400G80波WDM系统_通信世界网 (cww.net.cn) 张德江指出&#xff0c;400G WDM系统具有三大基本特征&#xff1a;支持400G80波&#xff0c;单纤32T超大容量&#xff0c;传输距离与100G相当&#xff1b;支持32维以上的光交叉&#xff1…

微前端之使用无界创建一个微前端项目

wujie 使用手册 使用简介 主应用配置 安装 wujie依赖main.js配置 是否开启预加载 生命周期函数 – lifecycle.js配置 子应用配置 跨域设置运行模式 生命周期改造 在主应用中&#xff0c;使用wujie&#xff0c;将子应用引入到主应用中去 wujie 使用手册 wujie 是一个基于 Web…

Linux环境下使用interrupt方式操作UART

目录 概述 1 Linux环境下UART设备 2 轮询方式操作UART功能实现 2.1 打开串口函数&#xff1a;usr_serial_open 2.2 关闭串口函数&#xff1a; usr_serial_close 2.3 发送数据函数&#xff1a; usr_serial_sendbytes 2.4 接收数据函数&#xff1a; usr_serial_readinterr…

Android 性能优化--APK加固(2)加密

文章目录 字符串加密图片加密如何避免应用被重新签名分发APK 加壳的方案简析DEX加密原理及实现 本文首发地址&#xff1a;https://h89.cn/archives/212.html 最新更新地址&#xff1a;https://gitee.com/chenjim/chenjimblog 通过 前文 介绍&#xff0c;我们知晓了如何使用代码…

前端网络请求异步处理——Promise使用记录

Promise是ES6中新增的一个处理复杂异步请求的工具&#xff0c;其主要形式为&#xff1a; const baseUrl http://localhost:80 export const $request (param {}) > {console.log(请求参数, param)return new Promise((resolve, reject) > {wx.request({url: baseUrl …

SpringMVC拦截器和过滤器执行顺序及区别

拦截器&#xff08;Inteceptor&#xff09;和过滤器&#xff08;Filter&#xff09;执行顺序&#xff1f; 拦截器和过滤器区别&#xff1f; 1、拦截次数不同&#xff1a; 过滤器&#xff1a;一次请求只能被一个过滤器拦截一次&#xff0c;它们按照在web.xml中的声明顺序依次执…

Python Web开发记录 Day7:Django(Web框架) part 1

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 七、Django1、快速了解Django①概述②核心功能③…

css flex 布局换行

默认使用display: flex;是不换行的&#xff0c;只需要加上flex-wrap: wrap;就行了&#xff0c;效果图 .app-center {display: flex;flex-wrap: wrap;justify-content:flex-start; } 通过上面我们发现虽然时间换行了&#xff0c;但是每行的边距不一样 加上这个就行了&#xff…

华为配置DHCP Snooping防止DHCP Server仿冒者攻击示例

配置DHCP Snooping防止DHCP Server仿冒者攻击示例 组网图形 图1 配置DHCP Snooping防止DHCP Server仿冒者攻击组网图 DHCP Snooping简介配置注意事项组网需求配置思路操作步骤配置文件 DHCP Snooping简介 在一次DHCP客户端动态获取IP地址的过程中&#xff0c;DHCP Snoopi…