PHP重定向到包含Data的页面

时间:2011-05-27 18:44:53

标签: php header

好的,所以我有一个人在我们的网站上使用下载软件应用程序....实际上有4种不同的表单链接到相同的PHP脚本,我需要将所有这些重定向到thank_you $ _POST ['application_to_download']页面我遇到的问题是如何用php标头发送这个变量..这是我的代码

这将打开下载

header("location:".$_POST['application_to_download']);

效果很好,但我需要将用户重定向到thank_you页面...所以我的第二种方法是尝试后期方法

$post_data = "software={$_POST['application_to_download']}";
$content_length = strlen($post_data);

header('POST /downloads/thank_you HTTP/1.1');
header('Host: localhost');
header('Connection: close');
header('Content-type: application/x-www-form-urlencoded');
header('Content-length: ' . $content_length);
header('');
header($post_data);

我不确定这种方法会怎样,但它根本不会重定向,最后我可以这样做

header("location:"./downloads/thank_you?software=$_POST['application_to_download']);

类似的东西,但网址看起来像这样

 http://somesite.com/downloads/thank_you?software=videovision10_1_07.exe
如果你问我,这不是最漂亮的....我的意思是我知道我可以做到这一点但我正在寻找另一种选择....顺便说一下这就是为什么我需要它在thank_you页面上

<title>Thank You</title>
</head>
<body onload="window.location = '<?php print $_POST['software']; ?>'">

任何建议

2 个答案:

答案 0 :(得分:2)

我建议您重定向到感谢页面,并使用元刷新来触发文件下载。

header('Location: /thank_you_page.php?redirectTo=' . $_POST['app_to_dl']);

并在感谢页面中:

echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"1;URL=" . $_GET['redirectTo'] . "\">";

给那个镜头..

编辑:现在我看到你提到了GET变量......你真的认为人们正在查看你的网址并判断它吗?

答案 1 :(得分:1)

对于浏览器发出的每个请求,您都可以进行一个 响应。您想要显示一个感谢页面。所以用完了那个。这意味着Thank You页面必须自动触发浏览器发出第二个请求。

您的选项是Javascript刷新:

window.onload = function() {
    location.href = '<?php echo $app; ?>';
}

或HTTP Meta刷新(这个显示如何等待1秒):

<meta http-equiv="refresh" content="1;<?php echo $app; ?>">

要让该页面知道$app是什么,并将其嵌入页面,您有两种选择:

  1. 网址(GET) - 您有代码(并说是丑陋的)

  2. 会话

    session_start();
    $_SESSION['app'] = $_POST['application_to_download'];
    

    ...

    $app = $_SESSION['app'];
    unset($_SESSION['app']);