PHP表单验证,包括SUBMIT按钮

时间:2014-07-11 22:12:26

标签: php

我一直在尝试在PHP代码中找到验证电子邮件的方法。我只能给你部分代码,因为它真的很长。我想要做的是让一个人通过点击提交按钮输入他们的电子邮件地址,如果他们以不可接受的格式输入了他们的电子邮件,则会显示一条错误消息。但我的问题是:我怎样才能将标签与#34;功能验证电子邮件($ field)"?换句话说,我知道如何组合(第A部分)和(第B部分),这很容易。但我真正想做的是将(B部分)与(C部分)结合起来而不是使用(A部分)。那可能吗?我可以以某种方式包括" isset"内部"功能验证电子邮件($ field)"?我必须有一个提交按钮,我必须能够验证电子邮件。

     (PART A)       <?php //formtest2.php
                       if (isset($_POST['email'])) $email = $_POST['email'];
                         else $email = "(Not entered)";
                     ?>


     (PART B)      <?php  
                   function validate_email($field)
                    {
                      if ($field == "") return "No email was entered<br>";
                        else if (!((strpos($field, ".") > 0) &&
                          (strpos($field, "@") > 0)) ||
                             preg_match("/[^a-zA-Z0-9.@_-]/", $field))
                              return "The email address is invalid<br>";
                                return "";
                     }
                     ?>


      (PART C)         <body>
                          Your email is: $email<br>
                            <form method="post"  action="brownuniversity.php">
                               What is your email address?
                                  <input type="text"  name="email">
                                       <input type="submit">
                            </form>
                         </body>

1 个答案:

答案 0 :(得分:0)

首先,你要改变这一切,

 function validate_email($field)
                    {
                      if ($field == "") return "No email was entered<br>";
                        else if (!((strpos($field, ".") > 0) &&
                          (strpos($field, "@") > 0)) ||
                             preg_match("/[^a-zA-Z0-9.@_-]/", $field))
                              return "The email address is invalid<br>";
                                return "";
                     }

这一点。

function validate_email( $field ){
    if (preg_match("/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/", $field)){
        return true;
    }
    return false;
}

您必须在其他地方执行错误消息,但这更便于携带。 (我给你一个更好的电子邮件Regx),现在你可以这样做

if(isset($_POST['email'])){
    $email = trim( $_POST['email'] ); //remove any whitespaces from pasting email.
    if(validate_email($email)){
    //send mail or whatever

    }else{
    //show errors

    }
}

你仍然需要检查是否isset(验证中的$ _POST ['email']实际上不是检查它的地方,它应该只关心数据是否有效,如果有的话在调用函数之前你还需要检查表单是否已发布,并且isset满足这些需求。我更新了答案,你真的不需要验证消息,因为它不是设置,因为如果是这种情况他们没有提交表格,则应始终在表单提交上设置。