【问题标题】:HTML Form action that stays on the current page停留在当前页面上的 HTML 表单操作
【发布时间】:2013-09-29 17:47:39
【问题描述】:

我正在注册时事通讯,用户输入他们的电子邮件并单击表单提交按钮。问题是时事通讯注册在我的页脚中,它显示在网站的每个页面上。现在我有 action="newsletter.php" ,它会向我发送一封电子邮件,其中包含他们用来注册的电子邮件。我可以有一个 "window.location=""" 但我希望它返回到它们来自的页面(因为页脚可能在网站的任何页面上)。

现在,我想知道是否有办法不让表单操作成为“newsletter.php”,而是让 php 只在页脚文件中,这样他们甚至永远不会离开他们所在的页面首先,一个简单的 window.alert 可以让他们知道他们的注册成功,并且无论他们在网站的哪个页面上,他们都可以继续做他们正在做的事情。

在从谷歌得到想法并自己尝试之后,我尝试制作一个 javascript 函数,其中包含向我发送一封包含他们输入的电子邮件的电子邮件所需的 php,但显然每次任何页面都向我发送一封空白电子邮件加载的网站。我也尝试过“isset”,但问题是 action="" 只是在 isset 可以检查他们是否输入电子邮件之前重新加载页面。

NEWSLETTER.PHP-

   <?php
$field_emailInput = $_POST['emailInput'];

$mail_to = 'josh@cutephilosophy.com';
$subject = 'NEWSLETTER SUBSCRIBER';

$body_message .= 'This person subscribed for email updates: ';
$body_message .= 'E-Mail: '.$field_emailInput."\n";

$headers = 'From: '.$field_emailInput."\r\n";
$headers .= 'Reply-To: '.$field_emailInput."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
        window.alert('You Are Now In The Loop!');
        //window.location = 'index.php';
        window.location ='history.back()';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">
        alert('Something broke, email josh@cutephilosophy.com about the problem!');
        window.location = 'index.php';
    </script>
<?php
}
?>

您会注意到我在使用 action="newsletter.php" 方法时尝试了“history.back()”,这是可行的,但是当显示 window.alert 时,您处于一个完整的白色页面而不是页面他们最初是打开的,然后你被重定向回来。

【问题讨论】:

  • 如果我提交了一份订阅时事通讯的表格,我希望看到一个确认页面,这样我就知道它已经成功了。在那之后,大多数人都可以点击浏览器的后退按钮。
  • 如果您根本不想让他们离开页面,您需要使用 AJAX。
  • 您不需要需要 Ajax,您可以使用 HTTP 204 No Content 响应来代替。不过,不提供反馈仍然是一个糟糕的主意。
  • Quentin,就用户体验而言,我不认为一个新页面是可取的,这可能会失去观众,因为他们觉得他们已经“完成”了他们的业务。我宁愿只显示一个弹出窗口,说它有效,这样他们就可以立即回到他们正在做的事情。

标签: javascript php html forms email


【解决方案1】:

你不能使用 PHP_Self。或者在您的 html 中添加一个后退按钮,以允许他们点击返回到他们所在的位置。

【讨论】:

【解决方案2】:

使用 php mail() 发送电子邮件并将表单操作设置为

htmlspecialchars($_SERVER['REQUEST_URI'])

htmlspecialcharacters 部分为您的表单增加了安全性,而服务器部分将您返回到同一页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多