我如何制作一些带有验证的表单,以突出显示具有无效输入或空的字段?
最佳答案
基本思想是:
- 如果表单已提交,请检查数据
- 如果没问题,则使用该数据
- 否则,重新显示表单
注意:首先,您在服务器端完成所有这些操作:
- 用户提交表单,
- 数据发送到服务器
- 服务器分析该数据
- 并在必要时重新显示表单
下面是演示基本思想的快速代码部分:
<?php
// By default, no error
$errors = array(
'field1' => false,
);
// And all field have empty values
$values = array(
'field1' => isset($_GET['field1']) ? $_GET['field1'] : "",
);
if (isset($_GET['submit'])) {
// The form has been submitted
// => Check if all data is here
if (!isset($_GET['field1']) || empty($_GET['field1'])) {
$errors['field1'] = true;
}
}
// If there is no error on any field, then :
// - save the data
// - redirect to a page that says "data saved"
// Else, continue, and re-display the form
?>
<style type="text/css">
.error {
border: 1px solid red;
}
</style>
<form action="temp.php" method="get">
<input type="text" name="field1" <?php if ($errors['field1'] == true) {echo 'class="error"';}?> value="<?php echo htmlspecialchars($values['field1'], ENT_COMPAT, 'UTF-8'); ?>" />
<input type="submit" name="submit" value="Go !" />
</form>
一些注意事项:
- 如果您的表单旨在创建/修改数据,您将使用
POST
而不是GET
(但GET
是更容易测试) - 当然,您需要比这更多的 HTML:我只发布了一个框架;-)
- 您还需要更多的 PHP 代码来保存数据、重定向等。
当此解决方案有效时,您可以使用一些 JavaScript 对其进行增强,以执行第一层检查,避免在出现错误时往返服务器。
但是您仍然会在服务器上保留验证:客户端上的验证(Javascript)是为了让您的网站更加用户友好,但是JS并不总是启用,并且可以伪造表单 - 因此您始终需要验证服务器上的数据!
关于php - 验证并突出显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5282123/