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函数
Dec 06 PHP
PHP 柱状图实现代码
Dec 04 PHP
在字符串指定位置插入一段字符串的php代码
Feb 16 PHP
PHP无敌近乎加密方式!
Jul 17 PHP
深入探讨<br />和 \r\n两者有什么区别??
Jun 05 PHP
php class中public,private,protected的区别以及实例分析
Jun 18 PHP
php session劫持和防范的方法
Nov 12 PHP
php使用正则过滤js脚本代码实例
May 10 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
Dec 15 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
Jan 12 PHP
PHP7 list() 函数修改
Mar 09 PHP
如何理解PHP核心特性命名空间
May 28 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
利用static实现表格的颜色隔行显示
2006/10/09 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
angularjs基础教程
2014/12/25 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
Vue自定义组件双向绑定实现原理及方法详解
2020/09/03 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
python测试驱动开发实例
2014/10/08 Python
详解在Python程序中自定义异常的方法
2015/10/16 Python
Python环境变量设置方法
2016/08/28 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
python 自动重连wifi windows的方法
2018/12/18 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
2019/12/04 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
必须要使用游标的SQL语句有那些
2012/05/07 面试题
什么是Web Service?
2012/07/25 面试题
教育系毕业生中文求职信范文
2013/10/06 职场文书
平面网站制作专科生的自我评价分享
2013/12/11 职场文书
驾驶员岗位职责
2014/01/29 职场文书
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
2014年中学生检讨书大全
2014/10/09 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
小学教研工作总结2015
2015/05/13 职场文书