php编程每天必学之表单验证


Posted in PHP onMarch 01, 2016

本文实例讲解了php表单验证的实现方法,分享给大家供大家参考,具体内容如下

1.PHP表单处理
welcome.html

<html>
<body>
  <form action="welcome.php" method="post">
    Name: <input type="text" name="name"><br>
    E-mail: <input type="text" name="email"><br>
    <input type="submit">
  </form>
</body>
</html>

welcome.php

<html>
<body>
<!--PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据(form-data)-->

Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>

</body>
</html>

2.PHP表单验证完整实例

<html>
<head>
</head>
<body> 

<?php
// 定义变量并设置为空值
$nameErr = $emailErr = $websiteErr = "";
$name = $email = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
   $nameErr = "姓名是必填的";
  } else {
   $name = test_input($_POST["name"]);
   // 检查姓名是否包含字母和空白字符
   //preg_match() 函数检索字符串的模式,如果模式存在则返回 true,否则返回 false。
   if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
    $nameErr = "只允许字母和空格"; 
   }
  }
  
  if (empty($_POST["email"])) {
   $emailErr = "电邮是必填的";
  } else {
   $email = test_input($_POST["email"]);
   // 检查电子邮件地址语法是否有效
   if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
    $emailErr = "无效的 email 格式"; 
   }
  }
   
  if (empty($_POST["website"])) {
   $website = "";
  } else {
   $website = test_input($_POST["website"]);
   // 检查 URL 地址语法是否有效(正则表达式也允许 URL 中的斜杠)
   if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
    $websiteErr = "无效的 URL"; 
   }
  }

}

function test_input($data) {
  //去除用户输入数据中不必要的字符(多余的空格、制表符、换行)
  $data = trim($data);
  //删除用户输入数据中的反斜杠(\)
  $data = stripslashes($data);
  //把特殊字符转换为 HTML 实体
  $data = htmlspecialchars($data);
  return $data;
}
?>

<h2>PHP 验证实例</h2>
<p><span class="error">* 必需的字段</span></p>
<!--htmlspecialchars() 函数把特殊字符转换为 HTML 实体。-->
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
  <!--value:保留表单中的值-->
  姓名:<input type="text" name="name" value="<?php echo $name;?>">
  <span class="error">* <?php echo $nameErr;?></span>
  <br><br>
  邮箱:<input type="text" name="email" value="<?php echo $email;?>">
  <span class="error">* <?php echo $emailErr;?></span>
  <br><br>
  网址:<input type="text" name="website" value="<?php echo $website;?>">
  <span class="error"><?php echo $websiteErr;?></span>
  <br><br>
  <input type="submit" name="submit" value="提交"> 
</form>

<?php
echo "<h2>您的输入:</h2>";
echo $name;
echo "<br>";
echo $email;
echo "<br>";
echo $website;
echo "<br>";
?>

</body>
</html>

希望本文所述对大家学习php程序设计有所帮助。

PHP 相关文章推荐
php pack与unpack 摸板字符字符含义
Oct 29 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 PHP
理解php依赖注入和控制反转
May 11 PHP
Yii视图CGridView列表用法实例分析
Jul 12 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
Apr 05 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
Jun 12 PHP
php fread函数使用方法总结
May 28 PHP
laravel 获取某个查询的查询SQL语句方法
Oct 12 PHP
laravel框架中表单请求类型和CSRF防护实例分析
Nov 23 PHP
实例讲解PHP设计模式编程中的简单工厂模式
Feb 29 #PHP
PHP Try-catch 语句使用技巧
Feb 28 #PHP
linux下为php添加iconv模块的方法
Feb 28 #PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 #PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 #PHP
简单谈谈PHP中strlen 函数
Feb 27 #PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 #PHP
You might like
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
php 购物车的例子
2009/05/04 PHP
php 静态变量与自定义常量的使用方法
2010/01/26 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
封装的原生javascript弹出层代码
2010/09/24 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
2020/03/30 Python
Python魔术方法专题
2020/06/19 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
安德玛比利时官网:Under Armour比利时
2019/08/28 全球购物
优质服务活动实施方案
2014/05/02 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫