Должны ли мы использовать require_once вместо местоположения заголовка? - PullRequest
0 голосов
/ 17 июня 2010

у меня что-то вроде этого: (если эта страница требует, чтобы пользователь вошел в систему)

if(!isset($_SESSION['usr_id'])){          //if not a logged user
    $_SESSION['redir']=curPageURL();//Saving the current page for the redirection
    header('Location: ../Session/loginFrm.php'); 
}

и в loginFrm.php мы делаем:

{...after validation}    
if(isset($_SESSION['redir'])){
        header('Location: '.$_SESSION['redir']);
    }else{...}

в этом page , они говорят, что мы должны использовать что-то вроде этого:

 ...
    require_once '../Session/loginFrm.php';
    exit();

Это не работает для меня, переменная сеанса теперь содержит включенную страницу, а не текущую страницу.

О чем вы думаете?

Ответы [ 2 ]

2 голосов
/ 17 июня 2010

Он опускает важную часть информации: сброс контекста выполнения.

Когда вы делаете перенаправление, новая страница загружается и может предположить, что это запрошенная страница.Большинство страниц написано так, и большинство программистов PHP пишут такие страницы.Это также означает, что вы можете лучше контролировать контекст с помощью перенаправления.

Если вы хотите поддержать этот трюк include(), то включаемая страница должна быть написана совершенно по-другому.Он должен понимать, что теперь он наследует контекст выполнения, который может содержать мусор из вызывающего файла.Это также означает, что URL-адрес, который пользователь видит в своем браузере, не всегда будет одинаковым.Включенная страница / файл должна учитывать это при настройке целей POST (например), иначе вы получите очень странные ошибки.

Обоснование его рекомендации хорошо, но вы должнырассмотрим в более широком контексте: как часто вам нужно будет выполнять перенаправление (но также и насколько медленным является восходящее соединение)?Поскольку это выглядит как автоматическое перенаправление входа в систему, я думаю, что не так часто .Люди привыкли перенаправлять все время, так что ваши вряд ли будут выделяться как чрезмерные.Так что отложите эту проблему, пока перенаправление не станет проблемой.

2 голосов
/ 17 июня 2010

Я бы лично рекомендовал против этого.Причина в том, что контент отображает URL.Если вы разрешите включение страницы входа в любой URL-адрес, то как поисковые системы должны индексировать контент (или как вы управляете контентом, поскольку, если вам передают URL-адрес, вы получаете разные выходные данные для разных состояний).

URL обозначает Uniform Resource Locator.Он предназначен для предоставления доступа к ресурсу.Вот почему (лично) я бы предпочел всегда иметь соотношение 1: 1 между контентом и URL (и, следовательно, не иметь страниц, отображающих разные вещи, основанные на данных не-URL / POST) ...

мои $ 0,02 ...

...