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_SELF的安全问题
Sep 05 PHP
学习php笔记 字符串处理
Oct 19 PHP
PHP通用检测函数集合
Feb 08 PHP
php批量添加数据与批量更新数据的实现方法
Dec 16 PHP
详解Window7 下开发php扩展
Dec 31 PHP
php上传图片生成缩略图(GD库)
Jan 06 PHP
yii2中使用Active Record模式的方法
Jan 09 PHP
PHPExcel笔记, mpdf导出
May 03 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
Oct 22 PHP
让Laravel API永远返回JSON格式响应的方法示例
Sep 05 PHP
PHP利用百度ai实现文本和图片审核
May 08 PHP
laravel 错误处理,接口错误返回json代码
Oct 25 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
星际争霸中的对战模式介绍
2020/03/04 星际争霸
PHP 和 XML: 使用expat函数(二)
2006/10/09 PHP
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
关于js datetime的那点事
2011/11/15 Javascript
js select option对象小结
2013/12/20 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
javascript实现获取浏览器版本、浏览器类型
2015/12/02 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
Javascript实现base64的加密解密方法示例
2017/06/27 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
python增加图像对比度的方法
2019/07/12 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
COS美国官网:知名服装品牌
2019/04/08 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
就业自荐书
2013/12/05 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
庆六一活动总结
2014/08/29 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
公司会议开幕词
2016/03/03 职场文书
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技
疑《守望先锋2》A测截图泄露 或将推出新模式、新界面
2022/04/03 其他游戏
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js