shokin
Новичок
Дата регистрации:
27.03.2015 08:45:53
Сообщений: 4
Добрый день.
Изучаю видеокурс по основам PHP.
урок 7: Возможность реализации регистрации и авторизации пользователя на сайте.
Все работает, регистрация пользователей, авторизация, выход, но при загрузке страниц без авторизации
появляется сообщение:
Notice: Undefined index: email in /var/www/blocks/top.php on line 53
Notice: Undefined index: password in /var/www/blocks/top.php on line 53
Notice: Undefined index: error_auth in /var/www/blocks/block_auth_form.php on line 2
После авторизации, предупреждение не появляются, все работает.
Код как в уроке.
я так понимаю не нравняться переменные в SESSION?
top.php
if (checkUser($_SESSION["email"], $_SESSION["password"]))
require_once "blocks/block_user_panel.php";
else require_once "blocks/block_auth_form.php";
auth_form.php
if ($_SESSION["error_auth"]) {
unset ($_SESSION["error_auth"]);
$alert = "Неверные e-mail и/или пароль!";
include "blocks/alert.php";
start.php
<?php
session_start();
require_once "lib/functions.php";
?>
что может быть? как убрать ошибку?
gemiks
Мастер
Дата регистрации:
17.03.2013 18:03:11
Сообщений: 177
пропишите в каждом файле session_start();
shokin
Новичок
Дата регистрации:
27.03.2015 08:45:53
Сообщений: 4
В каждом основном файле уже стоит:
<?php
require_once "start.php";
?>
скрипт start.php -
<?php
session_start();
require_once "lib/functions.php";
?>
Как в уроке.
При добавление в файлах session_start();
появляется дополнительное сообщение.
A session had already been started - ignoring session_start() in
и далее путь на строку в файле или блоке.
Я кстати пользуюсь не Денвером а Апач2 на отдельной машине, ОС Debian 7.
gemiks
Мастер
Дата регистрации:
17.03.2013 18:03:11
Сообщений: 177
Попробуйте не передавать значение напряму типу $_SESSION["email"]
а сначала занесите в переменную, это я об функциях, может из-за этого
shokin
Новичок
Дата регистрации:
27.03.2015 08:45:53
Сообщений: 4
Насколько можно понять из сообщения ошибки, иддентификатор сессии не определен, так как пользователь не авторизован.
Вопрос видимо в том как определить иддентификаторы сессии до авторизации?
email password error_auth
shokin
Новичок
Дата регистрации:
27.03.2015 08:45:53
Сообщений: 4
Проблема решена.
Причина была в том что переменных email password error_auth в функции $_SESSION нет, до тех пор пока пользователь не авторизуется.
Поэтому не совсем правильно запрашивать данные в несуществующих переменных, некоторые интернпритаторы PHP выводят предупреждения, хотя код работает.
Более правильно будет предворительно проверять есть ли такие переменные в функции, если нет предлагать авторизоваться, если есть проводить проверку.
прверка авторизации
if (!empty($_SESSION['email'])){ // проверка переменной email
// если есть тогда - проверка пользователя
} else {
// если нет тогда - запрос авторизации
}
обработка кнопки "выход".
<?php
if ($_SESSION["error_auth"]) { // проверка переменной
unset ($_SESSION["error_auth"]); // если есть тогда - сброс переменной, таким образов авторизация удаляеться
$alert = "Неверные e-mail и/или пароль!";
include "blocks/block_alert.php"; // выведем через java скрипт предупреждения
}
?>
в этом случае предупреждения не появляются, все работает.
gemiks
Мастер
Дата регистрации:
17.03.2013 18:03:11
Сообщений: 177
Я вам говорил тоже самое, только в другом формате
gemiks
Мастер
Дата регистрации:
17.03.2013 18:03:11
Сообщений: 177
Я вам говорил тоже самое, только в другом формате