【问题标题】:PHP Contact form used in HTML 5 Template but not email sendsHTML 5 模板中使用的 PHP 联系表单,但不是电子邮件发送
【发布时间】:2019-05-23 22:59:49
【问题描述】:

我有一个contact-form.php 和一个index.html 文件,如下所示。但是当点击提交发送电子邮件时,它重新加载页面并没有发生任何事情,网站的主页再次刷新。我的问题在哪里?

我看到很多 SO 链接,但我找不到问题所在。我在这里附上了代码。所有这两个文件都在 PHP Server 上的同一个文件夹中。

<!-- CONTACT FORM -->
                                <div class="">
                                    <form id="contact-form" action="contact-form.php" method="POST">

                                        <div class="row">
                                            <div class="col-md-12 mb-30">
                                                <!-- <label>Your name *</label> -->
                                                <input type="text" value="" data-msg-required="Please enter your name"
                                                    maxlength="100" class="controled" name="name" id="name"
                                                    placeholder="NAME" required>
                                            </div>
                                        </div>

                                        <div class="row">
                                            <div class="col-md-12 mb-30">
                                                <!-- <label>Your email address *</label> -->
                                                <input type="email" value=""
                                                    data-msg-required="Please enter your email address"
                                                    data-msg-email="Please enter a valid email address" maxlength="100"
                                                    class="controled" name="email" id="email" placeholder="EMAIL"
                                                    required>
                                            </div>
                                        </div>

                                        <div class="row">
                                            <div class="col-md-12 mb-40">
                                                <!-- <label>Message *</label> -->
                                                <textarea maxlength="5000" data-msg-required="Please enter your message"
                                                    rows="3" class="controled" name="message" id="message"
                                                    placeholder="MESSAGE" required></textarea>
                                            </div>
                                        </div>

                                        <div class="row">
                                            <div class="col-md-12 text-center-xxs">
                                                <input type="submit" value="SEND MESSAGE" class="button medium gray"
                                                    data-loading-text="Loading...">
                                            </div>
                                        </div>

                                    </form>
                                    <div class="alert alert-success hidden animated fadeIn" id="contactSuccess">
                                        <strong>Success!</strong> Your message has been sent to us.
                                    </div>

                                    <div class="alert alert-danger hidden animated shake" id="contactError">
                                        <strong>Error!</strong> There was an error sending your message.
                                    </div>
                                </div>
                            </div>
                        </div>

                    </div>

                </div>

<?php 
if(isset($_POST['submit'])){
    $to = "bbbbb@gmail.com"; 
    $from = $_POST['email']; 
    $first_name = $_POST['name'];
    $subject = "Form submission";
    $message = $first_name . " " . " wrote the following:" . "\n\n" .             $_POST['message'];


    $headers = "From:" . $from;

   $mail_status= mail($to,$subject,$message,$headers);


    }

if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
        window.location.href = 'index.html#contactSuccess';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">
                window.location.href = 'index.html#contactSuccess';
    </script>
<?php
}
?>

【问题讨论】:

标签: javascript php html forms


【解决方案1】:

在您的 HTML 提交按钮上命名:

<input type="submit" name="submit" value="SEND MESSAGE" class="button medium gray"
                                                        data-loading-text="Loading...">

编辑:

  1. 首先,将您的最终if 放入$_POST['submit'] if。你只在提交时这样做,$mail_status 只在其中设置:

  2. 使用$_GET 参数,而不是# ...这些用于滚动到名称相同的锚点。

  3. 将 index.html 转换为 index.php,以便您可以使用 PHP 控制 DIV 显示的内容。

$result = $_GET['result'] 将包含 URL 中 = 之后的任何内容,?result=

那么

if($result == 'success') { 
?> <!-- Show Success Div --> <?php 
} else { 
?><!-- Show error DIV --> <?php

这是您的 PHP 对重定向 URL 的更改以使用 $_GET 参数和 index.html 转换为 PHP:

<?php
if (isset($_POST['submit'])) {
    $to         = "bbbbb@gmail.com";
    $from       = $_POST['email'];
    $first_name = $_POST['name'];
    $subject    = "Form submission";
    $message    = $first_name . " " . " wrote the following:" . "\n\n" . $_POST['message'];


    $headers = "From:" . $from;

    $mail_status = mail($to, $subject, $message, $headers);
    if ($mail_status) {
?>
   <script language="javascript" type="text/javascript">
        window.location.href = 'index.php?result=success';
    </script>
<?php
    } else {
?>
   <script language="javascript" type="text/javascript">
                window.location.href = 'index.php?result=failed';
    </script>
<?php
    }

}
?>

【讨论】:

  • 解决了,非常感谢!但一个问题仍然存在。为什么“
  • 如何将状态传递给 html?为什么不完全这样做?
  • 我已经进行了编辑...您永远不会从该代码中看到那些 DIVs,首先您在链接上使用相同的 # 名称,这只会让您滚动到Div。您需要 $_GET 参数和 PHP 索引页面。使用Get 参数来控制您添加到DOMDIV
  • 我的主文件是 index.html 而不是 index.php。
  • 请看html模板的最后一部分。我认为这个模板的作者将结果从 php-contact-form 发送回 html 而无需修改。并且只显示 Div 成功或错误之一。我测试一下!但php表单不可用。
猜你喜欢
相关资源
最近更新 更多
热门标签