发送标头后重定向php脚本


Redirect a php script after sending header

我有一个带有表单和提交按钮的html页面。

一旦我点击提交所有的表格数据,感谢fpdf,就会变成pdf。此pdf文件已顺利发送到我的电子邮件中。

构建这个小页面,一切总是顺利进行,我能够将我的用户重定向到一个感谢页面,而没有出现以下代码的问题:

header("Location: /thank-you.php",303);
exit();

一旦我实现了pdf文件保存,最终重定向就停止了工作。

我已经用fpdf:轻松实现了pdf保存

$pdf->Output("filename.pdf", "D");

从stackoverflow和所有互联网上读到,我明白你不能发送两个标题。

我想过用javascript解决这个问题,所以我在pdf生成之后

echo "<script language=javascript>
window.location = 'thanks.html'
</script>";

但没有运气。

当浏览器下载pdf文件时,php页面会简单地"停止"。

有机会解决这个问题吗?

编辑:

我得到的所有建议(感谢大家)都让我达到了同样的目的:使用感谢页面来处理pdf保存。听起来不错。

我试着用一个简单的$pdf->Output()来准备一个thankyou.php页面;在里面。它不起作用。。。所以我想在我的create.php中使用一个include(所有神奇的事情都发生在哪里:pdf创建、电子邮件发送、插入数据库等):

<?php
include("create.php");
$pdf->Output();
?>

仍然没有运气。

我的想法怎么了?

您应该以另一种方式处理此问题。

将用户发送到感谢页面,并在该感谢页面上执行$pdf->Output()。这应该是你想要的。

Webpages/HTTP是一个请求-响应系统。浏览器向发送一个请求,对该请求恰好有一个响应。您根本无法使用PDF重定向或PDF某些Javascript进行响应。

典型的做法是首先显示"谢谢"页面,然后在该页面内使用Javascript重定向到文件下载。这样页面就可以保持打开状态并下载文件。

您可以让thank-You.php发送PDF文件。提交表单后,将用户发送到感谢页面,然后感谢页面将向用户发送PDF文件。这样,感谢页面是可见的,下载PDF文件后该页面仍然可见。