PHP 表单验证 E-mail 和 URL
本节展示如何验证名字、电邮和 URL。
PHP - 验证名字
以下代码展示的简单方法检查 name 字段是否包含字母和空格。如果 name 字段无效,则存储一条错误消息:
$name = test_input($_POST["name"]);if (!preg_match("/^[a-zA-Z ]*$/",$name)) {$nameErr = "只允许字母和空格!";}
注释:preg_match() 函数检索字符串的模式,如果模式存在则返回 true,否则返回 false。
PHP - 验证 E-mail
以下代码展示的简单方法检查 e-mail 地址语法是否有效。如果无效则存储一条错误消息:
$email = test_input($_POST["email"]);if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {$emailErr = "无效的 email 格式!";}
PHP - 验证 URL
以下代码展示的方法检查 URL 地址语法是否有效(这条正则表达式同时允许 URL 中的斜杠)。如果 URL 地址语法无效,则存储一条错误消息:
$website = test_input($_POST["website"]);if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {$websiteErr = "无效的 URL";}
PHP - 验证 Name、E-mail、以及 URL
现在,脚本是这样的:
<!DOCTYPE HTML><html><head><style>.error {color: #FF0000;}</style></head><body><?php// 定义变量并设置为空值$nameErr = $emailErr = $genderErr = $websiteErr = "";$name = $email = $gender = $comment = $website = "";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["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";}}if (empty($_POST["comment"])) {$comment = "";} else {$comment = test_input($_POST["comment"]);}if (empty($_POST["gender"])) {$genderErr = "性别是必选的";} else {$gender = test_input($_POST["gender"]);}}function test_input($data) {$data = trim($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>电邮:<input type="text" name="email"><span class="error">* <?php echo $emailErr;?></span><br><br>网址:<input type="text" name="website"><span class="error"><?php echo $websiteErr;?></span><br><br>评论:<textarea name="comment" rows="5" cols="40"></textarea><br><br>性别:<input type="radio" name="gender" value="female">女性<input type="radio" name="gender" value="male">男性<span class="error">* <?php echo $genderErr;?></span><br><br><input type="submit" name="submit" value="提交"></form><?phpecho "<h2>您的输入:</h2>";echo $name;echo "<br>";echo $email;echo "<br>";echo $website;echo "<br>";echo $comment;echo "<br>";echo $gender;?></body></html>
接下来向您讲解如何防止表单在用户提交表单后清空所有输入字段。