Чтобы понять заголовок PHP () - PullRequest
4 голосов
/ 09 августа 2009

Где вы используете заголовок команды ()?

У меня есть следующий код в handlers / handle_login.php. Пользователь зашел на сайт с index.php, который является отправной точкой.

 if(!$logged_in){
     header("Location: index.php");                                                                          
     die("You are not logged_in");
 }

Если условие if истинно, я получаю ошибку 404, поскольку заголовок переводит меня в handlers/index.php вместо index.php.

Ответы [ 3 ]

8 голосов
/ 09 августа 2009

Хотя я согласен с Ниламо и Эрлом, я надеюсь, что смогу дать более широкую картину:

Использование относительных путей может иметь очень странные последствия в зависимости от того, где находится браузер «думает», что это в иерархии вашего сайта. Например, предположим, что на сайте есть индексный файл «/index.php», но он настроен на прием модуля и действия в пути URI. У вас вполне может быть URL, который выглядит так:

http://www.yoursite.com/forms/contact/

Из этой ситуации возвращается заголовок, подобный:

header("Location: index.php");

может привести к тому, что браузер попытается запросить

http://www.yoursite.com/forms/contact/index.php

что явно не то, что вы хотите. По этой причине обычно лучше использовать «/index.php», как рекомендовано выше, или даже лучше использовать полный URL-адрес, когда это возможно.

Надеюсь, это поможет.

4 голосов
/ 09 августа 2009

Укажите в качестве местоположения полный URL-адрес index.php, а не только имя файла. Согласно php.net, это правильный способ, не используйте относительные пути. Вот пример:

 if(!$logged_in){
     header("Location: http://exampledomain.com/index.php");
     die("You are not logged_in");
 }
1 голос
/ 09 августа 2009

Попробуйте использовать '/':

if(!$logged_in){
     header("Location: /index.php");                                                                          
     die("You are not logged_in");
 }

Без косой черты предполагается, что вы ссылаетесь на что-то в текущем каталоге. Вставляя эту косую черту спереди, вы явно ссылаетесь на файл в корне сайта. Так как страница - index.php, вы также можете легко использовать заголовок (Location: /')".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...