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 :: Вопросы новичка опытным [2]
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
setix На самом деле мне сложно представить удобную систему авторизации без использования cookies - некоторые считают сессии заменой но сессии тоже работаю на куках (Без кук вся сессия и авторизация удаляется при закрытии сайта что далеко не всегда удобно)
Вообще смысл примерно такой - пользователй авторизируется (То есть проверяется правильность логина и пароля) и ему в базе присваивается определенный ID который также кладется в куку и потом каждый раз когда пользоталеь захожит на сайт или на другую страничку сайта то ID из кук отсылается сверяется с тем что в базе и пользователю выдается страница в соответсивии с его правами А когда пользователь жмет выход то сий ID удаляется из обоих мест - базы и куки
По идее по безопасности претензий в таком случае нет потому что взломщик вряд ли сможет угадать (Даже забрутфорсить) 32-значный ID за срок его действия (А при кадом логине он каждый раз разный) но если есть большое желание то можно записывать и IP (Правда если он будет динамический то при каждой его смене пользователю придется логиниться заново)
Надеюсь объяснил понятся если что спрашивайте
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
setix
Отправлено: 04 Августа, 2009 - 05:20:28
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Июль 2009
Помог: 0 раз(а)
JustUserR Объяснил норамально. Но может по таблице еще подскажешь?
Viper
Отправлено: 04 Августа, 2009 - 07:26:51
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
а что по таблице?
создаете 2 таблицы
1-я с группами юзверей вида
lastvisit DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
active SMALLINT(1) NOT NULL DEFAULT '0'
все необходимое есть
далее просто выбираете через JOIN и условия что нужно и работаете. по поводу cookies...
прошлый век. используйте сессии или храните их в базе.
Покинул форум
Сообщений всего: 31
Дата рег-ции: Июль 2009
Помог: 0 раз(а)
Viper Про 2 таблицу понял зачем она а первая для чего?
JustUserR
Отправлено: 05 Августа, 2009 - 02:37:45
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
setix Во второй хранятся имена для групп
То есть если у пользователя указан ID группы 10 то надо сделать запрос в первую таблицу выудить запись с данным ID и на основании этого сказать имя группы
На самом деле можно обойтись байтовым полем - A админ M модератоп U юзверь итд
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
setix
Отправлено: 05 Августа, 2009 - 10:33:00
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Июль 2009
Помог: 0 раз(а)
JustUserR понятно.
Может кто нибудь ссылку кинуть на хорошое описание авторизации с COOKIE. Просто понять не могу как с ними работать. Или что то кроме них можете посоветовать?
JustUserR
Отправлено: 05 Августа, 2009 - 14:31:41
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
setix Сейчас вам дружно начнут советовать сессии но они забывают о том что сесии по нормальному работают только совместно с cookie
Ну а про работу с куками можн много где почитать прямо в поисковике вбейте PHP cookie и читате
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Viper
Отправлено: 05 Августа, 2009 - 14:44:36
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
JustUserR пишет:
Сейчас вам дружно начнут советовать сессии но они забывают о том что сесии по нормальному работают только совместно с cookie
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
JustUserR пишет:
Сейчас вам дружно начнут советовать сессии но они забывают о том что сесии по нормальному работают только совместно с cookie
Человек спросил про куки - будет про куки. Хотя, сессии лучше) Сессии нормально работают не только с куками. Это уже обсуждалось)
Автору: http://www.phpclub[dot]net/manrus/f/setcookie[dot]html - почитай тут.
Куки - просто место, где ты хранишь то,что тебе надо. Логин, пароль, флаг авторизации, настройки пользователя - что угодно.
Без куков авторизацию знаешь как сделать?
setix
Отправлено: 05 Августа, 2009 - 16:43:24
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Июль 2009
Помог: 0 раз(а)
ChampionViperJustUserR не ссорьтесь! я пока в деле авторизации нуб. Так что все интересно.
Из того что могу делать дак это только проверку пароля и имени пользователя ну и внесение записей в базу данных (Добавление) Champion по поводу ссылки: такая инфа есть, но не все понятно.
1 не пойму как вообще объявить куки
2 где их описывать (в каком месте документа)
из того что знаю про куки только как значения новые присваивать ))) В большее пока не вник. Еще одно можно и инфу про сессии но желательны примеры реальные (код, листинг) Просто в сухом тексте еще не все понимаю. (Добавление)
Сайт пишу первый раз вот и как сталкиваюсь с вопросом стараюсь разбираться. Примеры есть, но только некоторые не полные, только куски кода вот про куки и сессии вообще толком нет примеров. (Добавление)
читаю книгу но нет нормальных примеров по использованию.
Roler
Отправлено: 05 Августа, 2009 - 16:56:02
Посетитель
Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008 Откуда: Россия
Помог: 1 раз(а)
Цитата:
1 не пойму как вообще объявить куки
Хоть бы поискал. Команда setcookie.
Цитата:
2 где их описывать (в каком месте документа)
До вывода любой информации на экран. То есть, никакого хтмл, допустим только ничегоневыводящий код php
Можно сделать буферизацию вывода, тогда можно работать с куками в любом месте страницы.
Champion
Отправлено: 05 Августа, 2009 - 16:56:46
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
setix пишет:
Из того что могу делать дак это только проверку пароля и имени пользователя
Ну я понимаю, ты их из массива POST берешь. Как проверить ты знаешь. Чтобы использовать куки, тебе просто имя пользователя и пароль надо будет из куки взять(как - написано, я ссылку привел), а дальше с ним всё то же самое делать.
Единственно что - при приходе на каждую страницу не нужно проверять пароль и логин. И записывать в куку их тоже не следует. Можно записать пароль в зашифрованном виде (ну логин тоже) и использовать его именно для, как бы сказать, первичного входа. А при переходе между страницами использовать другую информацию. Например, записать в куку id пользователя, чтобы определять кто он и делать соответствующие запросы к бд и флажок, что он авторизован. Но флажок этот можно подделать, если он будет выглядеть слишком просто. Поэтому можно его зашифровывать, добавлять в него что-нибудь. Можно md5(флаг+id+мусор+useragent+remote_ip+дата) чтоб прям только с этого ip, только сегодня и только этим браузером. Только чтоб ты проверить смог))
И надо учитывать, что куки - это обычные текстовые файлы и их мгут скопировать к себе нехорошие люди.
А сесии лучше тем, что все данные будут храниться на сервере. Клиенту будет доступен только идентификатор сесии и больше ничего. Сессии: http://phpfaq[dot]ru/sessions
setix
Отправлено: 05 Августа, 2009 - 16:57:44
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Июль 2009
пароль введен верно
Warning: Cannot modify header information - headers already sent by (output started at B:\home\My.ru\www\login.php:11) in B:\home\My.ru\www\login.php on line 38
в общем пока еще полный 0 в этом. Судя по сообщению я так понимаю что не получилось изменить инфу в header. Может пояснит кто нибудь поподробнее в чем недостатки и ошибки могут быть.
Champion
Отправлено: 05 Августа, 2009 - 17:00:48
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
setix пишет:
Cannot modify header information - headers already sent by (output started at B:\home\My.ru\www\login.php:11) in B:\home\My.ru\www\login.php on line 38
Потому что до использования setcookie() были уже посланы заголовки. Например, при выводе на экран. Обычно все дело в пробельном символе перед <? . Проверь.
setix
Отправлено: 05 Августа, 2009 - 17:02:24
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Июль 2009
Помог: 0 раз(а)
сразу скажу что кроме данного куска кода не использовал ни header ни cookies (Добавление)
у меня этот код встроен
я так понимаю из за этого и ошибка? (Добавление)
может подкорректируете немного код?Отредактировано модератором: Champion, 05 Августа, 2009 - 18:50:44 Свертываем большой код.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.