PHP实现表单完整验证

一、表单实现样例

在表单中利用POST 提交信息,之后获取到后进行输出。

二、源码实现

在源码中有详细注释

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4 <meta charset="UTF-8">
  5 <title>表单验证网页</title>
  6 <style>
  7 .error {
  8     color: #FF0000;
  9 }
 10 </style>
 11 </head>
 12 <body>
 13     <!-- php脚本对用户输入进行判断 -->
 14 <?php
 15 // 定义初始变量
 16 $nameErr = $emailErr = $genderErr = $websiteErr = ";";
 17 $name = $email = $gender = $website = $comment = $speciality = "";
 18 $hobbies = NULL;
 19 if ($_SERVER[‘REQUEST_METHOD‘] == "POST") {
 20     // 对name输入进行验证
 21     if (empty($_POST["name"])) {
 22         $nameErr = "名字不能为空";
 23     } else {
 24         $name = test_input($_POST["name"]);
 25         if (! preg_match("/^[a-zA-Z ]*$/", $name)) {
 26             // 进行正则表达式的匹配,如果无法匹配,就设置$nameErr
 27             $nameErr = "只允许字母和空格";
 28         }
 29     }
 30     // 同理对email进行验证
 31     if (empty($_POST["email"])) {
 32         $emailErr = "邮箱不能为空";
 33     } else {
 34         $email = test_input($_POST["email"]);
 35         if (! preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) {
 36             $emailErr = "邮箱格式不正确";
 37         }
 38     }
 39     // 个人网站
 40     if (empty($_POST["website"])) {
 41         $website = "";
 42     } else {
 43         $website = test_input($_POST["website"]);
 44         if (! preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $website)) {
 45             $websiteErr = "网站格式非法";
 46         }
 47     }
 48     // 简介部分
 49     if (empty($_POST["comment"])) {
 50         $comment = "";
 51     } else {
 52         $comment = test_input($_POST["comment"]);
 53     }
 54     // 性别
 55     if (empty($_POST["gender"])) {
 56         $genderErr = "性别是必需的";
 57     } else {
 58         $gender = test_input($_POST["gender"]);
 59     }
 60     // 专业
 61     if (empty($_POST["speciality"])) {
 62         $speciality = "";
 63     } else {
 64         $speciality = $_POST["speciality"];
 65     }
 66     // 爱好
 67     if (isset($_POST["hobbies"])) {
 68         $hobbies = $_POST["hobbies"];
 69     }
 70 }
 71
 72 // 通过这个函数来对输入数据进行检测,防止CSS注入脚本攻击
 73 function test_input($data)
 74 {
 75     $data = trim($data); // 去除用户输入中的空格、tab、换行符等信息
 76     $data = stripcslashes($data); // 去除输入中的"/"反斜杠,防止有转义符的存在
 77     $data = htmlspecialchars($data); // 再次将数据转回html转义代码
 78     return $data;
 79 }
 80 ?>
 81
 82 <h2>PHP 表单验证实例</h2>
 83     <p>
 84         <span class="error">* 必需字段。</span>
 85     </p>
 86 <!--     表单内容提交后均有记录,提交后不会清空当前页面的所有内容
 87         能够实现再次填写。
 88  -->
 89     <form method="post"
 90         action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
 91         名字: <input type="text" name="name" value="<?php echo $name;?>"> <span
 92             class="error">* <?php echo $nameErr;?></span> <br> <br> E-mail: <input
 93             type="text" name="email" value="<?php echo $email;?>"> <span
 94             class="error">* <?php echo $emailErr;?></span> <br> <br> 网址: <input
 95             type="text" name="website" value="<?php echo $website;?>"> <span
 96             class="error"><?php echo $websiteErr;?></span> <br> <br> 备注:
 97         <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
 98         <br> <br> 性别: <input type="radio" name="gender"
 99             <?php if (isset($gender) && $gender=="female") echo "checked";?>
100             value="female">女 <input type="radio" name="gender"
101             <?php if (isset($gender) && $gender=="male") echo "checked";?>
102             value="male">男 <span class="error">* <?php echo $genderErr;?></span><br>
103         专业: <select name="speciality" id="select">
104             <option value=""
105                 <?php if (isset($speciality) && $speciality=="") echo "selected";?>>请选择</option>
106             <option value="java"
107                 <?php if (isset($speciality) && $speciality=="java") echo "selected";?>>Java</option>
108             <option value="python"
109                 <?php if (isset($speciality) && $speciality=="python") echo "selected";?>>Python</option>
110             <option value="android"
111                 <?php if (isset($speciality) && $speciality=="android") echo "selected";?>>Android</option>
112             <option value="ios"
113                 <?php if (isset($speciality) && $speciality=="ios") echo "selected";?>>Ios</option>
114         </select><br> 爱好: <br> <input type="checkbox" name="hobbies[]"
115             value="game"
116             <?php if (isset($hobbies) && in_array("game", $hobbies)) echo "checked";?>>打游戏<br>
117         <input type="checkbox" name="hobbies[]" value="ball"
118             <?php if (isset($hobbies) && in_array("ball", $hobbies)) echo "checked";?>>打球
119         <br> <input type="checkbox" name="hobbies[]" value="music"
120             <?php if (isset($hobbies) && in_array("music", $hobbies)) echo "checked";?>>听音乐<br>
121
122         <br> <br> <input type="submit" name="submit" value="Submit"
123             onclick="selected()">
124     </form>
125
126 <?php
127 echo "<h2>您输入的内容是:</h2>";
128 echo "姓名", $name;
129 echo "<br>";
130 echo "邮箱", $email;
131 echo "<br>";
132 echo "网站", $website;
133 echo "<br>";
134 echo "简介", $comment;
135 echo "<br>";
136 echo "性别", $gender;
137 echo "<br>";
138 echo "专业", $speciality;
139 echo "<br>";
140 echo "爱好";
141 if (is_array($hobbies)) {
142     for ($i = 0; $i < count($hobbies); $i ++) {
143         echo $hobbies[$i], ",";
144     }
145 }
146 ?>
147 </body>

原文地址:https://www.cnblogs.com/null-/p/9717313.html

时间: 2024-10-30 03:23:46

PHP实现表单完整验证的相关文章

表单的验证:客户端验证和服务器端验证

表单的验证:客户端验证和服务器端验证 表单的确认 客户端确认: 减少服务器负载 缩短用户等待时间 兼容性难 服务器端确认: 统一确认 兼容性强 服务器负载重 客户端验证例子 首先建立一个表单,在其提交时用JavaScript方法进行验证,若该方法返回true,则进行表单的提交,若返回false,则表单不提交. <!-- 表单提交时执行JavaScript方法validate(),如果该方法返回false,那么表单是不会提交的 --> <form onsubmit="return

PHP学习记录之表单的验证

1.表单的验证的小案例 HTML表单 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-e

HTML 表单和验证事件

HTML 表单和验证事件 1.表单验证<form></form> (1)非空验证(去空格) (2)对比验证(跟一个值对比) (3)范围验证(根据一个范围进行判断) (4)固定格式验证:电话号码,身份证号,邮箱,信用卡号等的验证:需要用到正则表达式来进行验证. (5).其它验证 2.正则表达式 用符号来描述书写规则:/ 中间写正则表达式 / ^ :匹配开头,$:匹配结尾 : /^ve/以ve开头的 /ve$/以ve结尾 \d:一个任意的数字 \w:一个任意的数字或字母 \s: {n}

Thinkphp表单自动验证

之前项目经常用到,没做总结. 自动验证是Thinphp模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 原理: create()方法收集表单($_POST)信息并返回,同时触发表单自动验证,过滤非法字段, 在控制器中使用create()方法,(返回值为true/false),会自动触发模型类中的$_validate属性(为父类Model中的方法,在子类Model中重写),在$_validate中自定义验证规则(验证规则下面会详细说明),当create()方

HTML5表单及其验证

随笔- 15 文章- 1 评论- 115 HTML5表单及其验证 HTML表单一直都是Web的核心技术之一,有了它我们才能在Web上进行各种各样的应用.HTML5 Forms新增了许多新控件及其API,方便我们做更复杂的应用,而不用借助其它Javascript框架,先说下表单的几个基本知识点: 表单仍是以<form>元素作为容器,我们可在其中设置基本的提交特性: 当用户提交页面时,表单仍然向服务器发送表单控件的值: 之前老版本中的表单控件,如text radio checkbox等等,都可以按

Validform和aui2.0结合使用的表单自定义验证提示和列表页异步获取数据Demo

二.添加自定义验证演示       Validform验证提示大多都是在输入框或下拉框的右边或下面.感觉就是不美观,特别是表单字段少的时候,这种在相应对象旁边的提示就没必要了,      它会给人一种不友好的感觉(只是自己的感觉).所以下面写了三种添加演示,希望大家能给出建议,以免下次用起来纠结,不知道用哪种好.        表单验证插件是我们经常使用的Validform_v5.3.2_min.js.先上添加1演示的表单验证js代码,这里我设置了点击提交按钮后才验证.其他添加演示的区别不大,详

jQuery表单提交验证

<!DOCTYPE html><html> <head> <title>表单提交验证功能</title> <meta charset="utf-8"/> <script src="scripts/jquery-1.11.3.js"></script> </head> <body> <fieldset> <legend>用户注

thinkPHP 表单自动验证功能

昨天晚上我们老大叫我弄表单自动验证功能,愁了半天借鉴了好多官网的知识,才出来,诶,总之分享一下我自己的成果吧! thinkphp 在Model基类为我们定义了自动验证的函数和正则表达式,我们只需要在对应的数据库表的模型类下建立$_validate属性就可以了. 1.我们找到Model基类,可以看到 protected $_validate       = array();  // 自动验证定,它是数组类型的,下面在对应数据模型文件定义它: 2. public function CheckVeri

(基于织梦)表单提交验证

HTML页面内部写js代码,通过正则表达式验证: <!--表单正则表达式验证--><script>//创建验证函数check function check() { //获取表单中id为name的元素的value值 name=document.getElementById("name").value; //判断获取到的value值为空的时候,输出提示"请输入姓名",返回 if(name=="") { alert("