я имею page1.php
с этим кодом:
<form action="/redirect.php" method="POST" target="_blank">
<input name="destination" type="hidden" value="a"/>
<input type="submit" value="Click here"></form>
а это redirect.php
:
<?php
$url = "http://www.default.com";
if(isset($_POST['destination'])){
switch ($_POST['destination']) {
case "a":
$url = "http://www.domain1.com";
break;
case "b":
$url = "http://www.domain2.com";
break;
default:
$url = "http://www.default.com";
}
}
header( "refresh:1;url=$url" );
?>
<!doctype html>
<html>
<head>
</head>
<body>
<div>Redirecting, Please wait</div>
</body>
</html>
Я создал страницу перенаправления таким образом, потому что для меня важно, чтобы она загружала и отображала определенный контент, а не перенаправляла сразу (и, таким образом, она выдает код 200, а не код 302).
Однако только в Chrome и Safari заголовки перенаправления содержат информацию о ссылающемся URL, который redirect.php
и, таким образом, например, владелец domain1.com
будет знать, что посетитель пришел из mydomain.com/redirect.php
,
Но в IE и FF ссылка в заголовках равна нулю. Что является причиной такого различного поведения и как я могу исправить это, чтобы они также содержали одинаковую информацию о реферере?
Вы можете попробовать:
header("Location: ".$url."");
Рабочий пример (пробовал на FF 27.0.1):
файл page1.php
:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Starting page</title>
</head>
<body>
<form action="redirect.php" method="post">
<input type="hidden" name="destination" value="a">
<input type="submit" value="Click here">
</form>
</body>
</html>
файл redirect.php
:
<?php
$url = "http://www.default.com";
if(isset($_POST['destination'])){
switch ($_POST['destination']) {
case "a":
$url = "http://www.domain.com";
break;
case "b":
$url = "http://www.examples.com";
break;
default:
$url = "http://www.example.com";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Landing page</title>
</head>
<body>
<div>Redirecting, Please wait</div>
<script>
window.onload = function() {
setTimeout(function(){
window.location = '<?php echo $url;?>';
}, 4000);
};
</script>
</body>
</html>
Как это работает: После нажатия на кнопку Click here
на page1.php
, данные отправляются и домен http://www.domain.com
выбран. С помощью javascript через 4 секунды после загрузки окна браузер перенаправит пользователя на http://www.domain.com
, Я смотрел заголовки реферера в Firebug
и они были отправлены.
Смущенный. Перенаправление и обновление страницы не одинаково. И еще — не все браузеры поддерживают обновление заголовка.