0

我正在注册时事通讯,用户输入他们的电子邮件并单击表单提交按钮。问题是通讯注册在我的页脚中,它显示在网站的每个页面上。现在我有 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 时,您处于一个完整的白色页面而不是最初的页面打开,然后您将被重定向回来。

4

2 回答 2

0

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

于 2013-09-29T17:53:09.360 回答
0

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

htmlspecialchars($_SERVER['REQUEST_URI'])

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

于 2013-09-30T16:38:50.687 回答