php从入门到精通 php从入门到精通PHP是什么php环境搭建php echo/print 打印输出PHP date()函数:日期和时间PHP语法PHP 变量PHP 常用数据类型PHP常量PHP运算符PHP if语句PHP Switch语句PHP for和foreach 循环PHP while 循环PHP退出循环PHP 函数PHP 类与对象PHP命名空间PHP超全局变量PHP 表单 PHP表单提交PHP 表单验证PHP 日常操作 PHP多维数组PHP Include和require用法PHP 打开/读取/输出/关闭文件PHP 创建/写入文件PHP 上传文件PHP 复制/移动/删除文件PHP判断目录文件是否存在PHP获取文件属性和权限PHP cookiePHP Sessionphp socketPHP Mysql数据库 创建/选择/删除Mysql数据库创建/删除Mysql数据表修改/重命名Mysql数据表Mysql数据管理PHP 连接MySQL数据库PHP 创建MySQL数据库PHP创建Mysql数据表PHP插入Mysql数据PHP查询Mysql数据PHP MySQL Order By排序PHP MySQL UPDATE更新数据PHP MySQL Delete删除数据

PHP 表单验证

之前章节有对表单讲解过,是分html和php文件实现的,html提交php接受,考虑到如果用户填写错误或者不规范,我们可以提醒,不用的到跳转之后再提醒,这里就用一个文件处理,在php文件嵌套html代码,from标签和from里面的元素是属性页面文件html代码,需要了解html。

index.php代码:

<!DOCTYPE HTML> 
<html>
<head>
<meta charset="UTF-8">
<style>
.error {color: #FF0000;}
</style>
</head>
<body> 

<?php
$nameErr = $emailErr = "";
$name = $email = $gender = $comment = $website = $associator= $road ="" ;

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   if (empty($_POST["name"])) {
     $nameErr = "姓名是必填的";
   } else {
     $name = test_input($_POST["name"]);
     // 检查姓名是否包含字母和空白字符
     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["comment"])) {
     $comment = "";
   } else {
     $comment = test_input($_POST["comment"]);
   }

   $website = test_input($_POST["website"]);
   $gender = test_input($_POST["gender"]);
   $associator = $_POST["associator"];
   $road = $_POST["road"];

}

function test_input($data) {
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
}
?>

<h2>PHP 表单验证实例</h2>
<p><span class="error">* 必需的字段</span></p>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
   名称:<input type="text" name="name">
   <span class="error">* <?php echo $nameErr;?></span>
   <br><br>
   email:<input type="text" name="email">
   <span class="error">* <?php echo $emailErr;?></span>
   <br><br>
   网址:<input type="text" name="website">
   <br><br>
   会员:<select name="associator">
				<option value="yes">是</option>
				<option value="no" selected="">否</option>								

	
		 </select>
   <br><br>
   了解途径:
   <input type="checkbox" name="road[]" value="on-line" checked="">线上
   <input type="checkbox" name="road[]" value="Under line">线下
   <br><br>
   评论:<textarea name="comment" rows="5" cols="40"></textarea>
   <br><br>
   性别:
   <input type="radio" name="gender" value="female" checked="">女性
   <input type="radio" name="gender" value="male">男性
   
   <br><br>
   <input type="submit" name="submit" value="提交"> 
</form>

<?php
  if(empty($nameErr) and empty($emailErr)){
    //只有在用户填写符合规则的数据才显示
    echo "<h2>您的输入:</h2>";
    echo "名称:".$name;
    echo "<br>";
    echo "email:".$email;
    echo "<br>";
    echo "网址:".$website;
    echo "<br>";
    echo "会员:".$associator;
    echo "<br>";
    echo "了解途径:";
    print_r($road);
    echo "<br>";
    echo "评论:".$comment;
    echo "<br>";
    echo "性别:".$gender;
  }
?>

</body>
</html>

现在我们看看from表单有那些元素:

表单

表单的标签对是<from></from>,表单的元素都放在from标签对里,表单的 HTML 代码是这样的:

<form method="" action=""> </from>

文本字段

名称、email和 网址 属于文本输入元素,评论字段是文本框。HTML 代码是这样的:

名称:<input type="text" name="name">
email:<input type="text" name="email">
网址:<input type="text" name="website">
评论:<textarea name="comment" rows="5" cols="40"></textarea>

单选按钮

性别 字段是单选按钮,HTML 代码是这样的:

性别:
 <input type="radio" name="gender" value="female" checked="">女性
 <input type="radio" name="gender" value="male">男性

多选按钮

了解途径 元素是多选按钮,HTML代码是这样的:

了解途径:
   <input type="checkbox" name="road[]" value="on-line" checked="">线上
   <input type="checkbox" name="road[]" value="Under line">线下

下拉列表

会员 元素是下拉列表,HTML代码是这样的:

会员:           <select name="associator">
				<option value="yes">是</option>
				<option value="no" selected="">否</option>									
		 </select>

按钮

提交 元素是按钮,HTML代码是这样的:

<input type="submit" name="submit" value="提交">

什么是 $_SERVER["PHP_SELF"] 变量?

$_SERVER["PHP_SELF"] 是一种超全局变量,它返回当前执行脚本的文件名。因此,$_SERVER["PHP_SELF"] 将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。


什么是 htmlspecialchars() 函数?

htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 &lt; 和 &gt; 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。