【问题标题】:Need to prevent new page from opening up when submitting a PHP $_POST form.提交 PHP $_POST 表单时需要防止新页面打开。
【发布时间】:2014-08-02 17:55:37
【问题描述】:

所以基本上我正在尝试创建一个表单,用户可以输入他们的姓名、电子邮件、消息等,单击提交,信息被编译并发送到我的电子邮件地址。当你点击提交时,你会被重定向到一个新页面,joeyorlando.me/php/index.php。

单击提交时我希望在提交按钮附近弹出一个小框,上面写着“感谢您的提交”(或类似的东西),并且页面不会被重定向,而是您将与表单保持在同一页面上。

如何防止提交按钮将您发送到这个新页面?任何建议将不胜感激!

<?php
    $firstname = $_POST['firstname'];
    $lastname = $_POST['lastname'];
    $company = $_POST['company'];
    $phone = $_POST['phone'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $human = $_POST['human'];

    $from = 'From: $firstname $lastname'; 
    $to = 'joey@joeyorlando.me'; 
    $subject = 'You Have a New Form Submission!';
    $body = "From: $firstname $lastname\n Company: $company Phone: $phone \n E-Mail: $email\n Message:\n $message";

    if ($_POST['submit']) {
        if ($firstname != '' && $lastname != '' && $email != '' && $message != '') {
            if ($human == '14') {
                if (mail ($to, $subject, $body, $email)) { 
                    echo '<p>Your message has been sent!</p>';
                } else { 
                    echo '<p>Something went wrong, go back and try again!</p>'; 
                }
            } else if ($_POST['submit'] && $human != '14') {
                echo '<p>You answered the question incorrectly!</p>';
            }
        } else {
        echo '<p>You need to fill in all required fields!!</p>';
    }
  }
  ?>

【问题讨论】:

  • 您可以使用AJAX request 执行此操作,否则您将呈现整个页面(并且作为 POST,您应该重定向用户以防止刷新页面时重新发布
  • 只是一个快速的补充,看起来你正在用数字 14 做一些垃圾邮件检查。假设图像不是动态的,这不是一个好主意。我建议使用Recaptcha 之类的东西。此外,您可能希望在 POST 值上使用 htmlspecialchars。否则,您应该在安全方面做得很好。

标签: php forms post


【解决方案1】:

您可以使用 AJAX 将表单发送到另一个脚本并等待显示错误或成功消息的响应。

jquery ajax form submit

<script>
$(document).ready(function() {
    $('#my-form').submit(function() {

        $.ajax({
            url: 'script.php',
            method: 'post,'
            /* TODO: add data */
        }).done(function(response) {
            alert(response);
        });

        return false;
    });
});
</script>

<form id="my-form" method="post" action="script.php">
    <input type="submit" value="submit">
<form>

【讨论】:

    【解决方案2】:

    AJAX 在这种情况下会很好。 AJAX 将提交您的表单而不刷新它,您可以在成功提交时显示适当的消息。

    【讨论】:

      【解决方案3】:

      正如 Jake 所建议的,您可以使用 Ajax,或者,您可以在同一个 php 文件中编写表单。然后,在完成所有验证步骤后,如果一切正常,则回显 Success ;)

      if(isset($_POST['submit']))
      {
      //the code you've posted + sucess message
      }
      
      <form name="name_of_form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
      //Input form
      </form>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-01
        • 2012-09-14
        • 1970-01-01
        • 2021-07-02
        • 1970-01-01
        • 2020-10-16
        • 2012-06-26
        相关资源
        最近更新 更多