代码:
<!DOCTYPE html>
<html>
<head>
<title>PHP 设置表单颜色</title>
<style>
input[type=text], select {
padding: 12px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
input[type=submit] {
background-color: #4CAF50;
color: white;
padding: 14px 20px;
margin: 8px 0;
border: none;
border-radius: 4px;
cursor: pointer;
}
</style>
</head>
<body>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// 获取表单数据
$name = test_input($_POST["name"]);
$email = test_input($_POST["email"]);
// 判断表单数据是否合法
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "只允许字母和空格";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "无效的 email 格式";
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<h2>PHP 设置表单颜色</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<label for="name">姓名:</label>
<input type="text" id="name" name="name" style="background-color: <?php echo isset($nameErr) ? '#ffdddd' : ''; ?>" value="<?php echo isset($name) ? $name : ''; ?>">
<span class="error"><?php echo isset($nameErr) ? $nameErr : ''; ?></span>
<br><br>
<label for="email">邮箱:</label>
<input type="text" id="email" name="email" style="background-color: <?php echo isset($emailErr) ? '#ffdddd' : ''; ?>" value="<?php echo isset($email) ? $email : ''; ?>">
<span class="error"><?php echo isset($emailErr) ? $emailErr : ''; ?></span>
<br><br>
<input type="submit" value="提交">
</form>
</body>
</html>
解决思路:
要设置表单颜色,可以通过在表单标签上添加 style 属性,并使用 PHP 的条件语句控制样式。
在上述代码中,我们利用了 PHP 的 isset 函数来判断变量是否存在,从而决定是否改变表单的背景颜色。当某个输入项的数据不合法时,就将其背景颜色设为红色。同时,为了避免用户在刷新页面后失去填写的数据,我们使用了 PHP 的 htmlspecialchars 函数对输入数据进行转义处理,并将其赋值给相应的输入框。
总之,在设置表单颜色时需要注意以下几点:
-
需要先判断输入项的数据是否合法,再根据结果设置颜色。
-
在设置样式时,需要将样式代码放在表单标签的 style 属性中。
-
在用户刷新页面后,需要将已经填写的数据显示到相应的输入框中。