Автор Тема: Мистика с header("location...  (Прочитано 4855 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Мистика с header("location...
« : 31 Октября 2002, 09:50:15 »
Пишем:
1.php

<?
header("location: /2.php");
?>

2.php

<?
echo 
$REQUEST_URI;
?>


Запускаем 1.php и видим:
/1.php
Странно..... ведь должен был произойти редирект и напечататься
/2.php

Теперь правим 1-й PHP

<?
header("location: 2.php");
?>

А вот тут всё OK.
Пишет /2.php
Ну или так

<?
header("location: http://".$_SERVER[\'SERVER_NAME\']."/2.php");
?>

То тоже всё ок.

Ни кто с этим не сталкивался? Как лечится? Или придётся везде юзать относительный редирект? Или лучше везде добавлять http://".$_SERVER[\'SERVER_NAME\']."
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Мистика с header("location...
« Ответ #1 : 31 Октября 2002, 12:08:17 »
на dklab.ru что-то похожее обсуждалось (смотри наблу про перенаправления)
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Nevermind

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 52
  • +0/-0
  • 0
    • Просмотр профиля
Мистика с header("location...
« Ответ #2 : 01 Ноября 2002, 02:31:01 »
Alexandr
Может там в первом коде просто точки не хватает? Попробуй так:
<?
header("location: [b].[/b]/2.php");
?>

Оффлайн giba

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 1
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Мистика с header("location...
« Ответ #3 : 01 Ноября 2002, 03:24:34 »
Люди!
С точкой, это в той же папке, а без точки - корень.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Мистика с header("location...
« Ответ #4 : 01 Ноября 2002, 11:46:47 »
Alexandr
а ты попроси 1.php FlashGet-ом
и посмотри заголовки.
сдается мне, что location ты там не увидишь

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Мистика с header("location...
« Ответ #5 : 04 Ноября 2002, 11:51:27 »
Т.е.?
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Мистика с header("location...
« Ответ #6 : 04 Ноября 2002, 12:19:09 »
я думаю, что РНР просматривает то, что ты пишешь в header и поступает по=разному.
например, если в начале адреса стоит / то выполняет суб-реквест, и не посылает заголовок бровзеру.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Мистика с header("location...
« Ответ #7 : 04 Ноября 2002, 12:49:36 »
Да точно, Ромка, так и есть.
http://dklab.ru/chicken/nablas/17.html

И что, получается выход - использовать только такую конструкцию
header("location: http://".$_SERVER[\'SERVER_NAME\']."/2.php");
?>
вместо удобной такой:
header("location: /2.php");
?>

[OFF]
Относительные урлы я думаю отпадают, т.к. начнут появлятся, напр., такие уродливые конструкции ../../some_script.php
[/off]
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Мистика с header("location...
« Ответ #8 : 04 Ноября 2002, 12:52:11 »
И кстати, судя по указаной выше статейке, PHP тут вовсе не причём :-)
Эт апач по разному заголовки обрабатывает, а PHP только их посылает.
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Мистика с header("location...
« Ответ #9 : 04 Ноября 2002, 13:17:57 »
вообще-то, РНР посылает их бровзеру, а не апачу.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Мистика с header("location...
« Ответ #10 : 04 Ноября 2002, 13:31:27 »
http://dklab.ru/chicken/nablas/17.html

Цитировать
Header("Location: /some/other/script.html");
exit();
?>

Когда сервер получает от скрипта страницу и собирается отправить ее браузеру, он прежде всего проверяет: нет ли в ней заголовка Location с указанием URI документа. Если есть, то сервер порождает новый процесс — копию самого себя — и велит ей выполнить новый запрос, а о старом «забывает». Повторюсь: все это происходит без участия браузера, который видит лишь конечную страницу с тем же самым URL, который был у самого первого скрипта.
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Мистика с header("location...
« Ответ #11 : 04 Ноября 2002, 14:30:48 »
Alexandr
Понял, спасибо.

Есть еще вариант решения твоей проблемы.
Не использовать в своих скриптах $REQUERT_URI

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Мистика с header("location...
« Ответ #12 : 04 Ноября 2002, 16:19:15 »
Да в общем-то я уже исправил:
HomePge\'ом во всей папке заменил
location: /
location: http://".$_SERVER[\'SERVER_NAME\']."/

А насчёт
Цитировать
Не использовать в своих скриптах $REQUERT_URI

Я из-за этого и стал эту проблему ковырять:
У мя на сайте функция, которая менюху (слева) строит, как раз использует $REQUERT_URI
напр., http://www.autodealer.ru/price/part/

Вишь как прикольно! :-)
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Мистика с header("location...
« Ответ #13 : 04 Ноября 2002, 17:07:52 »
а мне для таких целей вполне хватает PHP_SELF :-)

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Мистика с header("location...
« Ответ #14 : 04 Ноября 2002, 18:14:06 »
Я тож сначала его юзал, но я ведь юзаю mod_rewrite => PHP_SELF сейчас не катит!
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28