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

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

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

相关文章

中霖教育:中级会计师好考吗?

对于不少会计专业的人士来说&#xff0c;中级会计师资格考试是很多人都想参加的。这一证书好不好考?难度大吗?中霖教育为大家提供参考。 中级会计师资格考试是一项国家认定的专业技术水平考试&#xff0c;考试科目共三科&#xff0c;分别是《中级会计实务》《财务管理》《经…

【视觉三维重建】【论文笔记】Deblurring 3D Gaussian Splatting

去模糊的3D高斯泼溅&#xff0c;看Demo比3D高斯更加精细&#xff0c;对场景物体细节的还原度更高&#xff0c;[官网]&#xff08;https://benhenryl.github.io/Deblurring-3D-Gaussian-Splatting/&#xff09; 背景技术 Volumetric rendering-based nerual fields&#xff1a…

00后卷王的自述,我难道真的很卷?

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 前段时间去面试了一个公司&#xff0c;成功拿到了offer&#xf…

python使用PaddleOCR实现《命名实体识别项目》OCR(已实现)(ai领域必看,简单易用)

1.简介&#xff1a; PaddleOCR是飞桨&#xff08;PaddlePaddle&#xff09;推出的一个端到端的光学字符识别开源工具集&#xff0c;支持中文、英文、数字以及特殊符号等各种类型的文字检测、识别和词语整体识别。该工具集使用PaddlePaddle深度学习框架技术&#xff0c;提供了多…

面向IoT物联网的时间序列引擎

1、背景 随着近年来业务的发展&#xff0c;尤其是机器产生的数据占比越来越高的趋势下&#xff0c;时序数据因为其业务价值越来越被更多地关注&#xff0c;也因而催生了专用的时间序列数据库&#xff0c;简称时序数据库&#xff08;TimeSeries Database&#xff0c;TSDB&#x…

代码随想录算法训练营第25天|216.组和总和三、17.电话号码的字母组合

目录 一、力扣216.组合总和三1.1 题目1.2 思路1.3 代码 二、力扣17.电话号码的字母组合2.1 题目2.2 思路2.3 代码 一、力扣216.组合总和三 1.1 题目 1.2 思路 自己的想法&#xff1a;和总和问题思路类似&#xff0c;回溯法。 &#xff08;1&#xff09;k个数的组合&#xff0…

工作纪实46-关于微服务的上线发布姿势

蓝绿部署 在部署时&#xff0c;不需要将旧版本的服务停掉&#xff0c;而是将新版本与旧版本同时运行&#xff0c;新版本测试无误之后再将旧版本停掉。这样可以避免再升级的过程中如果失败服务不可用的问题&#xff0c;因为同时部署了两个版本的程序&#xff0c;使得硬件资源是…

【C语言】深入了解指针(1),进来小白,出去大佬!

一&#xff0c;内存和地址 1&#xff0c;内存 在讲内存和地址之前&#xff0c;我们先举个案例 假设有⼀栋宿舍楼&#xff0c;把你放在楼⾥&#xff0c;楼上有100个房间&#xff0c;但是房间没有编号&#xff0c;你的⼀个朋友来找你玩&#xff0c; 如果想找到你&#xff0c;就…

【CSP试题回顾】201812-1-小明上学

CSP-201812-1-小明上学 解题代码 #include <iostream> #include <vector> using namespace std;long long r, y, g, n, k, t, sumTime;int main() {cin >> r >> y >> g >> n;for (int i 0; i < n; i){cin >> k >> t;if …

Sora爆火,多模态大模型背后的存算思考

近日&#xff0c;随着OpenAI推出Sora&#xff0c;人工智能从文本到文本、文本到图片的生成模式&#xff0c;进阶到文生视频。其文本到视频的模型能够生成长达一分钟的视频&#xff0c;在保持视觉质量的同时并严格遵循用户的提示&#xff0c;使得“扔进一本小说&#xff0c;生成…

解决Ubuntu 16.04/18.04 图形化界面异常、鼠标光标消失、鼠标变成叉叉等问题

bug场景&#xff1a; 一切从一次换源说起…叭叭叭 这篇文章解决的问题&#xff1a; 1.换源&#xff0c;默认源太慢&#xff0c;换成可用的阿里云的源 2.apt-get failed to …问题 3.图形化异常问题 4.get unmet dependence 问题 5. 鼠标光标消失和鼠标变成叉叉问题。 解决方…

ONLYOFFICE 文档开发者版,为您的平台带来强大的文档编辑功能

你是否在寻找一个可自主部署、可定制、易集成的文档编辑器解决方案&#xff1f;如果是这样&#xff0c;那么ONLYOFFICE 文档开发者版&#xff0c;也许就是你想要的答案。下面让我们一起来看看它有哪些特点&#xff0c;并能为您带来哪些好处。 什么是 ONLYOFFICE 文档 ONLYOFFI…

c#递归函数

在 C#中&#xff0c;递归函数是指在函数内部直接或间接调用自身的函数。递归函数在解决一些问题时非常有用&#xff0c;例如遍历树形结构、递归计算等。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks…

Github上哪些好用的工具

专注于web漏洞挖掘、内网渗透、免杀和代码审计&#xff0c;感谢各位师傅的关注&#xff01;网安之路漫长&#xff0c;与君共勉&#xff01; Qexo-爱写博客的师傅强烈推荐 漂亮的 Hexo 静态博客编辑器。该项目是基于 Django 的 Hexo 静态博客管理后台&#xff0c;支持文章管理、…

Python实战:采集全国5A景点名单

本文将以采集全国 5A 景点名单为例&#xff0c;详细介绍如何使用 Python 进行数据采集。 本文采集到全国340家5A景区的名单&#xff0c;包括景区名称、地区、 A级、评定年份这些字段。 一、分析数据源 为了获取权威数据&#xff0c;我们来到主管部门的官方网站&#xff0c;在右…

基于Redis自增实现全局ID生成器(详解)

本博客为个人学习笔记&#xff0c;学习网站与详细见&#xff1a;黑马程序员Redis入门到实战 P48 - P49 目录 全局ID生成器介绍 基于Redis自增实现全局ID 实现代码 全局ID生成器介绍 背景介绍 当用户在抢购商品时&#xff0c;就会生成订单并保存到数据库的某一张表中&#…

operator-sdk入门(mac)

1. 安装operator-sdk brew install operator-sdk 2. 安装kubebuilder brew install kubebuilder 3.初始化一个operator脚手架 3.1 新建一个文件夹 redis-operator 3.2 执行初始化 operator-sdk init --domain lyl.com --repo github.com 参数介绍 可以通过operator-sdk --…

Android Gradle 开发与应用 (六) : 创建buildSrc插件和使用命令行创建Gradle插件

1. 前言 前文中&#xff0c;我们介绍了在Android中&#xff0c;如何基于Gradle 8.2&#xff0c;创建Gradle插件。这篇文章&#xff0c;我们以buildSrc的方式来创建Gradle插件。此外&#xff0c;还介绍一种用Cmd命令行的方式&#xff0c;来创建独立的Gradle插件的方式。 1.1 本…

【C#语言入门】17. 事件详解(上)

【C#语言入门】17. 事件详解&#xff08;上&#xff09; 一、初步了解事件 定义&#xff1a;单词Event&#xff0c;译为“事件” 通顺的解释就是**“能够发生的什么事情”**&#xff0c;例如&#xff0c;“苹果”不能发生&#xff0c;但是“公司上市”这件事能发生。在C#中事…

c++之旅——第六弹

大家好啊&#xff0c;这里是c之旅第六弹&#xff0c;跟随我的步伐来开始这一篇的学习吧&#xff01; 如果有知识性错误&#xff0c;欢迎各位指正&#xff01;&#xff01;一起加油&#xff01;&#xff01; 创作不易&#xff0c;希望大家多多支持哦&#xff01; 一,静态成员&…