【问题标题】:HTML form error handlingHTML 表单错误处理
【发布时间】:2013-02-10 20:55:49
【问题描述】:

我在另一个问题 (Display form validation errors next to each field) 上发现了以下代码:

 <?php
        $error = array(
            "name" => "",
            "email" => "",
            "subject" => "",
            "message" => ""
        );
    ?>

    <?php
        if (empty($_POST["email"]))
            $error["email"] = "Email is required!";
        elseif (!isEmail($_POST["email"]))
            $error["email"] = "Not a Valid Email!";
    ?>

如果没有错误,它将为空并且用户不会看到错误消息。

在您的表单代码中,您只需以这种方式更新:

    <small class="errorText"><?php echo $error["name"]; ?></small>
    <small class="errorText"><?php echo $error["email"]; ?></small>

在后端,$error["email"] 将具有 "This field is required""Not a valid email address!"

我试图将它应用到我的代码中:

所以我将上面的 php 部分粘贴到 email.php 中,然后像这样更新了我的表单:

    <form id="contacts-form" method="post" action="email.php" target="myiframe" >
       <fieldset>
       <div class="field">
          <label>Your E-mail:</label>
          <input type="email" name="email" value=""/>
          <small class="errorText"><?php echo $error["email"]; ?></small>
       </div>
       ...

现在我收到一条错误消息,提示 $error 未定义。请记住,我是 php/HTML 设计的新手,我正在尝试通过示例学习

谢谢

【问题讨论】:

  • 您的文件中是否也包含了$error = array(... 声明?
  • 不,我把这个声明放在 email.php 中
  • 小心,不是if (empty()$_POST["email"]),而是if (empty($_POST["email"]))
  • 是的,对不起,我已经修复了那部分 :) 我会更新我的帖子
  • 好的!另请记住,您的 if/elseif 不包括所有情况,因此当它既不是 if 也不是 elseif 时,将有一个默认值。

标签: php html forms


【解决方案1】:

首先你应该修复这条线,

if (empty()$_POST["email"])

应该是

if (empty($_POST["email"]))

其次,显示错误是因为您可能没有在表单中定义 $error。要检查是否已定义错误,您可以像这样使用它

<?php echo isset($error['name'])?$error['name']:""; ?>

另外请注意,要显示此设置的错误,您应该将表单指向您的表单所在的同一文件。

了解isset here

阅读语法here

【讨论】:

  • 我从表单更新了我的 php 调用,我不再有错误,但是当我提交表单时没有显示任何内容。根据我收集到的信息,通过此检查,我们现在可以验证是否定义了 $error['name'] ,但是当它没有发生任何事情时,因为在这种情况下它仍然没有定义。所以我们没有解决我猜的问题
  • 如果您查看此链接 - pastebin.com/M4RTwjSx - 并检查代码,应该清楚如何使用错误检查。
  • 我明白了 :) 但我需要的是 action="email.php" 因为我不仅需要验证电子邮件,还需要对表单中的数据做一些事情
  • 那么在我按下提交后,我的表单如何才能看到 email.php 中定义的变量(即 $error)
  • 好吧,要在文件之间传递数据,您可能必须使用 php 会话、cookie 或 url 参数数据。
猜你喜欢
  • 1970-01-01
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
  • 2012-06-27
相关资源
最近更新 更多