irpas技术客

html+css+php+mysql实现注册+登录+修改密码(附完整代码)_小鸟想吃虫_html连接mysql实现登录注册

未知 854

注:转载及使用源代码请注明来源!如疑问可私信!

目的:在利用QT软件进行登录软件开发时,就想要实现点击按钮跳转到指定网页进行注册以及修改密码等操作,就像QQ客户端那样可以实现网页端修改密码,申请账户等操作;体验地址:html+php+mysql登录界面设计(因需要开启花生壳内网穿透,如需体验可私聊!)

目前已经实现的操作:html界面;html跳转php;php连接数据库;php实现对数据库的增删改查。

注:QT客户端界面部分暂时不做过多介绍,详细界面如:QT仿QQ登录

一、HTML界面及连接数据库

页面布局:style.css

/* 清除浏览器默认边距, 使边框和内边距的值包含在元素的width和height内 */ * { margin: 0; padding: 0; box-sizing: border-box; } /* 使用flex布局,让内容垂直和水平居中 */ section { /* 相对定位 */ position: relative; overflow: hidden; display: flex; justify-content: center; align-items: center; min-height: 100vh; /* linear-gradient() 函数用于创建一个表示两种或多种颜色线性渐变的图片 */ background: linear-gradient(to bottom, #f1f4f9, #dff1ff); } /* 背景颜色 */ section .color { /* 绝对定位 */ position: absolute; /* 使用filter(滤镜) 属性,给图像设置高斯模糊*/ filter: blur(200px); } /* :nth-child(n) 选择器匹配父元素中的第 n 个子元素 */ section .color:nth-child(1) { top: -350px; width: 600px; height: 600px; background: #ff359b; } section .color:nth-child(2) { bottom: -150px; left: 100px; width: 500px; height: 500px; background: #fffd87; } section .color:nth-child(3) { bottom: 50px; right: 100px; width: 500px; height: 500px; background: #00d2ff; } .box { position: relative; border-radius: 10px; } /* 背景圆样式 */ .box .circle { position: absolute; background: rgba(255, 255, 255, 0.1); /* backdrop-filter属性为一个元素后面区域添加模糊效果 */ backdrop-filter: blur(5px); box-shadow: 0 25px 45px rgba(0, 0, 0, 0.1); border: 1px solid rgba(255, 255, 255, 0.5); border-right: 1px solid rgba(255, 255, 255, 0.2); border-bottom: 1px solid rgba(255, 255, 255, 0.2); border-radius: 50%; /* 使用filter(滤镜) 属性,改变颜色。 hue-rotate(deg) 给图像应用色相旋转 calc() 函数用于动态计算长度值 var() 函数调用自定义的CSS属性值x*/ filter: hue-rotate(calc(var(--x) * 70deg)); /* 调用动画animate,需要10s完成动画, linear表示动画从头到尾的速度是相同的, infinite指定动画应该循环播放无限次*/ animation: animate 10s linear infinite; /* 动态计算动画延迟几秒播放 */ animation-delay: calc(var(--x) * -1s); } /* 背景圆动画 */ @keyframes animate { 0%, 100%, { transform: translateY(-50px); } 50% { transform: translateY(50px); } } .box .circle:nth-child(1) { top: -50px; right: -60px; width: 100px; height: 100px; } .box .circle:nth-child(2) { top: 150px; left: -100px; width: 120px; height: 120px; z-index: 2; } .box .circle:nth-child(3) { bottom: 50px; right: -60px; width: 80px; height: 80px; z-index: 2; } .box .circle:nth-child(4) { bottom: -80px; left: 100px; width: 60px; height: 60px; } .box .circle:nth-child(5) { top: -80px; left: 140px; width: 60px; height: 60px; } /* 登录框样式 */ .container { position: relative; width: 400px; min-height: 400px; background: rgba(255, 255, 255, 0.3); display: flex; justify-content: center; align-items: center; backdrop-filter: blur(5px); box-shadow: 0 25px 45px rgba(0, 0, 0, 0.1); border: 1px solid rgba(255, 255, 255, 0.5); border-right: 1px solid rgba(255, 255, 255, 0.2); border-bottom: 1px solid rgba(255, 255, 255, 0.2); } .form { position: relative; width: 100%; height: 100%; padding: 50px; } .checkip { position: absolute; left:0px; bottom:-10px; width: 100%; height: 6%; } /* 登录标题样式 */ .form h2 { position: relative; color: #00aaff; font-size: 24px; font-weight: 600; letter-spacing: 5px; margin-bottom: 30px; cursor: pointer; } /* 登录标题的下划线样式 */ .form h2::before { content: ""; position: absolute; left: 0; bottom: -10px; width: 0px; height: 3px; background: #fff; transition: 0.5s; } .form h2:hover:before { width: 53px; } .form .inputBox { width: 100%; margin-top: 20px; } .checkip .inputText { width: 100%; height:100%; margin-top: 20px; } /* 输入框样式 */ .form .inputBox input { width: 100%; padding: 10px 20px; background: rgba(255, 255, 255, 0.2); outline: none; border: none; border-radius: 30px; border: 1px solid rgba(255, 255, 255, 0.5); border-right: 1px solid rgba(255, 255, 255, 0.2); border-bottom: 1px solid rgba(255, 255, 255, 0.2); font-size: 16px; letter-spacing: 1px; color: #666; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05); } /* .form .inputBox button { width: 100%; padding: 10px 20px; background: rgba(255, 255, 255, 0.2); outline: none; border: none; border-radius: 30px; border: 1px solid rgba(255, 255, 255, 0.5); border-right: 1px solid rgba(255, 255, 255, 0.2); border-bottom: 1px solid rgba(255, 255, 255, 0.2); font-size: 16px; letter-spacing: 1px; color: #666; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05); }*/ /* 下面的ip */ .checkip .inputText input { position: absolute; width:55%; right:20%; bottom:50%; background: rgba(255, 255, 255, 0); outline: none; border: 1px solid rgba(255, 255, 255, 0); font-size: 14px; letter-spacing: 1px; color: #00aaff } .form .inputBox input::placeholder { color: #666; } /* 登录按钮样式 */ .form .inputBox input[type="submit"] { background: #fff; color: #666; max-width: 100px; margin-bottom: 20px; font-weight: 600; cursor: pointer; } /* .form .inputBox button[type="button"] { background: #fff; color: #666; max-width: 300px; margin-bottom: 20px; font-weight: 600; cursor: pointer; } */ .forget { margin-top: 6px; color: #236; letter-spacing: 1px; } .goto { position: absolute; right:3%; bottom:50%; margin-top: 6px; color: #236; letter-spacing: 1px; } .goto a { font:12px; color: #aaaa00; font-weight: 600; text-decoration: none; } .forget a { color: #236; font-weight: 600; text-decoration: none; } 1.登录界面效果如下:

登录界面代码:login.html

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <link rel="shortcut icon" href="logins.png" type="image/x-icon" /> <title>登录客户端</title> <script type="text/javascript" src="http://pv.sohu.com/cityjson?ie=utf-8"></script> <script src="https://static.runoob.com/assets/jquery-validation-1.14.0/lib/jquery.js"></script> <script src="https://static.runoob.com/assets/jquery-validation-1.14.0/dist/jquery.validate.min.js"></script> <script src="https://static.runoob.com/assets/jquery-validation-1.14.0/dist/localization/messages_zh.js"></script> <script type="text/javascript"> function randoms() { document.getElementById("id").value = ""; document.getElementById("password").value = ""; } //参考链接:https://·ame; //document.getElementById("IpAddress").value = returnCitySN.cip; } //参考链接:https://·/try/try.php?filename=jquery_validate_demo1 //添加检测机制 参考链接:https://blog.csdn.net/huangleijay/article/details/11569317 jQuery.validator.addMethod("mobile", function(value, element) { var length = value.length; var mobile = /^(((13)|1[5-9]{1})+\d{9})$/ return this.optional(element) || (length == 11 && mobile.test(value)); }, "手机号码格式错误"); // 字母和数字的验证 jQuery.validator.addMethod("chrnum", function(value, element) { var chrnum = /^([a-zA-Z0-9]+)$/; return this.optional(element) || (chrnum.test(value)); }, "只能输入数字和字母(字符A-Z, a-z, 0-9)"); //下面是表单拦截提示,可取消,否则无法跳转 /* $.validator.setDefaults({ submitHandler: function() { //alert("提交事件!"); } });*/ $().ready(function() { // 在键盘按下并释放及提交后验证提交表单 $("#loginform").validate({ rules: { name: "required",//用户名 //密码是6位以上 password: { required: true, minlength:6, maxlength:10, chrnum: true }, //验证密码 repassword: { required: true, chrnum: true, equalTo: "#password" }, //手机号 phone: { required: true, mobile:true }, }, messages: { name: "请输入您的用户名", password: { required: "请输入密码", minlength: "请输入6~10位密码", maxlength:"请输入6~10位密码" }, repassword: { required: "请输入密码", equalTo: "两次密码输入不一致" }, phone: { required: "请输入一个正确的手机号" } } }); }); </script> <style> .error{ color:red; } </style> </head> <body onload="randoms()" > <section> <!-- 背景颜色 --> <div class="color"></div> <div class="color"></div> <div class="color"></div> <div class="box"> <!-- 背景圆 --> <div class="circle" style="--x:0"></div> <div class="circle" style="--x:1"></div> <div class="circle" style="--x:2"></div> <div class="circle" style="--x:3"></div> <div class="circle" style="--x:4"></div> <!-- 登录框 --> <div class="container"> <div class="form"> <h2>注册</h2> <form id = "loginform" action="welcome.php" method="post" name = "form1"> <div class="inputBox"> <input type="text" placeholder="账户" name="id" id="id"> </div> <div class="inputBox"> <input type="text" placeholder="昵称" name="name" id="name"> </div> <div class="inputBox"> <input type="password" placeholder="请输入6~10位密码" name="password" id="password"> </div> <div class="inputBox"> <input type="password" placeholder="再次输入密码" name="password" id="repassword"> </div> <div class="inputBox"> <input type="text" placeholder="请输入手机号" name="phone" id="phone"> </div> <div class="inputBox"> <input type="submit" value="注册" id="input1"> </div> <p class="forget">已有账户?<a href="login.html"> 点击登录 </a></p> </form> </div> <div class = "checkip"> <div class="inputText"> <input type="text" name="IpAddress" id="IpAddress"> <p class="goto"><a href="http://pv.sohu.com/cityjson?ie=utf-8"> 点击查询 </a></p> </div> </div> </div> </div> </section> </body> </html>

注册界面PHP:welcome.php

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $file_path = "info.txt"; if(file_exists($file_path)){ $fp = fopen($file_path, "w"); $str = $_POST["id"] . PHP_EOL . $_POST["name"] . PHP_EOL . $_POST["password"] .PHP_EOL . $_POST["phone"] .PHP_EOL . $_POST["IpAddress"]; fwrite($fp, $str); } fclose($fp); ?> <?php $mydbhost = "localhost"; $mydbuser = "root"; $mydbpass = '123456'; $ip = $_SERVER["REMOTE_ADDR"]; $conn = mysqli_connect($mydbhost, $mydbuser, $mydbpass); if(! $conn){ die("connect error: " . mysqli_error($conn)); } else { /*echo ('用户信息注册成功!')."<br/>"; */ /* Close the connection 关闭连接*/ $url='../login/login.html'; echo "<script>location.href='$url'</script>"; } mysqli_select_db( $conn, 'qqpass'); $sql="INSERT INTO information (id, name, password , phone, qauto, remember, lastlogin, readpolicy, IpAddress, showstatus, loginflag, showlogin,email) VALUES ('$_POST[id]','$_POST[name]','$_POST[password]','$_POST[phone]' ,'1','1','0','1','$ip','离线','2','0', '$_POST[id]@qq.com')"; $retval = mysqli_query($conn, $sql); if(! $retval){ die("create error" . mysqli_error($conn)); } mysqli_close($conn); ?> </body> </html> 3.修改密码界面效果如下:

修改密码界面代码:forget.html

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <link rel="shortcut icon" href="forget.png" type="image/x-icon" /> <title>忘记密码</title> <script type="text/javascript" src="http://pv.sohu.com/cityjson?ie=utf-8"></script> <script src="https://static.runoob.com/assets/jquery-validation-1.14.0/lib/jquery.js"></script> <script src="https://static.runoob.com/assets/jquery-validation-1.14.0/dist/jquery.validate.min.js"></script> <script src="https://static.runoob.com/assets/jquery-validation-1.14.0/dist/localization/messages_zh.js"></script> <script type="text/javascript"> function randoms() { document.getElementById("id").value = ""; document.getElementById("phone").value = ""; document.getElementById("email").value = ""; document.getElementById("repassword").value = ""; document.getElementById("password").value = ""; } //参考链接:https://·/try/try.php?filename=jquery_validate_demo1 //添加检测机制 参考链接:https://blog.csdn.net/huangleijay/article/details/11569317 jQuery.validator.addMethod("mobile", function(value, element) { var length = value.length; var mobile = /^(((13)|1[5-9]{1})+\d{9})$/ return this.optional(element) || (length == 11 && mobile.test(value)); }, "手机号码格式错误"); // 字母和数字的验证 jQuery.validator.addMethod("chrnum", function(value, element) { var chrnum = /^([a-zA-Z0-9]+)$/; return this.optional(element) || (chrnum.test(value)); }, "只能输入数字和字母(字符A-Z, a-z, 0-9)"); //下面是表单拦截提示,可取消,否则无法跳转 /* $.validator.setDefaults({ submitHandler: function() { //alert("提交事件!"); } });*/ $().ready(function() { // 在键盘按下并释放及提交后验证提交表单 $("#forgetform").validate({ rules: { //密码是6位以上 password: { required: true, minlength:6, maxlength:10, chrnum: true }, //验证密码 repassword: { required: true, chrnum: true, equalTo: "#password" }, //手机号 phone: { required: true, mobile:true }, }, messages: { password: { required: "请输入密码", minlength: "请输入6~10位密码", maxlength:"请输入6~10位密码" }, repassword: { required: "请输入密码", equalTo: "两次密码输入不一致" }, phone: { required: "请输入一个正确的手机号" } } }); }); </script> <style> .error{ color:red; } </style> </head> <body onload="randoms()"> <section> <!-- 背景颜色 --> <div class="color"></div> <div class="color"></div> <div class="color"></div> <div class="box"> <!-- 背景圆 --> <div class="circle" style="--x:0"></div> <div class="circle" style="--x:1"></div> <div class="circle" style="--x:2"></div> <div class="circle" style="--x:3"></div> <div class="circle" style="--x:4"></div> <!-- 登录框 --> <div class="container"> <div class="form"> <h2>忘记密码</h2> <form id = "forgetform" action="forget.php" method="post" name = "form"> <div class="inputBox"> <input type="text" placeholder="账户" name="id" id="id"> </div> <div class="inputBox"> <input type="text" placeholder="邮箱" name="email" id="email"> </div> <div class="inputBox"> <input type="text" placeholder="手机号" name="phone" id="phone"> </div> <div class="inputBox"> <input type="password" placeholder="请输入6~10位密码" name="password" id="password"> </div> <div class="inputBox"> <input type="password" placeholder="再次输入密码" name="repassword" id="repassword"> </div> <div class="inputBox"> <input type="submit" value="修改"> </div> <p class="forget">已有账户?<a href="login.html"> 点击登录 </a></p> <p class="forget">没有账户?<a href="register.html"> 注册 </a></p> </form> </div> </div> </div> </section> </body> </html>

修改密码界面PHP:forget.php

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php $file_path = "info.txt"; if(file_exists($file_path)){ $fp = fopen($file_path, "w"); $str = $_POST["id"] . PHP_EOL . $_POST["email"] . PHP_EOL . $_POST["phone"]; fwrite($fp, $str); } fclose($fp); ?> <?php $mydbhost = "localhost"; $mydbuser = "root"; $mydbpass = '123456'; $ip = $_SERVER["REMOTE_ADDR"]; $conn = mysqli_connect($mydbhost, $mydbuser, $mydbpass); if(! $conn){ die("connect error: " . mysqli_error($conn)); } else { /*echo ('用户信息注册成功!')."<br/>"; */ /* Close the connection 关闭连接*/ $url='../login/login.html'; echo "<script>location.href='$url'</script>"; } mysqli_select_db( $conn, 'qqpass'); $sql="UPDATE information SET password='$_POST[password]' WHERE id='$_POST[id]' AND email='$_POST[email]' AND phone='$_POST[phone]'"; $retval = mysqli_query($conn, $sql); if(! $retval){ die("create error" . mysqli_error($conn)); } mysqli_close($conn); ?> </body> </html>

到此为止,登录界面展示完毕,体验地址:html+php+mysql登录界面设计 注:因使用花生壳内网穿透,本机花生壳客户端在线方可体验!可私聊体验! 此外,生成的注册信息存于本机mysql数据库,请合理设置密码!

图标:如下(可自行下载添加,无序一致)

二、如何复现上述界面? 1.下载Apache软件进行安装

安装步骤省略,请自行百度(傻瓜式安装) 软件地址:链接:https://pan.baidu.com/s/13PpwEc-YuEbQYY2iLpXFLQ 提取码:N414

注意:在进行安装时有需要填写端口的步骤,端口号通常设置为:8080

2.打开浏览器查询

浏览器端输入:http://localhost:8080/login/login.html

其他界面仅需将后面文件名字换一下! 另外:在同一局域网内也可用使用ip地址进行查看,进而实现手机端访问该网页!主机ip查询请自行百度!

完整界面已经介绍完毕,以上为本次设计的全部代码以及操作方式,由于Apache无法使用外网访问,接下来主要介绍怎么使用花生壳进行内网穿透,以便进行外网访问!

3.开启花生壳穿透

这里需要开启http服务(需要花6块钱)

开启花生壳服务之后,手机4G以及外网都可进行访问,注:合理需要开启服务才可外网访问,服务关闭,网页无法访问!


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。