Сессии PHP: Объяснение, пожалуйста?

Я немного изучал PHP, и по большей части это было очень просто. Единственное, что я повесил, – это сеансы для работы. Google неумолимо в этом начинании.

Это может быть одной из двух причин; синтаксис или мое программное обеспечение. В настоящее время я создаю локальный веб-сайт с помощью EasyPHP 5.3.5.0 на компьютере, который не подключен к Интернету. Подключение к Интернету не является вариантом.

То, что я сейчас знаю из сеансов, заключается в том, что многие синтаксисы, связанные с ним, устарели, заменены суперглобальным массивом $_SESSION , который намного проще в использовании. start_session(); должен быть до любого синтаксиса, относящегося к сеансам. Тем не менее, мой скрипт входа не устанавливает сеанс, так как быстрый !isset ($_SESSION['username']) всегда возвращает true.

Мой скрипт настроен следующим образом:

PHP включает в login.php, который является формой. check_login.php – это то, что его проверяет, и если запрос возвращает одну строку, он перенаправляет на login_success.php, который устанавливает сеанс, передает приветственное сообщение, а затем перенаправляет (используя JavaScript) на главную страницу.

Есть идеи?

EDIT включить дополнительную информацию:

Вот краткий обзор моего кода:

index.php:

  включить 'main_login.php'; 

main_login.php:

  if (! isset ($ _SESSION ['username'])) {
 ...
 Форма входа, действие = "cehcklogin.php" method = "post"
 ...
 } Еще {
 var_dump ($ _SESSION): // Просто посмотреть, работает ли он
 } 

checklogin.php:

  Подключение к SQL
 $ username = $ _POST ['username'];
 $ password = $ _POST ['password'];

 $ username / $ password stripslashes / mysql_real_escape_string

 Запрос, чтобы найти имя пользователя и пароль

 $ count = mysql_num_rows ($ result);

 if ($ count = 1) {
 $ _SESSION ["username"] = $ username;
 $ _SESSION ["password"] = $ password;
 заголовок ( "место: login_success.php");
 } Еще {
 echo «Неверное имя пользователя или пароль».
 } 

login_success.php:

Процесс входа в систему идет полным ходом, перенаправляет домой, и в этом проблема.

  session_start ();
 var_dump ($ _ SESSION);  //Это работает
 if (! isset ($ _SESSION ['username'])) {
 заголовок ( "место: index.php");
 }

 Переадресация Javascript и появляется приветственное сообщение. 

Все это работает до тех пор, пока вы не перейдете на главную страницу, которая должна быть установлена $_SESSION['username'] , и она не должна отображать форму, но это так.

Related of "Сессии PHP: Объяснение, пожалуйста?"

Похоже, вы не используете session_start() в своем main_login.php, как указано в etranger. Вы должны вызвать эту функцию в начале каждого нового запроса, чтобы начать использовать сеансы.

В противном случае, если вы вызываете session_start() и вы просто пренебрегли его отображением в примере кода, то, возможно, идентификатор сеанса теряется во время перенаправления. Используете ли вы сеансы на основе файлов cookie или передаете идентификатор сеанса в качестве параметра URL? Попробуйте напечатать session_id() или SID в верхней части каждой страницы. Это сообщит вам, когда сессия потеряна (идентификатор сеанса изменится или будет «»).

Если вы используете сеансы на основе файлов cookie, то, возможно, cookie по какой-то причине теряется. Если вы используете параметр URL для передачи идентификатора сеанса, возможно, прозрачная поддержка идентификатора сеанса работает неправильно.

Вы должны вызвать session_start() как можно раньше, и определенно перед использованием $_SESSION , которая в противном случае была бы пустой.