Закрытый сайт

527
.
Добрый день. Столкнулся с такой ситуацией:
Хочу сделать закрытый сайт. Чтобы пользователь мог видеть сайт только после авторизации. А если пользователь не авторизирован, то перекидывает на страницу с полями для авторизации, но без шапки сайта. то есть в центре страницы только поля для данных.
Пример на скрине
Прикрепленные файлы:
.
Потому что я Бэтмен
Так в последних версиях джона это уже реализовано
.
Потому что я Бэтмен
А нет, там нет "Закрыть для гостей"
.
очень просто! в случае авторизации сохраняем в сессию 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'ы страниц, на которых не должна переадресация срабатывать
Всего: 28