php - 验证并突出显示错误

标签 php mysql

我如何制作一些带有验证的表单,以突出显示具有无效输入或空的字段?

最佳答案

基本思想是:

  • 如果表单已提交,请检查数据
  • 如果没问题,则使用该数据
  • 否则,重新显示表单

注意:首先,您在服务器端完成所有这些操作:

  • 用户提交表单,
  • 数据发送到服务器
  • 服务器分析该数据
  • 并在必要时重新显示表单


下面是演示基本思想的快速代码部分:

<?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/

相关文章:

java - Android - 如何使用登录名和密码正确查询在线数据库?

php - 删除或匹配 Unicode 零宽度空格 PHP

php - 如何将 MySQL 行拆分为连接中每个表的单独变量

php - 使用PHP将服务器中的mysql表复制到本地服务器

mysql - SQL 中 Select 语句中的动态字段

php 包含和结束标记

php - 如何在 php 调用之间保留 facebook 对象?

php - Laravel - 查询数据库表上最新日期的优雅方式

php - TinyMCE - 剥离标签然后添加标签 - 奇怪的行为

php - 希腊语作为 json 与 php 的问号