![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
APro |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 328 Регистрация: 5.12.2006 Репутация: 1 Всего: 1 |
В очередной раз зравствуйте!
Моё изучение PHP продвигается семимильными шагами. Когда мне буду вручать Олимпийскую мидаль по программированию, я обязательно поблагодарю Vingrad, всех админов, ну и тех кто мне помогал... Ладно, об этом позже ![]() Объясните пожалуйста мне, как вобще работать с сессиями. Как начинать, как заканчивать и всё, что может понадобится при написании какого-либо скрипта. Если лень писать, то можно хотябы ссылки на статиь (желательно на русском). Пошу не посылать меня в поиск, так как я там был... Но ничего тольком не понял. К сожалению... --
![]() ![]() -------------------- Никогда не спорь с дураком, другие могут не заметить между вами разницы. Чем реже открываешь рот, тем меньше слышишь глупостей. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
||||
|
||||
APro |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 328 Регистрация: 5.12.2006 Репутация: 1 Всего: 1 |
![]() Я посмотрел:
и окончательно запутался. Получается что если значения login и password верны, то в сессию записывается время, а если не верны, то форма ввода этих переменных. Вобще, как сделать авторизацию с сессиями? (чтобы при заходе в index.php да и в любой другой скрипт было видно, что зашёл авторизированный пользователь) Это сообщение отредактировал(а) APro - 25.7.2008, 13:03 -------------------- Никогда не спорь с дураком, другие могут не заметить между вами разницы. Чем реже открываешь рот, тем меньше слышишь глупостей. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Предположим, есть исполняемая программа. EXE файл. Принцип, как она будет работать с конфигурационным файлом, INI например, представляете? Теперь кидаем эту программу в инет. Делаем INI файл для каждого пользователя (хранилище сессии). Теперь надо пользователй различать. В Куку пишем SID - идентификатор сессии, т.е. привязываем его к конкретному INI файлу. Если пользователь будет передавать SID, мы ьудем загружать данные из INI. Не будет передавать - не будем.
INI в данном случае - абстракция. Сессия - просто реализация. Алгоритм авторизации можно глянуть тут: http://base.vingrad.ru/view/2711-Praktikum...ii-Avtorizatsii |
|||
|
||||
APro |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 328 Регистрация: 5.12.2006 Репутация: 1 Всего: 1 |
Круто, только объясни мне, файл который ты приложил в конце, это уже можно использовать как модуль Регистрация/Авторизация?
Добавлено через 3 минуты и 19 секунд Хм, и ещё, а как использовать этот файл? Ну, в том смысле что его можно просто include? Или как? -------------------- Никогда не спорь с дураком, другие могут не заметить между вами разницы. Чем реже открываешь рот, тем меньше слышишь глупостей. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Этот вопрос тут задают пару раз в месяц. Отвечаю. Если хотите чему-то научиться, смотрите на костяк, принцип работы. Если нет - копируйте, используйте, только потом не говорите, что у вас где-то там в скрипте косяк, где-то еще и т.п....
Файл рабочий на версии PHP<5 А как по вашему еще можно подключить файл? Нет, ну я могу, как один из альтернативных вариантов предложить eval(file_get_contents), но боюсь в этой ситуации он не сработает. Скорее всего не сработает... include, конечно же. Это сообщение отредактировал(а) Mal Hack - 25.7.2008, 13:45 |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Нет, не стоит.
Во-первых, там нет регистрации. Во-вторых, там половина функций устарела (как и по первой ссылке, кстати). В-третьих, использовать вообще ничего не надо. Если хочешь, чтобы работало, надо делать только самому. По поводу твоего кода. Логика можно сделать попроще. Разделить авторизацию на два этапа. Первый - проверка. Делается ЭЛЕМЕНТАРНО:
Второй сводится к проверке логина и пароля, и - если успешно - записи логина в сессию. Тоже не бином ньютона. Если вызывает трудности, то надо сначала потренироваться на создании гостевой книги Это сообщение отредактировал(а) Feldmarschall - 25.7.2008, 13:49 |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
||||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
извините, ошибся =)
|
|||
|
||||
APro |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 328 Регистрация: 5.12.2006 Репутация: 1 Всего: 1 |
Ну вобще то, пока я писал своё сообщение что не понимаю, я на самом деле начал понимать... Вернее мне пришла в голову мысль.
Короче, юзер ввёл логин и пароль - проверили. Если нашли в БД такой логин и пароль, то записываем в в БД хеш(логин+пароль+ip+секретное значение) и дальше через сессию передаем. (секретное значение - пусть будет там циферка или слово какое-нибудь) Проверяем авторизован пользователь или нет: Тот переданный хеш ищем в таблице, если найден, то пользователь есть. Выводим надпись "Привет, " + логин пользователя. Ну и раскручиваем тему дальше... Вобщем так можно сделать? (конечно можно, а из соображений по безопасности? Нельзя будет подделать сессию?) Добавлено через 5 минут и 38 секунд Почему-то при запуске qwe.php выскакивает ошибка: Fatal error: Cannot redeclare hash() in C:\xampp\htdocs\nick\qwe.php on line 22 И ещё, в MySQL запросе:
Ошибка. Там же не должно быть запятой после `hash` TINYTEXT NOT NULL , в таблице `auth_sessions` -------------------- Никогда не спорь с дураком, другие могут не заметить между вами разницы. Чем реже открываешь рот, тем меньше слышишь глупостей. |
|||
|
||||
Mal Hack |
|
||||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Секретное значение - излишне... HTTP_USER_AGENT сюда можно для начала вставить.
Не поленитесь, вбейте в поиск. Два дня назад уже обсуждалось.
mysql выдает ошибку? Вот в качестве примера:
Код на плюсах. Ни один компилятор вам даже варинга не выкинет. Код 100% рабочий, но если запятой не поставить, то, т.к. все элементы перечисления в процессе трансляции переводятся в int, то получим: 1, 2, 3 (в ААА), 4,5,6 в BBB (это если запятую поставить)... Если нет, то будет 1, 2, 3 и 1, 2, 3... |
||||||
|
|||||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
APro, не нужно ничего в бд писать. у тебя сессия есть для этого.
секретничать тоже не нужно. можешь написать логин, или id - в общем, что нужно для идентификации пользователя. И ВСЕ. сессии - это очень просто. не надо пытаться делать их сложнее ,чем они есть Добавлено через 9 минут и 20 секунд Казалось бы, авторы пхп сделали работу с сессиями простой до предела - одна-единственная переменная, $_SESSION. Присвоил значение его элементу - положил в сессию. Прочитал элемент - достал из сессии. Не забыть еще session_start(). ВСЁ! Две строчки! И все равно люди умудряются в этих двух соснах заблудиться. |
|||
|
||||
APro |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 328 Регистрация: 5.12.2006 Репутация: 1 Всего: 1 |
а если например в сессии хранить просто ID, то получается, что его можно подделать. Если например злоумышленник узнает ид админа, то у него будут права, так ведь? (или просто сессию нельзя подделать?)
Я читал, что сессию можно подделать и тогда хана... (или это только когда куки используешь?) А сессия делается так, как я понимаю:
А на остальных скриптах проверять сессию sname с ID'ом, и если такой есть в БД, то тогда убирать форму ввхода и писать Welcome сообщение? -------------------- Никогда не спорь с дураком, другие могут не заметить между вами разницы. Чем реже открываешь рот, тем меньше слышишь глупостей. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
ID сессии пишется в куку и передается пользователю. При каждом обращении к скрипту кука передается. Вот ее подделать можно.
Для этого вы и должны делать проверку, на то что пользователь именно тот, кто вам нужен. Самый простой вариант сравнивать USER_AGENT, IP пользователя, его имя с где-ть сохраненным. Естественно зашифрован. |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |