【问题标题】:Email Form when not filled out未填写时的电子邮件表格
【发布时间】:2014-06-13 04:10:11
【问题描述】:

我正在尝试修改未正确填写的电子邮件表单,但我不明白如何以简单的方式进行。

现在它是这样工作的:

    1234563
  • 如果用户输入错误,用户会被发送到一个空白版本的 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 的其余部分有代码,如果表单填写正确,则会出现...(这部分有效)

【问题讨论】:

  • 如果您想要立即出错 - 即在推送发送之前,您将需要客户端验证 (javascript)。

标签: php forms email


【解决方案1】:

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

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

这是一个 HTML 5 验证示例,每个 &lt;input&gt; 都使用 required

例子:

<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
    }

【讨论】:

  • 非常感谢。所需的东西非常好。什么是服务器端验证?
  • 服务器端验证意味着你在 php 中编写代码来检查客户端之后的验证,你也应该使用服务器端。因为很多时候 javascript 没有启用,你的客户端验证将不起作用
  • 我已经用服务器端验证更新了我的答案。请检查一下。
猜你喜欢
  • 2021-04-29
  • 2011-11-08
  • 2016-04-20
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 1970-01-01
相关资源
最近更新 更多