好的,所以我有一个人在我们的网站上使用下载软件应用程序....实际上有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']; ?>'">
任何建议
答案 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
是什么,并将其嵌入页面,您有两种选择:
网址(GET) - 您有代码(并说是丑陋的)
会话
session_start();
$_SESSION['app'] = $_POST['application_to_download'];
...
$app = $_SESSION['app'];
unset($_SESSION['app']);