Добрый день. Столкнулся с такой ситуацией:
Хочу сделать закрытый сайт. Чтобы пользователь мог видеть сайт только после авторизации. А если пользователь не авторизирован, то перекидывает на страницу с полями для авторизации, но без шапки сайта. то есть в центре страницы только поля для данных.
Пример на скрине
Так в последних версиях джона это уже реализовано
А нет, там нет "Закрыть для гостей"
очень просто! в случае авторизации сохраняем в сессию ID пользователя. соответственно если его нет - пользователь неавторизован и бросаем его на страницу авторизации.
если по шагам:
1 session_start() - открывает&продолжает сессию по переданному в куках PHPSESSID или через GET или POST-переменную. Сессия, как и ассоциативный массив, позволяет хранить пары ключ = значение. Обьекты классов, насколько мне известно, хранить нельзя, но можно их сериализовать и сохранить. Доступ к данным сессии можно получить через суперглобальную переменную $_SESSION
2 проверяем залогинен ли пользователь:
if(isset($_SESSION['user_id']) && !empty($_SESSION['user_id']) && /*можно разных проверок написать*/){ // пользователь авторизован. его $id = $_SESSION['user_id'] }else{ // пользователь неавторизован. перенаправление на страницу логина return; // или аналог }
3 Всё! у вас есть id пользователя. все остальное можно взять из бд. Можно также в сессию писать время последнего входа и сверять что, например, через 30 минут неактивности бросать на страницу авторизации (автовыход). хотя я не уверен что именно это так делается (есть lifetime у куков, может они тут привязаны)
4 выход (logout)
unset($_SESSION['user_id'])
PS сессии хранятся на сервере, вообще их можно хранить как в файлах (стандартный способ), так и в бд.
PPS вообще рекомендую использовать фреймворки. они отчасти хороши тем, что некоторые тонкие моменты там учтены, что-то упрощено и порой не нужно задумыватся над тем, что там внутри происходит. хотя бывает и наоборот).
Джастин, нам тоже задумываться не надо, у нас движок и если $user_id есть - значит пользователь вошел и ему надо показывать сайт, иначе показывать что-то другое, форму входа, например
Джастин, Спасибо что так подробно ) Но я вот думаю, как сделать эту страницу. Да и я не столь силен чтобы понять все тобой написанное)
Nurbekov, в шапке поставь переадресацию для гостей на страницу входа
Только у меня такой вопрос.... Как новые юзеры пройдут регистрацию, если ты сделаешь так как хочешь? Гг
# Nurbekov (03.07.2015 / 13:46)
Джастин, Спасибо что так подробно ) Но я вот думаю, как сделать эту страницу. Да и я не столь силен чтобы понять все тобой написанное)
Добавь в файл условие
if (isset($user_id)){
/* Страница для авторизованых */
} else {
/* Вы не авторизованы! */
}
# Джастин (03.07.2015 / 11:53)
очень просто! в случае авторизации сохраняем в сессию ID пользователя. соответственно если его нет - пользователь неавторизован и бросаем его на страницу авторизации.
Гг )))
Я думаю, кто такой вумный появился, обо всем знает ))) А оказалось... гугл форевор
пыщ-пыщ-пыщ
# Zeen (03.07.2015 / 13:50)
Nurbekov, в шапке поставь переадресацию для гостей на страницу входа
Только у меня такой вопрос.... Как новые юзеры пройдут регистрацию, если ты сделаешь так как хочешь? Гг
в условии еще и перечислить $headmod'ы страниц, на которых не должна переадресация срабатывать