0

我有这个脚本,它旨在向我发送电子邮件,但我想要做的不是将用户重定向到不同的页面以显示结果,我希望它显示成功消息或失败消息与表单相同的页面。我希望我清楚自己。我正在尝试将 php 和 html 添加到一页。 索引.html:

<!DOCTYPE html>

<html>
<head>
    <title></title>
</head>

<body>
    <form action="send_form_email.php" id="contactform" method="post" name=
    "contactform">
            <table width="450px">
                    <tr>
                            <td valign="top"><label for="title">Title
                            *</label></td>

                            <td valign="top"><input maxlength="50" name=
                            "title" size="30" type="text"></td>
                    </tr>

                    <tr>
                            <td></td>
                    </tr>

                    <tr>
                            <td valign="top"><label for="fname">First Name
                            *</label></td>

                            <td valign="top"><input maxlength="50" name=
                            "fname" size="30" type="text"></td>
                    </tr>

                    <tr>
                            <td valign="top"><label for="mname">Middle
                            Name</label></td>

                            <td valign="top"><input maxlength="50" name=
                            "mname" size="30" type="text"></td>
                    </tr>

                    <tr>
                            <td valign="top"><label for="lname">Last Name
                            *</label></td>

                            <td valign="top"><input maxlength="50" name=
                            "lname" size="30" type="text"></td>
                    </tr>

                    <tr>
                            <td valign="top"><label for=
                            "suffix">Suffix</label></td>

                            <td valign="top"><input maxlength="80" name=
                            "suffix" size="30" type="text"></td>
                    </tr>

                    <tr>
                            <td valign="top"><label for="message">Message
                            *</label></td>



      <td valign="top">
                                <textarea cols="25" maxlength="1000" name=
                                "message" rows="6">
</textarea></td>
                        </tr>
                        <tr>
                                <td valign="top"><label for="email">Email
                                Address*</label></td>

                                <td valign="top"><input maxlength="80" name=
                                "email" size="30" type="text"></td>
                        </tr>

                        <tr>
                                <td colspan="2" style="text-align:center">
                                <input type="submit" value="Submit"></td>
                        </tr>


          </table>
    </form>
</body>
</html>

send_form_email.php:

  <?php
if (isset($_POST['email'])) {

    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to      = "test@gmail.com";
    $email_subject = "Your email subject line";


    function died($error)
    {
            // your error code can go here
            echo "We are very sorry, but there were error(s) found with the form you submitted. ";
            echo "These errors appear below.<br /><br />";
            echo $error . "<br /><br />";
            echo "Please go back and fix these errors.<br /><br />";
            die();
    }

    // validation expected data exists
    if (!isset($_POST['title']) || !isset($_POST['fname']) || !isset($_POST['mname']) || !isset($_POST['lname']) || !isset($_POST['suffix']) || !isset($_POST['message']) || !isset($_POST['email'])) {
            died('We are sorry, but there appears to be a problem with the form you submitted.');
    }

    $title_name  = $_POST['title']; // required
    $first_name  = $_POST['fname']; // required
    $middle_name = $_POST['mname'];
    $last_name   = $_POST['lname']; // required
    $suffix_name = $_POST['suffix'];
    $message     = $_POST['message']; // required
    $email_from  = $_POST['email']; // required

    $error_message = "";
    $string_exp    = "/^[A-Za-z .'-]+$/";
    if (!preg_match($string_exp, $title_name)) {
            $error_message .= 'The First Name you entered does not appear to be valid.<br />';
    }
    if (!preg_match($string_exp, $first_name)) {
            $error_message .= 'The First Name you entered does not appear to be valid.<br />';
    }
    if (!preg_match($string_exp, $middle_name)) {
            $error_message .= 'The Middle Name you entered does not appear to be valid.<br />';
    }
    if (!preg_match($string_exp, $last_name)) {
            $error_message .= 'The Last Name you entered does not appear to be valid.<br />';
    }
    if (!preg_match($string_exp, $suffix_name)) {
            $error_message .= 'The Suffix Name you entered does not appear to be valid.<br />';
    }
    if (strlen($message) < 2) {
            $error_message .= 'The Message you entered do not appear to be valid.<br />';
    }
    if (strlen($error_message) > 0) {
            died($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 .= 'The Email Address you entered does not appear to be valid.<br />';
    }
    $email_message = "Form details below.\n\n";

    function clean_string($string)
    {
            $bad = array(
                    "content-type",
                    "bcc:",
                    "to:",
                    "cc:",
                    "href"
            );
            return str_replace($bad, "", $string);
    }
    $email_message .= "Title Name: " . clean_string($title_name) . "\n";
    $email_message .= "First Name: " . clean_string($first_name) . "\n";
    $email_message .= "Middle Name: " . clean_string($middle_name) . "\n";
    $email_message .= "Last Name: " . clean_string($last_name) . "\n";
    $email_message .= "Last Name: " . clean_string($suffix_name) . "\n";
    $email_message .= "Comments: " . clean_string($message) . "\n";
    $email_message .= "Email: " . clean_string($email_from) . "\n";


    // create email 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);
?>


<!-- include your own success html here -->

<center>Thank you for contacting us. We will be in touch with you very soon.</center>

<?php
}
?>

我知道它应该看起来像这样,但我不知道如何在我的代码中使用它:

// validation code
// in some div
if($success) {
    // thanks for contacting us
} else {
    // you suck at filling out forms
}
// form goes here
4

1 回答 1

0

在 PHP 中:

$mail = mail($email_to, $email_subject, $email_message, $headers);
if( $mail ){
  // success message
  $msg = "Success - Send Successfully";
  echo "<script>top.location.href = 'index.html#$msg';</script>";
} else {
  // Error message
  $msg = "Error - Email not Send";
  echo "<script>top.location.href = 'index.html#$msg';</script>";
}

使用一些 javascript 从 url 获取结果到您的index.html文件中,在上面的示例中,我使用哈希发送消息,现在使用 javascript 从 url 确定哈希。

if(window.location.hash) {
  // Fragment exists
  //Puts hash in variable, and removes the # character
  var hash = window.location.hash.substring(1); 

 // Determine the success or failure
 var patt=/Success/g;
 var result=patt.test(hash);

 if( result ){
    // Success Message
    alert(hash);
 } else {
    // Error Message
    alert(hash);
 }

}
于 2013-07-29T05:23:51.597 回答