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]

 PHP.SU

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


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

> Описание: Вопросы связанные с php на разную тему
JustUserR
Отправлено: 04 Августа, 2009 - 02:25:31
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




setix На самом деле мне сложно представить удобную систему авторизации без использования cookies - некоторые считают сессии заменой но сессии тоже работаю на куках (Без кук вся сессия и авторизация удаляется при закрытии сайта что далеко не всегда удобно)
Вообще смысл примерно такой - пользователй авторизируется (То есть проверяется правильность логина и пароля) и ему в базе присваивается определенный ID который также кладется в куку и потом каждый раз когда пользоталеь захожит на сайт или на другую страничку сайта то ID из кук отсылается сверяется с тем что в базе и пользователю выдается страница в соответсивии с его правами А когда пользователь жмет выход то сий ID удаляется из обоих мест - базы и куки
По идее по безопасности претензий в таком случае нет потому что взломщик вряд ли сможет угадать (Даже забрутфорсить) 32-значный ID за срок его действия (А при кадом логине он каждый раз разный) но если есть большое желание то можно записывать и IP (Правда если он будет динамический то при каждой его смене пользователю придется логиниться заново)
Надеюсь объяснил понятся если что спрашивайте


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
setix
Отправлено: 04 Августа, 2009 - 05:20:28
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Июль 2009  


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




JustUserR Объяснил норамально. Но может по таблице еще подскажешь?
 
 Top
Viper
Отправлено: 04 Августа, 2009 - 07:26:51
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




а что по таблице?
создаете 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...
прошлый век. используйте сессии или храните их в базе.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
setix
Отправлено: 04 Августа, 2009 - 18:46:31
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Июль 2009  


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




Viper Про 2 таблицу понял зачем она а первая для чего?
 
 Top
JustUserR
Отправлено: 05 Августа, 2009 - 02:37:45
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




setix Во второй хранятся имена для групп
То есть если у пользователя указан ID группы 10 то надо сделать запрос в первую таблицу выудить запись с данным ID и на основании этого сказать имя группы
На самом деле можно обойтись байтовым полем - A админ M модератоп U юзверь итд


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
setix
Отправлено: 05 Августа, 2009 - 10:33:00
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Июль 2009  


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




JustUserR понятно.
Может кто нибудь ссылку кинуть на хорошое описание авторизации с COOKIE. Просто понять не могу как с ними работать. Или что то кроме них можете посоветовать?
 
 Top
JustUserR
Отправлено: 05 Августа, 2009 - 14:31:41
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




setix Сейчас вам дружно начнут советовать сессии но они забывают о том что сесии по нормальному работают только совместно с cookie
Ну а про работу с куками можн много где почитать прямо в поисковике вбейте PHP cookie и читате


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Viper
Отправлено: 05 Августа, 2009 - 14:44:36
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




JustUserR пишет:
Сейчас вам дружно начнут советовать сессии но они забывают о том что сесии по нормальному работают только совместно с cookie

а обоснование можно услышать ? самому интересно.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Champion Супермодератор
Отправлено: 05 Августа, 2009 - 14:46:46
Post Id



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


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


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




JustUserR пишет:
Сейчас вам дружно начнут советовать сессии но они забывают о том что сесии по нормальному работают только совместно с cookie
Человек спросил про куки - будет про куки. Хотя, сессии лучше) Сессии нормально работают не только с куками. Это уже обсуждалось)

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


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Июль 2009  


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




ChampionViperJustUserR не ссорьтесь! я пока в деле авторизации нуб. Так что все интересно.

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

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

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



Посетитель


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


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




Цитата:
1 не пойму как вообще объявить куки

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

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

До вывода любой информации на экран. То есть, никакого хтмл, допустим только ничегоневыводящий код php Улыбка
Можно сделать буферизацию вывода, тогда можно работать с куками в любом месте страницы.
 
 Top
Champion Супермодератор
Отправлено: 05 Августа, 2009 - 16:56:46
Post Id



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


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


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




setix пишет:
Из того что могу делать дак это только проверку пароля и имени пользователя
Ну я понимаю, ты их из массива POST берешь. Как проверить ты знаешь. Чтобы использовать куки, тебе просто имя пользователя и пароль надо будет из куки взять(как - написано, я ссылку привел), а дальше с ним всё то же самое делать.

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

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


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Июль 2009  


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




Пробовал использовать 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. Может пояснит кто нибудь поподробнее в чем недостатки и ошибки могут быть.
 
 Top
Champion Супермодератор
Отправлено: 05 Августа, 2009 - 17:00:48
Post Id



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


Покинул форум
Сообщений всего: 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() были уже посланы заголовки. Например, при выводе на экран. Обычно все дело в пробельном символе перед <? . Проверь.
 
 Top
setix
Отправлено: 05 Августа, 2009 - 17:02:24
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Июль 2009  


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




сразу скажу что кроме данного куска кода не использовал ни header ни cookies
(Добавление)
у меня этот код встроен

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


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


Отредактировано модератором: Champion, 05 Августа, 2009 - 18:50:44
Свертываем большой код.
 
 Top
Страниц (5): « 1 [2] 3 4 5 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB