Я немного изучал 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 включить дополнительную информацию:
Вот краткий обзор моего кода:
включить 'main_login.php';
if (! isset ($ _SESSION ['username'])) {
...
Форма входа, действие = "cehcklogin.php" method = "post"
...
} Еще {
var_dump ($ _SESSION): // Просто посмотреть, работает ли он
}
Подключение к 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 «Неверное имя пользователя или пароль».
}
Процесс входа в систему идет полным ходом, перенаправляет домой, и в этом проблема.
session_start ();
var_dump ($ _ SESSION); //Это работает
if (! isset ($ _SESSION ['username'])) {
заголовок ( "место: index.php");
}
Переадресация Javascript и появляется приветственное сообщение.
Все это работает до тех пор, пока вы не перейдете на главную страницу, которая должна быть установлена $_SESSION['username'] , и она не должна отображать форму, но это так.
Похоже, вы не используете session_start() в своем main_login.php, как указано в etranger. Вы должны вызвать эту функцию в начале каждого нового запроса, чтобы начать использовать сеансы.
В противном случае, если вы вызываете session_start() и вы просто пренебрегли его отображением в примере кода, то, возможно, идентификатор сеанса теряется во время перенаправления. Используете ли вы сеансы на основе файлов cookie или передаете идентификатор сеанса в качестве параметра URL? Попробуйте напечатать session_id() или SID в верхней части каждой страницы. Это сообщит вам, когда сессия потеряна (идентификатор сеанса изменится или будет «»).
Если вы используете сеансы на основе файлов cookie, то, возможно, cookie по какой-то причине теряется. Если вы используете параметр URL для передачи идентификатора сеанса, возможно, прозрачная поддержка идентификатора сеанса работает неправильно.
Вы должны вызвать session_start() как можно раньше, и определенно перед использованием $_SESSION , которая в противном случае была бы пустой.