未填写时的电子邮件表格

时间:2014-06-13 04:10:11

标签: php forms email

我正在尝试修改电子邮件表单,如果没有正确填写,但我不明白如何以简单的方式完成。

现在它的工作原理如下:

  • 如果用户输入的所有内容都正确,则会将用户发送到send_form_email.php,其中包含大量代码且工作正常。

  • 如果用户输入错误信息,则会将用户发送到send_form_email.php的空白版本,该版本只有错误。

我想更改最后一个,以便用户在错过某些内容时立即收到消息,并且他无法按“发送”。也许将盒子颜色改为红色等等。

你能帮助我吗?

感谢。

表格:

<div id="message">
            <form name="contactform" method="post" action="send_form_email.php">
                <table width="450px">
                    <tr>
                        <td valign="top">
                            <label for="first_name">Fornavn</label></br>
                        </td>
                        <td valign="top">
                            <input type="text" name="first_name" maxlength="50" size="30">
                        </td>
                    </tr>

                    <tr>
                        <td valign="top">
                            <label for="last_name">Etternavn</label></br>
                        </td>
                        <td valign="top">
                            <input type="text" name="last_name" maxlength="50" size="30">
                        </td>
                    </tr>

                    <tr>
                        <td valign="top">
                            <label for="email">E-post</label></br>
                        </td>
                        <td valign="top">
                            <input type="text" name="email" maxlength="80" size="30">
                        </td>            
                        </tr>

                    <tr>
                        <td valign="top">
                            <label for="comments">Melding</label></br>
                        </td>
                        <td valign="top">
                            <textarea name="comments" maxlength="1000" cols="25" rows="6"></textarea>
                        </td>
                    </tr>

                    <tr>
                        <td colspan="2">
                        <input type="submit" value="Submit">
                        </td>
                    </tr>
                </table>
            </form>
        </div>

send_form_email.php:

if(isset($_POST['email'])) {


    $email_to = "mymail@gmail.com";
    $email_subject = "Melding fra nettsiden"; 

    function died($error) {
        echo "Sorry. Following errors appeared: <br /> ";
        echo $error."<br /><br />";
        die();
    }

    if(!isset($_POST['first_name']) ||
        !isset($_POST['last_name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['comments'])) {
        died('Beklager, men det er noen feil med meldingen.');       
    }

    $first_name = $_POST['first_name']; 
    $last_name = $_POST['last_name'];
    $email_from = $_POST['email'];
    $comments = $_POST['comments'];

    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';

  if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'Ugyldig e-post adresse.<br />';
  }

  if($first_name != '') {
      $error_message .= "Fornavn er ikke fyllt ut";
  }

  if($last_name != '') {
      $error_message .= "Etternavn er ikke fyllt ut";
  }

  if(strlen($comments) < 2) {
    $error_message .= 'Meldingen er for kort.<br />';
  }

  if(strlen($error_message) > 0) {
    died($error_message);
  }

    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }

// E-post melding
    $email_message .= "".clean_string($comments)."\n\n";
    $email_message .= "Mvh"."\n";
    $email_message .= "".clean_string($first_name)." ".clean_string($last_name);
    $email_message .= ""."\n";
    $email_message .= "".clean_string($email_from);
    $email_message .= ""."\n";

// E-post headers
    $headers = 'From: '.$email_from."\r\n".
    'Reply-To: '.$email_from."\r\n" . 
    'X-Mailer: PHP/' . phpversion();
    @mail($email_to, $email_subject, $email_message, $headers);  

?>

...如果表单填写正确,send_form_email的其余部分会显示代码...(此部分有效)

1 个答案:

答案 0 :(得分:1)

您可以应用两种类型的验证

  • HTML 5验证或Javascript / Jquery(客户端)。
  • 服务器端验证

以下是每个<input>

使用必需的HTML 5验证示例

示例:

<input type="text" name="first_name" maxlength="50" required="required" size="30">

type="email"用于电子邮件输入字段

示例:

<input type="email" name="email" required="required" maxlength="80" size="30">

服务器端验证如下

if(isset($_POST['first_name']) && !empty($_POST['first_name'])
   && isset($_POST['last_name']) && !empty($_POST['last_name'])
   && isset($_POST['email']) && !empty($_POST['email'])
   && isset($_POST['comments']) && !empty ($_POST['comments'])
   )
    {
           //perform the task       
    }
    else{
        echo 'You have not filled all the fields pealse go back and fill all the forms';
    //redirect the user to the form or display an erro massage
    }
相关问题