Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не получается безусловный переход
 
 автор: Владимир55   (16.03.2007 в 17:36)   письмо автору
 
 

Как я полагал, указание в теле рнр-кода оператора типа

header("Location: finish.php");

закроет текущую страницу и откроет страницу finish.php

Однако этого не происходит. Собственно, вообще ничего не происходит - вышеупомянутый оператор проходит без всяких последствий и выполняются коды, идущие после него, а страница finish.php не открывается

Почему же так?

   
 
 автор: mihdan   (16.03.2007 в 17:42)   письмо автору
 
   для: Владимир55   (16.03.2007 в 17:36)
 

вначале скрипта поставь ob_start(); И вообще юзай для перехода не header(), а метатеги

   
 
 автор: Trianon   (16.03.2007 в 17:54)   письмо автору
 
   для: Владимир55   (16.03.2007 в 17:36)
 

header не закрывает и не открывает страницы. он добавляет поле в заголовок отклика.
скрипт при этом не прерывается, а продолжает выполняться до конца.
Это поле анализирует либо апач (и в этом случае меняет контент на другой, не меняя адреса, и браузеру вообще не видно, что произошел редирект) либо браузер, который при этом запрашивает новый документ.
Либо-либо определяется тем, относительный адрес стоит в локейшене или абсолютный.

   
 
 автор: mihdan   (16.03.2007 в 17:56)   письмо автору
 
   для: Владимир55   (16.03.2007 в 17:36)
 


<?php
header
("Location: finish.php"); 
die;
?>


Или же так


<?php
echo "<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=finish.php;'>
          </HEAD></HTML>"
;

?>

   
 
 автор: Владимир55   (16.03.2007 в 18:13)   письмо автору
 
   для: mihdan   (16.03.2007 в 17:56)
 

Первый вариант только остановил исполнение кода на текущей странице, но не закрыл её и другую страницу не вызвал.

А по второму варианту сработало! Большое спасибо!

А вообще то мне это показалось странным: в рнр так много сложнейших функций, и я полагал, что для БП уж точно есть что-то стандартное и простейшее из трех букв...

   
 
 автор: cheops   (17.03.2007 в 13:00)   письмо автору
 
   для: Владимир55   (16.03.2007 в 18:13)
 

Специфика среды выполнения своеобразная - PHP готовит HTML-код, который будет выполняться на клиентской машине. Т.е. Web-приложение работает сразу на нескольких машинах сети, взаимодействующих при помощи сетевых протоколов. Отсюда некоторые сложности и казалось бы надуманные построения - нужно учитывать особенности протокола и распределённый характер приложения.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования