Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Авторизация

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (4): [1] 2 3 4 »   

> Описание: Авторизация админа (сессии, куки и еще пару вопросов) - посмотрите код
Hapson
Отправлено: 14 Июня, 2013 - 18:40:04
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


Здравствуйте.
Ну, собственно, начал учить PHP, а так как мой моск понимает исключительно практику, то решил писать сайт параллельно с чтением книг.
Так как понятия не имел, с чего начать, взял за основу вот это
Сейчас завис на авторизации админа.
В общих чертах, это как бы CMS будет. С админкой - все дела. Админка по аналогии с джумлой, а сайт аналог Drive2.ru. Короче это чисто практика для меня, не факт, что это будет жить. Мне главное писать самому.

Ну поехали...
Структура:
Спойлер (Отобразить)


Админка доступна по адресу http://site[dot]ru/admin
Открывается файл index.php
Спойлер (Отобразить)


Здесь подключается конфиг config.php (создается после установки... ну CMS что ли...)
Спойлер (Отобразить)


Далее fun.php - функции

Спойлер (Отобразить)


Далее аутентификация - файл auth.php

Спойлер (Отобразить)


Этот файл я переписал, немного изменив тот, что предлагал автор по вышеуказанной ссылке. Он предлагал вот что

Спойлер (Отобразить)


Я так думаю не нужно передавать в сессию логин и пароль. Мне кажется, что id вполне достаточно для этого. Или нет? Безопасен ли мой файл авторизации? Не обращайте внимания на отсутствие проверок полей - это потом.

Еще вот что не могу понять. Я вхожу в админку, затем нажимаю кнопку выйти, а потом жму кнопку назад в браузере. И тут я опять попадаю в админку и снова я авторизован. Как победить это? Как сделать чтобы при клике назад в браузере, я не попадал снова в админку.

PS
Ну и еще подскажите, если это можно объяснить в двух словах. Как можно реализовать вставку модулей в шаблон сайта. Типа как в джумле. Или здесь без классов никак?

Вот сам шаблон, как-то так

Спойлер (Отобразить)


А это шаблон админки, тут находится кнопка выйти

Спойлер (Отобразить)

(Добавление)
Да, вот что еще забыл.
Стоит ли использовать сессии для пользователей? Говорят они сильно грузят сервер... А куки тоже плохо.

(Отредактировано автором: 15 Июня, 2013 - 19:22:02)



-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
VygVik
Отправлено: 14 Июня, 2013 - 21:39:28
Post Id



Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Цитата:
Я так думаю не нужно передавать в сессию логин и пароль. Мне кажется, что id вполне достаточно для этого. Или нет? Безопасен ли мой файл авторизации? Не обращайте внимания на отсутствие проверок полей - это потом.

Еще вот что не могу понять. Я вхожу в админку, затем нажимаю кнопку выйти, а потом жму кнопку назад в браузере. И тут я опять попадаю в админку и снова я авторизован. Как победить это? Как сделать чтобы при клике назад в браузере, я не попадал снова в админку.


Так всего много)
Логин и пароль желательно передать, ведь на основании этого можно авторизоваться. Я думаю взломать можно любой сайт, дело за профессионалом.
После выхода с админки нужно завершить сессию, тогда нажимая в браузере назад вы не сможете войти в админку.
 
 Top
Master_pascal
Отправлено: 14 Июня, 2013 - 23:48:35
Post Id



Частый гость


Покинул форум
Сообщений всего: 147
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)

[+][+][+][+][+]


без куки и сессий регистрацию не сделаешь. гг , а зачем ты страницу ,где кнопка выйти, показал?
показывай чо там у тебя в exit.php
(Добавление)
тебе надо создать exit.php и сделать unset($_SESSION['login'])
 
 Top
esterio
Отправлено: 15 Июня, 2013 - 02:26:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Master_pascal
вы в етом уверены? конешно так лучше но не надо так категорически

Hapson
очень много всего. вряли ктонибудь станет читать

(Отредактировано автором: 15 Июня, 2013 - 02:34:49)

 
 Top
teddy
Отправлено: 15 Июня, 2013 - 02:32:05
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Master_pascal пишет:
без куки и сессий регистрацию не сделаешь

Регистрацию - сделает.

а файл отдельный для выхода создавать вовсе не нужно. Достаточно использовать GET параметр. Например www[dot]site[dot]ru/index.php?logout

PHP:
скопировать код в буфер обмена
  1. if(isset($_GET['logout'])){
  2.     unset($_SESSION['login']);
  3.     header("Location: index.php");
  4.      exit;
  5. }
 
 Top
AlexAnder
Отправлено: 15 Июня, 2013 - 07:21:25
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)





а для чего session_destroy() тогда? Не понял


ТС, возможно, не знает о существовании такого тега как SPOILER Нахмурился

(Отредактировано автором: 15 Июня, 2013 - 07:22:18)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Июня, 2013 - 12:43:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




AlexAnder пишет:
session_destroy()
Для того, чтобы вообще её уничтожить. Будто её и не стартовали. Тогда даже при желании ты в неё ничего не запишешь. И например будут проблемы с капчей у гостей, если правильный ответ пишется в сессию.
 
 Top
AlexAnder
Отправлено: 15 Июня, 2013 - 14:53:48
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




DeepVarvar пишет:
AlexAnder пишет:
session_destroy()
Для того, чтобы вообще её уничтожить. Будто её и не стартовали. Тогда даже при желании ты в неё ничего не запишешь. И например будут проблемы с капчей у гостей, если правильный ответ пишется в сессию.

т.е. при логауте(нажатии на ссылку выйти) нужно ансетить идентификационные данные, а не уничтожать сессию?

(Отредактировано автором: 15 Июня, 2013 - 14:54:23)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
vanicon
Отправлено: 15 Июня, 2013 - 15:38:46
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Насколько я знаю session_destroy() уничтожает сессию (на стороне сервере), поэтому не всегда нужно уничтожать сессию, а достаточно просто удалить куку...
Ps Поправьте если что

(Отредактировано автором: 15 Июня, 2013 - 15:39:18)



-----
Так было, так есть и так будет
 
 Top
LIME
Отправлено: 15 Июня, 2013 - 15:41:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




vanicon а если будет убита кука какой смысл сохранять файл сессии?
как он будет доступен?
 
 Top
vanicon
Отправлено: 15 Июня, 2013 - 15:43:32
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Ну это если id сессии хранить в бд, хотя да смысла походу мало оставлять сессию в живых


-----
Так было, так есть и так будет
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Июня, 2013 - 15:45:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




AlexAnder пишет:
т.е. при логауте(нажатии на ссылку выйти) нужно ансетить идентификационные данные, а не уничтожать сессию?
Ага Закатив глазки
 
 Top
vanicon
Отправлено: 15 Июня, 2013 - 15:48:28
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




DeepVarvar
Хм а почему?


-----
Так было, так есть и так будет
 
 Top
AlexAnder
Отправлено: 15 Июня, 2013 - 15:57:00
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




DeepVarvar пишет:
AlexAnder пишет:
т.е. при логауте(нажатии на ссылку выйти) нужно ансетить идентификационные данные, а не уничтожать сессию?
Ага Закатив глазки

ну файл с данными же останется на сервере, или нет?


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
Hapson
Отправлено: 15 Июня, 2013 - 19:33:26
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


VygVik пишет:


Так всего много)
Логин и пароль желательно передать, ведь на основании этого можно авторизоваться. Я думаю взломать можно любой сайт, дело за профессионалом.
После выхода с админки нужно завершить сессию, тогда нажимая в браузере назад вы не сможете войти в админку.

Ну там же смысл в чем.

Сначала проверяется, есть ли в сессии "id" пользователя. Если есть, то из базы выбираются все данные этого "id". То есть, если "id" = 5, то из базы выбираются все данные на пользователя с "id" = 5 (логин, пароль, статус и id).
По задумке есть 4 статуса у пользователей: 0 - гость, 1 - админ, 2 - модер, 3 - юзер.
Далее проверяется, если в выбранных данных статус равен 1, значит это админ, можно показать админку.

Если в сессии "id" не было, тогда из базы выбираются данные согласно паре логин-пароль, которые ввел пришедший юзер.
Если в этих данных статус пользователя = 1, то значит это админ, если нет, значит не админ - отправляем юзера на главную, ему сюда нельзя.

Если пользователь нажал кнопку выход (<a href="?exit=ok">Выйти</a>) в админке, тогда удаляется "id" из сессии и уничтожается сессия.
Но почему-то при нажатии кнопки назад в браузере, сессия опять жива и "id" админа опять существует в сессии.
(Добавление)
Master_pascal пишет:
без куки и сессий регистрацию не сделаешь. гг , а зачем ты страницу ,где кнопка выйти, показал?
показывай чо там у тебя в exit.php
(Добавление)
тебе надо создать exit.php и сделать unset($_SESSION['login'])


Нету exip.php.
В админке есть <a href="?exit=ok">Выйти</a>
а в файле авторизации
CODE (htmlphp):
скопировать код в буфер обмена
  1. if(!empty($_GET['exit']) == 'ok'){
  2.         unset($_SESSION['id']);
  3.         session_destroy();


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
Страниц (4): [1] 2 3 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB