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
Форумы портала PHP.SU :: Версия для печати :: Вопросы новичка опытным [2]
Форумы портала PHP.SU » PHP » Программирование на PHP » Вопросы новичка опытным

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

16. JustUserR - 04 Августа, 2009 - 02:25:31 - перейти к сообщению
setix На самом деле мне сложно представить удобную систему авторизации без использования cookies - некоторые считают сессии заменой но сессии тоже работаю на куках (Без кук вся сессия и авторизация удаляется при закрытии сайта что далеко не всегда удобно)
Вообще смысл примерно такой - пользователй авторизируется (То есть проверяется правильность логина и пароля) и ему в базе присваивается определенный ID который также кладется в куку и потом каждый раз когда пользоталеь захожит на сайт или на другую страничку сайта то ID из кук отсылается сверяется с тем что в базе и пользователю выдается страница в соответсивии с его правами А когда пользователь жмет выход то сий ID удаляется из обоих мест - базы и куки
По идее по безопасности претензий в таком случае нет потому что взломщик вряд ли сможет угадать (Даже забрутфорсить) 32-значный ID за срок его действия (А при кадом логине он каждый раз разный) но если есть большое желание то можно записывать и IP (Правда если он будет динамический то при каждой его смене пользователю придется логиниться заново)
Надеюсь объяснил понятся если что спрашивайте
17. setix - 04 Августа, 2009 - 05:20:28 - перейти к сообщению
JustUserR Объяснил норамально. Но может по таблице еще подскажешь?
18. Viper - 04 Августа, 2009 - 07:26:51 - перейти к сообщению
а что по таблице?
создаете 2 таблицы
1-я с группами юзверей вида
CODE (text):
скопировать код в буфер обмена
  1. id SMALLINT(2) NOT NULL AUTO_INCREMENT PRIMARY_KEY
  2. usr_group VARCHAR(64) NOT NULL


2-я для юзверей вида
CODE (text):
скопировать код в буфер обмена
  1. id INT(11) NOT NULL AUTO_INCREMENT PRIMARY_KEY
  2. name VARCHAR(50) NOT NULL DEFAULT ''
  3. usr_name VARCHAR(25) NOT NULL DEFAULT ''
  4. email VARCHAR(100) NOT NULL DEFAULT ''
  5. password VARCHAR(100) NOT NULL DEFAULT ''
  6. group_id TINYINT(3) UNSIGNED NOT NULL DEFAULT '1'
  7. lastvisit DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
  8. active SMALLINT(1) NOT NULL DEFAULT '0'


все необходимое есть
далее просто выбираете через JOIN и условия что нужно и работаете. по поводу cookies...
прошлый век. используйте сессии или храните их в базе.
19. setix - 04 Августа, 2009 - 18:46:31 - перейти к сообщению
Viper Про 2 таблицу понял зачем она а первая для чего?
20. JustUserR - 05 Августа, 2009 - 02:37:45 - перейти к сообщению
setix Во второй хранятся имена для групп
То есть если у пользователя указан ID группы 10 то надо сделать запрос в первую таблицу выудить запись с данным ID и на основании этого сказать имя группы
На самом деле можно обойтись байтовым полем - A админ M модератоп U юзверь итд
21. setix - 05 Августа, 2009 - 10:33:00 - перейти к сообщению
JustUserR понятно.
Может кто нибудь ссылку кинуть на хорошое описание авторизации с COOKIE. Просто понять не могу как с ними работать. Или что то кроме них можете посоветовать?
22. JustUserR - 05 Августа, 2009 - 14:31:41 - перейти к сообщению
setix Сейчас вам дружно начнут советовать сессии но они забывают о том что сесии по нормальному работают только совместно с cookie
Ну а про работу с куками можн много где почитать прямо в поисковике вбейте PHP cookie и читате
23. Viper - 05 Августа, 2009 - 14:44:36 - перейти к сообщению
JustUserR пишет:
Сейчас вам дружно начнут советовать сессии но они забывают о том что сесии по нормальному работают только совместно с cookie

а обоснование можно услышать ? самому интересно.
24. Champion - 05 Августа, 2009 - 14:46:46 - перейти к сообщению
JustUserR пишет:
Сейчас вам дружно начнут советовать сессии но они забывают о том что сесии по нормальному работают только совместно с cookie
Человек спросил про куки - будет про куки. Хотя, сессии лучше) Сессии нормально работают не только с куками. Это уже обсуждалось)

Автору:
http://www.phpclub[dot]net/manrus/f/setcookie[dot]html - почитай тут.
Куки - просто место, где ты хранишь то,что тебе надо. Логин, пароль, флаг авторизации, настройки пользователя - что угодно.
Без куков авторизацию знаешь как сделать?
25. setix - 05 Августа, 2009 - 16:43:24 - перейти к сообщению
ChampionViperJustUserR не ссорьтесь! я пока в деле авторизации нуб. Так что все интересно.

Из того что могу делать дак это только проверку пароля и имени пользователя ну и внесение записей в базу данных
(Добавление)
Champion по поводу ссылки: такая инфа есть, но не все понятно.

1 не пойму как вообще объявить куки
2 где их описывать (в каком месте документа)

из того что знаю про куки только как значения новые присваивать ))) В большее пока не вник. Еще одно можно и инфу про сессии но желательны примеры реальные (код, листинг) Просто в сухом тексте еще не все понимаю.
(Добавление)
Сайт пишу первый раз вот и как сталкиваюсь с вопросом стараюсь разбираться. Примеры есть, но только некоторые не полные, только куски кода вот про куки и сессии вообще толком нет примеров.
(Добавление)
читаю книгу но нет нормальных примеров по использованию.
26. Roler - 05 Августа, 2009 - 16:56:02 - перейти к сообщению
Цитата:
1 не пойму как вообще объявить куки

Хоть бы поискал. Команда setcookie.
Цитата:

2 где их описывать (в каком месте документа)

До вывода любой информации на экран. То есть, никакого хтмл, допустим только ничегоневыводящий код php Улыбка
Можно сделать буферизацию вывода, тогда можно работать с куками в любом месте страницы.
27. Champion - 05 Августа, 2009 - 16:56:46 - перейти к сообщению
setix пишет:
Из того что могу делать дак это только проверку пароля и имени пользователя
Ну я понимаю, ты их из массива POST берешь. Как проверить ты знаешь. Чтобы использовать куки, тебе просто имя пользователя и пароль надо будет из куки взять(как - написано, я ссылку привел), а дальше с ним всё то же самое делать.

Единственно что - при приходе на каждую страницу не нужно проверять пароль и логин. И записывать в куку их тоже не следует. Можно записать пароль в зашифрованном виде (ну логин тоже) и использовать его именно для, как бы сказать, первичного входа. А при переходе между страницами использовать другую информацию. Например, записать в куку id пользователя, чтобы определять кто он и делать соответствующие запросы к бд и флажок, что он авторизован. Но флажок этот можно подделать, если он будет выглядеть слишком просто. Поэтому можно его зашифровывать, добавлять в него что-нибудь. Можно md5(флаг+id+мусор+useragent+remote_ip+дата) чтоб прям только с этого ip, только сегодня и только этим браузером. Только чтоб ты проверить смог))
И надо учитывать, что куки - это обычные текстовые файлы и их мгут скопировать к себе нехорошие люди.

А сесии лучше тем, что все данные будут храниться на сервере. Клиенту будет доступен только идентификатор сесии и больше ничего. Сессии: http://phpfaq[dot]ru/sessions
28. setix - 05 Августа, 2009 - 16:57:44 - перейти к сообщению
Пробовал использовать COOKIE

PHP:
скопировать код в буфер обмена
  1. <?
  2.                                                         if ($_COOKIE["autor"]=='')
  3.                                                                 {
  4.                                                                 $login= $_REQUEST["login"];
  5.                                                                 $password= $_REQUEST["pass"];
  6.                                                                 mysql_connect('localhost','root','') or die('нет соединения с mysql');
  7.                                                                 mysql_select_db('my') or die('Не найдена база данных');
  8.                                                                 $l=mysql_query("SELECT USER_LOGIN, USER_PASS  FROM user WHERE USER_LOGIN = '".$login."'  AND USER_PASS ='".$password."';");
  9.                                                                 if (mysql_affected_rows()==1)
  10.                                                                         {
  11.                                                                         echo ('<div class="OS"> пароль введен верно </div>');
  12.                                                                         setcookie("autor","1");
  13.                                                                         }
  14.                                                                 else
  15.                                                                         {
  16.                                                                         echo ('<div class="OS"> Не верный пароль </div>');
  17.                                                                         setcookie("autor","");
  18.                                                                         }
  19.                                                                 }
  20.                                                         else
  21.                                                                 {
  22.                                                                 setcookie("autor","");
  23.                                                                 }
  24.                                                         ?>

выводит.


пароль введен верно
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. Может пояснит кто нибудь поподробнее в чем недостатки и ошибки могут быть.
29. Champion - 05 Августа, 2009 - 17:00:48 - перейти к сообщению
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() были уже посланы заголовки. Например, при выводе на экран. Обычно все дело в пробельном символе перед <? . Проверь.
30. setix - 05 Августа, 2009 - 17:02:24 - перейти к сообщению
сразу скажу что кроме данного куска кода не использовал ни header ни cookies
(Добавление)
у меня этот код встроен

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


я так понимаю из за этого и ошибка?
(Добавление)
может подкорректируете немного код?

 

Powered by ExBB FM 1.0 RC1