在用户点击提交按钮后,为确保字段值是否输入正确,我们在HTML的input元素中插添加PHP脚本, 各字段名为: name, email, 和 website。 在备注中的 textarea 字段中,我们将脚本放于 <textarea> 和 </textarea> 标签之间。
PHP脚本输出值为: $name, $email, $website, 和 $comment 变量。
然后,我们同样需要检查被选中的单选按钮, 对于这一点,我们 必须设置好checked属性(不是radio按钮的 value 属性) :
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> |
名字: <input type="text" name="name" value="<?php echo $name;?>"> |
<span class="error">* <?php echo $nameErr;?></span> |
<br><br> |
E-mail: <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> |
备注: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea> |
<br><br> |
性别: |
<input type="radio" name="gender" <?php if (isset($gender) && $gender=="female") echo "checked";?> value="female">女 |
<input type="radio" name="gender" <?php if (isset($gender) && $gender=="male") echo "checked";?> value="male">男 |
<span class="error">* <?php echo $genderErr;?></span> |
<br><br> |
<input type="submit" name="submit" value="Submit"> |
</form> |
以下是完整的PHP表单验证实例代码:
<!DOCTYPE HTML> |
<html> |
<head> |
<meta charset="utf-8"> |
<title>芝麻教程(web3.xin)</title> |
<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 = "非法邮箱格式"; |
} |
} |
if (empty($_POST["website"])) |
{ |
$website = ""; |
} |
else |
{ |
$website = test_input($_POST["website"]); |
// 检测 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" value="<?php echo $name;?>"> |
<span class="error">* <?php echo $nameErr;?></span> |
<br><br> |
E-mail: <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> |
备注: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea> |
<br><br> |
性别: |
<input type="radio" name="gender" <?php if (isset($gender) && $gender=="female") echo "checked";?> value="female">女 |
<input type="radio" name="gender" <?php if (isset($gender) && $gender=="male") echo "checked";?> value="male">男 |
<span class="error">* <?php echo $genderErr;?></span> |
<br><br> |
<input type="submit" name="submit" value="Submit"> |
</form> |
<?php |
echo "<h2>您输入的内容是:</h2>"; |
echo $name; |
echo "<br>"; |
echo $email; |
echo "<br>"; |
echo $website; |
echo "<br>"; |
echo $comment; |
echo "<br>"; |
echo $gender; |
?> |
</body> |
</html> |