同一页面上显示成功消息的Php邮件表单

3

我在我的页面上使用php邮件表单。它工作得很好,但是当邮件发送后,关于成功发布的消息会在新的空白页面中打开。我想要做的是在发送按钮下直接显示带有一些格式的消息。我的代码如下。

<form action="contact.php" method="POST" id="contactform_main2" style="font-size:14px">
                    <ol>                    
                      <li>
                        <label for="email">Email</label>
                        <input type="email" id="email" name="email" class="text" required />
                      </li>             
                    ....etc
                      <li class="buttons">
                        <input type="submit" name="imageField" value="Odoslať" class="send" style="cursor:pointer" />                     
                      </li>
                    </ol>
                  </form>

这是关于PHP的内容

<?php
...geting data
if(
  mail("dominik0109@gmail.com", $subject,
  $sprava, "From:" . $email)){
  echo "<strong>Sucessfully sent</strong>";}
  else {
  echo "Error";}
?>

您可以在我的页面上实时查看它,填写任何内容以进行发布。
请问如何修复此问题?
谢谢。

这意味着contact.php不是您现在所在的页面。您应该将其更改为当前页面。 - Loko
您正在提交表单到名为 contact.php 的页面,该页面与您当前所在的页面不同。如果留空或仅输入“?”则会将其提交到当前页面。 - SASM
1个回答

4

您只需要将表单发送到同一页,并检查是否传递了POST变量。

mypage.php

<form action="#message" method="POST" id="contactform_main2" style="font-size:14px">
                    <ol>                    
                      <li>
                        <label for="email">Email</label>
                        <input type="email" id="email" name="email" class="text" required />
                      </li>             
                    <!-- ....etc -->
                      <li class="buttons">
                        <input type="submit" name="imageField" value="Odoslať" class="send" style="cursor:pointer" />                     
                      </li>
                    </ol>
                  </form>

<?php
if(isset($_POST['email'])) {
// ...geting data
  echo "<a name='message'></a>";
  if(mail("dominik0109@gmail.com", $subject, $sprava, "From:" . $email)){
    echo "<strong>Sucessfully sent</strong>";
  }
  else {
    echo "Error";
  }
}
?>

如果您希望页面完全不进行刷新,您需要使用JavaScript和Ajax。


谢谢,现在它正在工作,但成功消息在下面,需要滚动才能看到。如果在刷新时可以打开页面上的一些锚点,我不介意刷新。可以吗? - user2466601
在您的消息上方添加一个<a name='message'></a>,并将<form ... action='mypage.php' .. />替换为<form ... action="#message" .. />。 - Tom Tom
抱歉,我会编辑我的帖子以包含锚标签。请不要使用/或/>。 - Tom Tom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接