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在特殊字符前加斜杠的实现代码
Jul 17 PHP
深入解析php之apc
May 15 PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
Jan 14 PHP
php的hash算法介绍
Feb 13 PHP
php 表单提交大量数据发生丢失的解决方法
Mar 03 PHP
php获取QQ头像并显示的方法
Dec 23 PHP
php实现微信公众号无限群发
Oct 11 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
Mar 15 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 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下一个非常全面获取图象信息的函数
2008/11/20 PHP
Php Image Resize图片大小调整的函数代码
2011/01/17 PHP
PHP操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
2016/09/26 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
浅谈node的事件机制
2017/10/09 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
Vue 事件处理操作实例详解
2019/03/05 Javascript
JS删除String里某个字符的方法
2021/01/06 Javascript
JavaScript实现旋转木马轮播图
2020/03/16 Javascript
jquery轮播图插件使用方法详解
2020/07/31 jQuery
用Python实现筛选文件脚本的方法
2018/10/27 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
高中微机老师自我鉴定
2014/02/16 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
年会搞笑主持词串词
2014/03/24 职场文书
日化店促销方案
2014/03/26 职场文书
护士节策划方案
2014/05/19 职场文书
委托书怎样写
2014/08/30 职场文书
个人廉洁自律总结
2015/03/06 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书