Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Переход на другую страницу


Автор: zerkms 19.1.2004, 12:29
Проблема: необходимо реализовать конструкцию типа:
if (условие) {переход_на_страницу_1} else {переход_на_страницу_2};
Как организовать эти "переход_на_страницу_х"???
Те чтобы работало как редирект в зависимости от условия.

Автор: Dimetrius 19.1.2004, 12:54
как вариант...
Код

switch(true) {
  case (выражение1): header("Location: http://www.url1.ru");
  break;
  case (выражение2): header("Location: http://www.url2.ru");
  break;
...
  case (выражениеN): header("Location: http://www.urlN.ru");
  break;
  default: header("Location: http://www.urlZ.ru");
}
exit;

ВАЖНО!
перед switch никаких echo и т.д.
Вместо header(Location), можно прост include использовать, все зависит от того,
что хочешь делать.


Автор: Sardar 20.1.2004, 01:50
ИМXО лучше проверять:
Код

if(!headers_sent()) header("Location: ...");
else echo "...<meta http-equiv='refresh' content='2; url=...'>...<a href=...>Кликните если надоело ждать...</a>...";

Автор: zerkms 20.1.2004, 06:45
Привет. ни один из вариантов не подходит, т.к. условие о переходе проверяется в середине страницы, а не в заголовке, где (имхо) header не работает ;(
include() - тоже как вариант не рассматривается. Есть ли какие-нить команды перехода например в js, если в пхп это не удастся организовать?

Автор: Dr.Death 20.1.2004, 09:54
<?
$page="test.html";
echo "
<script language=\"JavaScript\">
document.location=\"$page\"
</script>";
?>

Автор: Master 20.1.2004, 10:44
Dr.Death а если у клиента JS отключен?

Автор: Sardar 20.1.2004, 11:30
Если отосланны заголовки, то посылаешь страницу с:
1) тегом meta если вывод еще не достиг <body>
2) JS всегда можно использовать.
3) банальное: "кликните по ссылке если вам надоело ждать".

Автор: Dimetrius 20.1.2004, 12:44
Послушай (и задумайся еще раз)...
Ты отсылаешь клиенту готовую HTML-страницу, то есть какой-то текст,
и вдруг в середине текста вспоминаешь, что этот текст не для этого клиента и хочешь его отправить на другую страницу (своим редиректом).
Мне кажется, что это не совсем логично. Почему бы не выполнить сначала
все if и else, а потом уже приступать к генерации готовой страницы.
Ведь php именно для этого и предназначен.

Автор: Vaulter 20.1.2004, 13:06
Master
и PHP на серваке нету...и броузер у него не держит редиректы. ;)

zerkms
если в перед выводом выполнишь
ob_start();
то вывод будет кэшироватся. если очень припрет можешь очитстить буфер, и послать таки headers

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)