『PHP学习笔记』系列九:利用from表单的onSubmit事件进行浏览器端的数据验证
数据验证思路:
当我们在网站进行注册时,一般有两个数据验证的过程,一个是在服务器端的验证,一个是在浏览器端的验证。浏览器端的验证一般是用来验证提交的信息是否符合注册的要求,即数据是否合法;服务器端的验证主要是验证该注册信息是否已经存在于服务器中,如果注册信息已存在,则返回信息提示已经注册过了,如果注册信息在服务器中不存在,则经注册信息写入服务器中,并返回注册成功的信息。
由于我们一般都是用form表单来传递信息,这就要求我们要在表单传递到服务器端PHP页面之前在JavaScript中验证,这就用到了form表单中的onSubmit事件,onSubmit事件类似于onClick事件,都是用来触发点击事件。不同的是onSubmit只能在表单上使用,提交白丹前会触发,onClick是按钮等控件使用,用来触发点击事件。
提交过程:
onSubmit:
1、用户点击按钮 ---->
2、触发onsubmit事件 ---->
4、onsubmit未处理或返回true ------>
5、提交表单.
onClick:
1、用户点击按钮 ---->
2、触发onclick事件 ---->
3、onclick返回true或未处理onclick ---->
4、提交表单.
onsubmit处理函数返回false,onclick函数返回false,都不会引起表单提交。
注意要点:
1、οnsubmit="return subSheck();",不能不写return,否则表单永远会提交;
2、当JavaScript代码在html页面时尽量将js代码放到最后;
3、var re 为定义的正则表达式;
4、只有当邮箱和密码都验证成功是才允许提交的PHP页面。
具体实现:
(下面以一个仿照Pixiv的注册页面实现)
HTML代码:
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>立即注册|pixiv</title><script type="text/javascript" src="js/register.js"></script><link rel="stylesheet" type="text/css" href="css/register.css"><link rel="icon" href="Pixiv.ico"><script type="text/javascript" src="js/jq.js"></script>
</head><body><div class="box"><h1>Pixiv</h1><h6 style="color:#757C80FF ">让创作变得更有乐趣</h6><h3 style="color:#757C80FF ">立即注册</h3><form name="form1" onSubmit="return subSheck();" action="register.php" method="post"><!--这里要注意onsubmit="return subSheck();",不能掉了return,否则表单永远会提交。--><input type="text" name="email" id="email" placeholder="邮箱地址"><span id="DZYXerror"></span><br /><input type="password" name="password" id="password" placeholder="密码"><span id="MMerror"></span><br /><input type="submit" name="submit" value="继续" class="bun"></form><div class="facebook"><p>用其他账号开始</p><a href="#"><img src="Images/G+.png"></a><a href="#"><img src="Images/facebook.png"></a><a href="#"><img src="Images/weibo.png"></a></div></div><div class="box1"><img src="Images/1.png" width="100%" id="test"></div><div class="box3"><a href="login.html">登录</a></div><footer class="footer"><a href="#"><span>©pixiv</span></a><a href="#"><span>使用条款</span></a><a href="#"><span>帮助</span></a><div class="box5"><div class="box4"><a href="#">日本語</a><a href="#">English</a><a href="#">한국어</a><a href="#">繁體中文</a><a href="#">简体中文</a></div><a href="#" class="a1"><span>简体中文ⅴ</span></a></div></footer>
</body></html>
CSS代码:
* {margin: 0;padding: 0;
}/*设置表单input样式*/
input[type="text"],
[type="password"] {box-sizing: border-box;text-align: left;font-size: 15px;height: 2.5em;border-radius: 4px;border: 1px solid #DFEBF2;-web-kit-appearance: none;-moz-appearance: none;display: inline-block;padding: 0 1em;text-decoration: none;width: 100%;color: #757575FF;
}input[name="QZ"] {box-sizing: border-box;text-align: left;font-size: 15px;height: 2em;border-radius: 4px;border: 1px solid whiteb0;-web-kit-appearance: none;-moz-appearance: none;display: inline-block;padding: 0 1em;text-decoration: none;width: 80%;
}input[type="submit"] {box-sizing: border-box;text-align: center;font-size: 15px;height: 3em;border-radius: 4px;-web-kit-appearance: none;-moz-appearance: none;display: inline-block;padding: 0 1em;text-decoration: none;width: 100%;color: white;background-color: #25C6FFFF;border: none;
}/*隐藏滚动条*/
body::-webkit-scrollbar {display: none;
}.box {width: 263px;margin: 0 auto;border: 2px solid white;padding: 50px 50px 0 50px;color: #66ccff;position: fixed;top: 15%;left: 38%;background: #EEEFF0FF;border-radius: 10px;
}.box h1 {font-size: 40px;
}.box h6,
h3 {margin-bottom: 20px;
}.facebook p {font-size: 10px;text-align: center;color: #666666FF;margin-bottom: 20px;
}.facebook {background-color: #FFFFFFFF;width: 100%;height: 80px;border: 1px solid #DFEBF2;margin: 40px 0;padding: 20px 0;
}.facebook a {margin-left: 3px;
}.box1 {text-align: center;
}.form1 {/*height: 50px;*/overflow: hidden;width: 700px;
}.a1 {text-decoration: none;color: white;font-size: 30px;
}.box h1,
h6,
h3 {text-align: center;
}.bun {margin-top: 5px;
}#a1 {text-decoration: none;margin-right: 7px;border: 1px solid #A9A9A9FF;width: 40px;height: 21px;font-size: 15px;display: inline-block;background-color: #ECECECFF;color: black;float: right;
}.box3 a {width: 72px;height: 30px;background-color: #6D7084;color: white;position: fixed;top: 10px;right: 10px;text-decoration: none;border-radius: 4px;font-size: 12px;text-align: center;padding-top: 10px;
}.footer {background-color: #464A4DFF;width: 100%;height: 30px;position: fixed;bottom: 0px;left: 0px;
}.box4 {width: 80px;height: 150px;background-color: #464A4DB6;position: fixed;bottom: 30px;left: 185px;display: none;
}.box4 a {text-decoration: none;font-size: 10px;color: white;display: block;padding: 0 10px;
}.box4>a:hover {background-color: #FFFFFF4A;
}.box5:hover .box4 {display: block;
}.box5 {width: 80px;height: 30px;text-decoration: none;font-size: 10px;margin: 0 15px;color: #A3A5A6FF;line-height: 30px;display: inline-block;position: absolute;
}.box5>a {font-size: 10px;color: #A3A5A6FF;
}.footer>a {text-decoration: none;font-size: 10px;margin: 0 10px;color: #A3A5A6FF;line-height: 30px;
}
JavaScript代码【重点】:
<script>
//禁止图片右键行为->jQuery实现
$('img').bind("contextmenu", function(e) { return false; })
//注册表单验证
function subSheck() {if (email() == true && password() == true) {return true;} else {return false;}
}
//验证邮箱
function email() {var re = /[a-zA-Z0-9]{1,10}@[a-zA-Z0-9]{1,5}\.[a-zA-Z0-9]{1,5}/;var email = document.getElementById("email");if (email.value == "") {alert("请输入电子邮箱!");return false;} else if (re.test(email.value) == false) {alert("请输入合法的邮件地址!");return false;} else {return true;}
}
//验证密码
function password() {var re = /^(?=.*\d)(?=.*[a-zA-Z])[\da-zA-Z]{6,}$/;var password = document.getElementById("password");if (password.value == "") {alert("请输入密码!");return false;} else if (password.value.length < 6) {alert("密码长度至少为6位!");return false;} else if (re.test(password.value) == false) {alert("格式错误,必须包含英文大小写字母和数字!!");return false;} else {return true;}
}
</script>
PHP验证代码:
<?php
echo "";
$servername="localhost";
$username="root";
$password="root";
$dbname="chaldea";
$mail=$_POST["email"];
$conn= new mysqli($servername,$username,$password,$dbname);
if (!$conn) {die("连接失败:".mysqli_connect_error());
}
if ($_POST['submit']) {$mail=$_POST["email"];$password=$_POST["password"];$sql="SELECT mail from master WHERE mail='$mail'";$query=mysqli_query($conn,$sql);$rows=mysqli_num_rows($query);if ($rows>0) {//验证邮箱是否被注册过,如果注册过,则提示去登录echo "<script>alert('邮箱地址已注册,前去登录!');location='javascript:history.back()';</script>";}else{//注册成功则返回登录页面,并提示登录$sql1="INSERT INTO master(mail,password)VALUES('$mail','$password')";echo $sql1;if ($conn->query($sql1)==TRUE) {echo "<script>alert('注册成功,现在去登录!');location.href='login.html';</script>";}else{echo "Error:".$sql1."<br/>".$conn->error;}}
}
$conn->close();?>
结果验证:
验证邮箱:
验证密码:
PHP验证未通过:
PHP验证通过:
『PHP学习笔记』系列九:利用from表单的onSubmit事件进行浏览器端的数据验证相关推荐
- php猴子吃桃子问题n天,『PHP学习笔记』系列四:利用函数递归调用思想解决【斐波那契数列】问题和【猴子吃桃问题】问题...
什么是函数递归思想? 递归思想:把一个相对复杂的问题,转化为一个与原问题相似的,且规模较小的问题来求解. 递归方法只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量. 但在 ...
- 『PHP学习笔记』系列十:PHP制作验证码
引入: 定义:验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Humans Apart ...
- 『Python学习笔记』Mac系统汇总:终端文件显示不同颜色Pycharm代码模板JAVA环境变量
Mac系统:终端文件显示不同颜色&Pycharm代码模板&JAVA环境变量! 文章目录 一. 显示不同颜色 二. mac电脑怎么设置触控板拖动 三. mac系统中termius终端中文 ...
- 2017-2-15从0开始前端学习笔记(HTML)-图片-表格-表单
2017-2-15从0开始前端学习笔记-图片-表格-表单 标签 图片 图片<img src="#" alt="文本说明 不能加载图片时显示" title= ...
- Web后端学习笔记 Flask(8) WTForms 表单验证,文件上传
Flask-WTF是简化了WTForms操作的一个第三方库.WTForms表单的两个主要功能是验证用户提交数据的合法性以及渲染模板.同时还包含一些其他的功能.例如CSRF保护,文件上传等功能,安装fl ...
- Struts2学习笔记(十八) 防止表单重复提交
概述 有些时候,我们在想某个网页提交了信息之后,由于某些原因,我们会重复点击提交,或者刷新页面,或者是在提交页面呈现之后点击后退按钮,从而导致这些表单数据被重复提交.在大多数情况下我们是不希望这种情况 ...
- 『Python学习笔记』Python实现并发编程(补充joblibpymysql)
Python实现并发编程(补充joblib&pymysql) 文章目录 一. 并发编程知识点 1.1. 为什么引入并发编程 1.2. 如何选择多线程多进程多协程 1.2.1. 什么是CPU密集 ...
- 『NLP学习笔记』TextCNN文本分类原理及Pytorch实现
TextCNN文本分类原理及Pytorch实现 文章目录 一. TextCNN网络结构 1.1. CNN在文本分类上得应用 1.2. 回顾CNN以及Pytorch解析 1.2.1. CNN特点 1.2 ...
- 『Python学习笔记』Git的使用教程
Git的使用教程 文章目录 一. Git介绍 1.1. 安装和配置 1.2. git工作流程 1.3. Git 工作区.暂存区和版本库 1.4. Git 创建仓库 二. Git基本操作 2.1. 远程 ...
最新文章
- Android 图片缓存之内存缓存技术LruCache,软引用
- 论坛答疑SQL(二)
- 数据结构之稀疏数组 - SparseArray
- python空集_玩转Python集合,这一篇就够了!
- shift键的十一个妙用
- 2011年吉林大学计算机研究生机试真题
- 左神算法:二叉树的按层打印与ZigZag打印(Java版)
- 图解Javascript——作用域、作用域链、闭包
- python找钱_python 递归 找零钱
- 理解Netty中的Zero-copy
- OPNET常用编译器使用实例和相关问题
- 如何用计算机录视频,如何在电脑上录制正在播放的视频?原来方法这么简单
- 大学期间应当做的三件事
- 协方差与相关系数介绍
- css文字抖动解决办法
- MinMax极小极大算法 (The Minimax Algorithm)
- 高通modem侧新增AT命令
- c语言在函数内部宏定义,简单讲解C++的内部和外部函数以及宏的定义
- 2022年12月英语六级预测范文—预测范文:人生哲理、人生
- nmap常用命令/使用教程
热门文章
- mysql8.0 wordpress_2008Server R2 部署IIS+MySql8.0+PHP7.4+WordPress5.4 - 兔子街
- Scrapy爬取某装修网站部分装修效果图
- Texture Filtering
- Vue生命周期中mounted、created、methods、computed、watched等的区别
- IMX6ULL 开发板 UART3串口驱动,并与压力传感器通讯,获取压力值
- JS面试——宏任务与微任务
- 3.4 页面置换算法
- 音质好的蓝牙耳机有哪些?音质最好的蓝牙耳机排行
- shodan的使用基本教程
- 三星手机业务意外增长但增量不增收,利润增长依然靠芯片