PHP перенаправить на страницу с данными - PullRequest
0 голосов
/ 27 мая 2011

Хорошо, у меня есть информация, которую люди используют на нашем сайте для загрузки программного приложения .... На самом деле есть 4 разных формы, которые ссылаются на один и тот же php-скрипт, и мне нужно перенаправить их все на thank_you.страница с $ _POST ['application_to_download'] проблема, с которой я столкнулся, это как я могу отправить эту переменную с заголовком php ... вот мой код

, это просто откроет загрузку

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

, который прекрасно работает, но мне нужно, чтобы пользователь был перенаправлен на страницу благодарности ... так что мой второй подход состоял в том, чтобы попробовать пост-подход

$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']);

что-то вроде этого, но URL выглядит так

 http://somesite.com/downloads/thank_you?software=videovision10_1_07.exe

, который не самый красивый, если вы спросите меня ..... я имею в виду, я знаю, что могу сделать это, но я искал альтернативу .... кстати, вот почему мне это нужно на странице благодарности

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

любые предложения

Ответы [ 2 ]

2 голосов
/ 27 мая 2011

Я бы рекомендовал вместо этого перенаправить на страницу благодарности и использовать мета-обновление для запуска загрузки файла.

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

и на странице благодарности:

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

Дайте этому шанс ..

edit: Теперь я вижу, вы упомянули переменную GET ... Вы действительно думаете, что люди смотрят на ваш URL и оценивают его?

1 голос
/ 27 мая 2011

Для каждого запроса , который делает браузер, у вас есть один ответ , который вы можете сделать.Вы хотите отобразить страницу благодарности.Так что это использует один.Это означает, что страница «Спасибо» должна автоматически запускать браузер для отправки второго запроса.

Ваши параметры - это обновление Javascript:

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

Или HTTPМета-обновление (в этом примере показано, как ждать 1 секунду):

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

Чтобы эта страница знала, что такое $app, и вставила ее на страницу, у вас есть два варианта:

  1. URL (GET) - для которого у вас есть код (и, скажем, некрасиво)

  2. Session

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

    ...

    $app = $_SESSION['app'];
    unset($_SESSION['app']);
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...