PHP 表单验证
之前章节有对表单讲解过,是分html和php文件实现的,html提交php接受,考虑到如果用户填写错误或者不规范,我们可以提醒,不用的到跳转之后再提醒,这里就用一个文件处理,在php文件嵌套html代码,from标签和from里面的元素是属性页面文件html代码,需要了解html。
index.php代码:HTML>
.error {color: #FF0000;}
$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;
}
?>
PHP 表单验证实例
* 必需的字段
">名称:
* <?php echo $nameErr;?>
email:
* <?php echo $emailErr;?>
网址:
会员:
是
否
了解途径:
线上
线下
评论:
性别:
女性
男性
if(empty($nameErr) and empty($emailErr)){
//只有在用户填写符合规则的数据才显示
echo "
您的输入:
";echo "名称:".$name;
echo "
";
echo "email:".$email;
echo "
";
echo "网址:".$website;
echo "
";
echo "会员:".$associator;
echo "
";
echo "了解途径:";
print_r($road);
echo "
";
echo "评论:".$comment;
echo "
";
echo "性别:".$gender;
}
?>
现在我们看看from表单有那些元素:
表单
表单的标签对是,表单的元素都放在from标签对里,表单的 HTML 代码是这样的:
文本字段
名称、email和 网址 属于文本输入元素,评论字段是文本框。HTML 代码是这样的:名称:
email:
网址:
评论:
单选按钮
性别 字段是单选按钮,HTML 代码是这样的:性别:
女性
男性
多选按钮
了解途径 元素是多选按钮,HTML代码是这样的:了解途径:
线上
线下
下拉列表
会员 元素是下拉列表,HTML代码是这样的:会员:
是
否
按钮
提交 元素是按钮,HTML代码是这样的:
什么是 $_SERVER["PHP_SELF"] 变量?
$_SERVER["PHP_SELF"] 是一种超全局变量,它返回当前执行脚本的文件名。因此,$_SERVER["PHP_SELF"] 将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。
什么是 htmlspecialchars() 函数?
htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 < 和 > 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。