-1

可能重复:
PHP 已发送的标头

if($sendmail) {
  echo "<div class=\"success\" class=\"regdet\">Congratulations $name! You have successfully registered for <span>AADAB 2013</span>! An email has been sent to your email with the details of your form.<br><br>If the page does not automatically redirect you in 5 seconds, click <input type=\"button\" value=\"Here\" onclick=\"window.close()\"> to continue.</div>";
  header (refresh: 5, url="form.php");
} else {
  echo "<span style=\"color: red; background: rgba(219,219,219,0.7);\">There was an error in submitting your form. Click <a href=\"form.php\">here</a> to try again!</span>";
}

我试图在 5 秒后将用户重定向到表单(这是同时具有表单和 PHP 命令的当前表单)......因为它没有发生,我试图包含一个按钮来关闭在表单确认页面上按下后的窗口。

这也没有发生。

正在显示消息,并且表单正在完美地将电子邮件发送到我的电子邮件帐户,但这一小部分让我很烦!

4

4 回答 4

1

您应该将参数header()作为字符串传递(实际上您是在发送原始标头字符串)。

所以像这样:

header('refresh:5;url=form.php');

至于window.close(). 如果您没有使用 Javascript 打开窗口并尝试使用窗口处理程序将其关闭,您实际上可能会遇到问题。由于安全原因,Javascript 不会让您关闭用户看到的任何窗口。理论上你应该看到一个浏览器警告告诉你 JS 想要关闭这个窗口(但我没有设法让它在 IE 9 或 FF 上运行)。

于 2013-01-18T09:45:16.140 回答
0

如果您尚未向浏览器输出任何内容,则只能输出标题。在你的情况下,你的echo东西,然后尝试发送一个header().

你也应该引用你的论点:

// no output so far....
header ('refresh: 5; url=form.php');

如果您查看错误日志,您应该会发现:

PHP 警告:无法修改标头信息 - 标头已由...发送

于 2013-01-18T09:52:50.323 回答
0

“仅允许对使用 window.open 方法由脚本打开的窗口调用此方法。如果该窗口不是由脚本打开的,则 JavaScript 控制台中会出现以下错误:脚本可能无法关闭已打开的窗口不是由脚本打开的。”

当您打开窗口时,这应该被分配给一个变量。

openedWindow = window.open('moreinfo.htm');

然后当你想关闭它时......

openedWindow.close();

如果你想用 JS 关闭窗口,你也可以用 JS 重定向...

location.href = 'form.php';
于 2013-01-18T09:51:10.510 回答
-1

window.close() 在许多现代浏览器中不能单独工作。

有一些解决方法:window.close 和 chrome 的问题

或者您是否可以使用模式弹出窗口而不是新窗口?

于 2013-01-18T09:41:50.643 回答