基于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样式调整

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

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

相关文章

面试问答之MySQL数据库进阶

文章目录 &#x1f412;个人主页&#xff1a;信计2102罗铠威&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380; MySQL架构&#x1f415;数据库引擎&#x1f415; InnoDB存储存储引擎&#x1f415;MYISAM &#x1f3e8;索引&#x1f415;哪些情况需要创建…

景联文科技:专业提供高质量大语言模型训练数据

2024年&#xff0c;数字经济被再次写入政府工作报告中&#xff0c;报告指出要深化大数据、人工智能等研发应用&#xff0c;打造具有国际竞争力的数字产业集群。 大模型作为生成式人工智能的基础&#xff0c;日益成为国际科技竞争的焦点。人大代表杨剑宇指出&#xff0c;尽管我国…

008-slot插槽

slot插槽 1、插槽 slot 的简单使用2、插槽分类2.1 默认插槽2.2 具名插槽2.3 作用域插槽 插槽就是子组件中的提供给父组件使用的一个占位符&#xff0c;用<slot></slot> 表示&#xff0c;父组件可以在这个占位符中填充任何模板代码&#xff0c;如 HTML、组件等&…

老阳分享:视频号带货的四大技巧

视频号带货作为新兴的电商模式&#xff0c;在微信这个庞大的社交平台上展现出了巨大的潜力。要想在视频号带货领域取得成功&#xff0c;需要掌握一定的技巧。本文将为您详细解析视频号带货的四大技巧&#xff0c;感兴趣的朋友一起去看看吧。 一、内容创新 内容创新是视频号带货…

【深度学习笔记】5_11 残差网络ResNet

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 5.11 残差网络&#xff08;ResNet&#xff09; 让我们先思考一个问题&#xff1a;对神经网络模型添加新的层&#xff0c;充分训练后的…

springboot项目集成,项目流程概述

一、项目介绍 二、项目设计原则 2.1整体原则 2.2持久层 2.3业务逻辑层 具体分析 三、实战 3.1项目搭建 <dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-crypto</artifactId></dependency>&l…

双链表的实现(数据结构)

链表总体可以分为三大类 一、无头和有头 二、单向和双向 三、循环和不循环 从上面分类得知可以组合成8种不同类型链表&#xff0c;其中单链表最为简单&#xff0c;双联表最为复杂&#xff0c;两种链表都实现后其余链表都不成问题。 我们前期博客已将完成了单向无头不循环链表…

基于PHP的景点数据分析系统设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 关键理论与技术 3 1.1 框架技术 3 1.1.1 QueryList 3 1.1.2 ThinkPHP 3 1.1.3 Amaze UI 3 1.2 数据可视化技术 4 1.3 数据库技术 4 1.4 本章小结 4 2 需求分析 5 2.1 业务流程分析 5 2.2 功能需求分析 5 2.3 用例分析 7 2.4 非功能性需求…

it-tools工具箱

it-tools 是一个在线工具集合&#xff0c;包含各种实用的开发工具、网络工具、图片视频工具、数学工具等 github地址&#xff1a;https://github.com/CorentinTh/it-tools 部署 docker run -d --name it-tools --restart unless-stopped -p 8080:80 corentinth/it-tools:lat…

yolov8多batch推理,nms后处理

0. 背景 在高速公路监控视频场景下&#xff0c;图像分辨率大都是1920 * 1080或者2560 * 1440&#xff0c;远处的物体&#xff08;车辆和行人等&#xff09;都比较小。考虑需要对图像进行拆分&#xff0c;然后把拆分后的数据统一送入模型中&#xff0c;推理的结果然后再做nms&am…

【微前端乾坤】 vue2主应用、vue2+webpack子应用,vue3+webpack子应用、vue3+vite子应用的配置

因公司需求 需要将原本vue2iframe 形式的项目改成微前端乾坤的方式。 之前iframe都是直接嵌套到vue2项目的二级目录或者三级目录下的(反正就是要随处可嵌) 用乾坤的原因&#xff1a; 1、iframe嵌套的方式存在安全隐患&#xff1b; 2、项目是联合开发的&#xff0c; 乾坤的方便…

Hack The Box-Crafty

目录 信息收集 rustscan whatweb WEB 漏洞利用 漏洞说明 漏洞验证 提权 get user.txt get Administrator 总结 信息收集 rustscan ┌──(root㉿ru)-[~/kali/hackthebox] └─# rustscan -a 10.10.11.249 --range0-65535 --ulimit5000 -- -A -sC [~] Automatically…

NLP:自定义模型训练

书接上文&#xff0c;为了完成指定的任务&#xff0c;我们需要额外训练一个特定场景的模型 这里主要参考了这篇博客&#xff1a;大佬的博客 我这里就主要讲一下我根据这位大佬的博客一步一步写下时&#xff0c;遇到的问题&#xff1a; 文中的cfg在哪里下载&#xff1f; 要不…

Fastjson漏洞利用合集

0x01 Fastjson 概述 1.应用场景 接口返回数据 Ajax异步访问数据RPC远程调用前后端分离后端返回的数据开放API(一些公司开放接口的时候&#xff0c;我们点击请求&#xff0c;返回的数据是JSON格式的)企业间合作接口(数据对接的时候定义的一种规范&#xff0c;确定入参&#x…

BUUCTF-MISC-[HDCTF2019]信号分析1

题目链接&#xff1a;BUUCTF在线评测 (buuoj.cn) 下载附件是一个WAV的文件&#xff0c;题目又叫做信号分析&#xff0c;用Adobe Audition 打开分析了 发现有很多长短不一样的信号&#xff0c;只需要分析一段 猜测长的是一短的为0 最后得到0101010101010101000000110 百度得知…

vscode如何远程到linux python venv虚拟环境开发?(python虚拟环境、vscode远程开发、vscode远程连接)

文章目录 1. 安装VSCode2. 安装扩展插件3. 配置SSH连接4. 输入用户名和密码5. 打开远程文件夹6. 创建/选择Python虚拟环境7. 安装Python插件 Visual Studio Code (VSCode) 提供了一种称为 Remote Development 的功能&#xff0c;允许用户在远程系统、容器或甚至 Windows 子系统…

【致逝去的青春】《龙珠》作者鸟山明逝世,享年68岁

鸟山明工作室&#xff08;BIRD STUDIO&#xff09;于3月8日发布讣告&#xff1a;鸟山明已于2024年3月1日因急性硬膜下血肿逝世&#xff0c;享年68岁。 《龙珠》从 1984 年开始于《周刊少年Jump》连载&#xff0c;过后曾改编曾多部动画、剧场版、游戏&#xff0c;相关周边商品也…

opengl 学习(二)-----你好,三角形

你好&#xff0c;三角形 分类demo效果解析 分类 opengl c demo #include "glad/glad.h" #include "glfw3.h" #include <iostream> #include <cmath> #include <vector>using namespace std;/** * 在学习此节之前&#xff0c;建议将这…

Alveo 概念拓扑结构

在 Alveo 加速卡中,涉及到的概念拓扑结构主要包括 Alveo 卡上的各个关键组件以及与主机系统之间的通信结构。以下是对这些概念拓扑结构的简要介绍: 1.DDR 即双数据率内存(Double Data Rate memory),是一种常见的计算机内存类型,用于存储和提供处理器所需的数据和指令。…

macos m1 arm芯片 使用jpype报错 FileNotFoundError: [Errno 2] JVM DLL not found

startJVM(jpype.getDefaultJVMPath()) 报错 Traceback (most recent call last):File "/Users/thomas990p/PycharmProjects/tuya/volcano-biz-scripts/WenKongFa/FinalCode/java2python/CallJavaAPI.py", line 12, in <module>startJVM(jpype.getDefaultJVMPa…