redirect — создание тега & lt; a href & gt; элемент после неожиданной задержки в перенаправлении заголовка PHP происходит?

У меня есть страница с формой в методе POST, в которой пользователь публикует z значение,
на следующую страницу PHP, которая его обрабатывает и соответственно перенаправляет пользователя:

<?php
{

if(isset($_POST['z'])){

switch ($_POST['z']) {

case "a":
$url = "http://www.a.com";
break;

case "b":
$url = "http://www.b.com";
break;

default:
$url = "http://www.default.com/";
}
}

header( "refresh:0;url=$url" );

}
?>
<!doctype html>
<html>
<head>
<style>
.wrap{
margin-top: 25%;
}
</style>
</head>
<body>
<div class="wrap">
You are now being redirected.
</div>
</body>
</html>

Обычно это работает нормально, но сегодня я получил жалобу от одного посетителя, который сказал, что сообщение «Вы перенаправлены». продолжал показывать, и он никогда не был перенаправлен.

Я видел на сервере логи, что он пытался сделать это несколько раз (скажем, он отправил форму по крайней мере 3 раза).

  1. Что могло вызвать эту проблему? (код в форме не изменился).

  2. Чтобы попытаться справиться с такими случаями, Я думал о предоставлении пользователю возможность нажать на a href ссылка на $url, но я хочу, чтобы эта ссылка появлялась только через 5 секунд (в общем, большинство пользователей никогда не увидят ссылку, поскольку обновление заголовка должно произойти через 0 секунд). пока я хочу, чтобы ВСЕ пользователи увидели сообщение «вы перенаправлены».

а. Я не уверен, что это обязательно решит проблему, так как если бы причиной проблемы было то, что $url значение было пустым, такая ссылка не помогла бы.

б. Я не хочу, чтобы пользователь мог видеть назначение ссылки, просматривая источник страницы, если только он не соответствует категории 5-секундной задержки. поэтому я не думаю, что здесь можно использовать костюмы Javascript, потому что это на стороне клиента, верно? Так что я ищу решение на стороне сервера PHP — это загрузит страницу со всем, как сейчас, но также добавит a href элемент через 5 секунд. Есть какой-либо способ сделать это?

РЕДАКТИРОВАТЬ:
вот форма:

  <form action="redirect.php" method="POST" target="_blank">
<input name="z" type="hidden" value="a"/>
<input type="submit" value="Go"></form>

0

Решение

Назначьте значение по умолчанию перед if а не в default: дело:

$url = "http://www.default.com/";
if(isset($_POST['z'])){

switch ($_POST['z']) {

case "a":
$url = "http://www.a.com";
break;

case "b":
$url = "http://www.b.com";
break;
}
}

Таким образом, если $_POST['z'] не установлен по какой-то причине, они все равно получат перенаправление по умолчанию.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]