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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: вопрос про авторизацию
JustUserR
Отправлено: 30 Октября, 2010 - 12:51:47
Post Id



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


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


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




OrmaJever пишет:
Сесия заканчивается когда браузер закрывают. Апотом открыть и снова авторизироватся?
ДЛя чего тогда печеньки придуманы?
В общем случае использование системы хранения авторизационной информации в клиентских значениях cookie является безопасным в том случае - если соответствующие элементы включают в себя исключительно идентификатор сессии - возможность операций с которым предоставляет пользователю только отключение от текущего сеанса - без изменения важных серверных данных
Тем не менее возможно использование такой авторизационной схемы при которой локальные значение cookie обеспечивают хранения имени пользователи и пароля в специальной форме и являются безопасными - реализация такого решения заключается в хранении MD5-хеша от конкатенации логина и пароля а также спеицифичных информационных полей как IP-адреса и времени подключения сессии и спеицифческих параметров браузера клиента - в таком случае возможность копирования cookie не предоставляет никаких возможностей по несанкционированной авторизации


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
antobra
Отправлено: 30 Октября, 2010 - 12:56:37
Post Id


Посетитель


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


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




OverNik пишет:
1. Работало бы в цикле, но увы ты не поставил LIMIT 1, а сервер то не знает что имено ты от него хочь, это нужно все указивать в запросе.
2. Отвыкай от быспредела в запросах, ставь кавычки
3. SELECT * - ты точно все хочь вытянуть, или просто влом прописать что имено тебе нужно от mysql сервера? Не экономишь ты ресурсы - так нельзя, ведь скорость скрипта - вот его плюс...


Ок, подправлю... Спасибо!!
Все-таки, как сделать так, чтоб выводились все строки в таблице с айди, которым я указываю. У меня же только одна <tr> стоит и сюда прописывается только одна строка. А нужно чтобы было <tr> с данными столько, сколько строк в таблице. Я вот о чем)))
 
 Top
OrmaJever Модератор
Отправлено: 30 Октября, 2010 - 13:05:39
Post Id



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


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


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




Uchkuma пишет:

2. Когда закрывается браузер, сессия остается (она ведь хранится на сервере!), а вот кука может быть удалена (и то в зависимости от настроек, с которыми она была установлена) и тогда связь с сессией будет прервана. В этом случае сервер назначит новый id и создаст новую сессию.

3. Для хранения НЕконфиденциальных данных. Т.е. не логина и пароля.


2) сесия записывает в куки свой параметр (у меня это PHPSESSID). Эта печенька установлена без времени. Тоесть при закрытии браузера эта печенька удаляется и приновой открытии начинается новая сесия.
Не буду утверждать но так работает мой php 5.1 возможно у вас как то по другому.

3) А кто сказал что там хранить конфиденциальные даные?
Вот часть авторизации:
PHP:
скопировать код в буфер обмена
  1. if(пароль веден верно){
  2. $cookie = generate_cookie(10, true); //генерирует случайную строку в 10 символов
  3. $mysql->query("UPDATE users SET hash='".$cookie."' WHERE login='".$login."'");
  4. setcookie('user', $cookie, time()+9999999, '/');
  5. }

А при выходе пользователя
PHP:
скопировать код в буфер обмена
  1. if(пользователь залогинился){
  2. setcookie('user', '', 0, '/');
  3. $mysql->query("UPDATE users SET hash='' WHERE login='".$login."'");
  4. }


При входе пользователя ему ставится случайная строка и в бд и в куки. Затем она проверяется при каждом входе.
При выходе эта строка удаляется, и при новом входе они генерируется снова. Система без отказная Улыбка

(Отредактировано автором: 30 Октября, 2010 - 13:06:19)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
OverNik
Отправлено: 30 Октября, 2010 - 13:06:25
Post Id



Частый гость


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


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




#Начало таблици
#PHP код, возможно с циклом + : <tr> <td></td> <td>2</td> <td>3</td> </tr>
#Конец таблици

И посмотри что у тебя в исходнике творится после того как страничка сгенерировалась
(Добавление)
OrmaJever, можно вбить в базу IP юзера и ID его SID, и после того как юзер обратно вернется на страничку востановить SID, конечно одного IP будет мало, в некоторых прокси и так далее. Кстати JustUserR это же самое описал выше.
 
 Top
antobra
Отправлено: 30 Октября, 2010 - 13:14:36
Post Id


Посетитель


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


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




OverNik пишет:
#Начало таблици
#PHP код, возможно с циклом + : <tr> <td></td> <td>2</td> <td>3</td> </tr>
#Конец таблици

И посмотри что у тебя в исходнике творится после того как страничка сгенерировалась
(Добавление)
OrmaJever, можно вбить в базу IP юзера и ID его SID, и после того как юзер обратно вернется на страничку востановить SID, конечно одного IP будет мало, в некоторых прокси и так далее. Кстати JustUserR это же самое описал выше.


А как осуществить этот цикл?

В html'е в сгенерированной странице отображается, что и в php, т.е. одна строка... самая первая, которую находит php с нужными параметрами WHERE. А нужно, чтоб выводились все с нужным параметром)
 
 Top
OverNik
Отправлено: 30 Октября, 2010 - 13:17:25
Post Id



Частый гость


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


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




У тебя что несколько user с одним и тем же login? Пересмотри свой SQL запрос!!!
 
 Top
antobra
Отправлено: 30 Октября, 2010 - 14:07:52
Post Id


Посетитель


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


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




OverNik пишет:
У тебя что несколько user с одним и тем же login? Пересмотри свой SQL запрос!!!


причем тут логины пользователей?

речь идет о сторонней таблице, не юзерской... а просто таблица, где есть несколько одинаковых параметров из столбца id_user. (айди_юзер назван не по логину или айди, можно назвать хоть blabla)
И как вывести все строки, где есть одно и тоже в столбце id_user в таблицу (например "1"). Не списком, списком я могу вытащить, а в таблицу нет... Вот такой вывод нужен:

<table border=0 width=100%>
<tr><td>id_user</td><td>Описание операции</td><td>Определение</td><td>Комментарий</td></tr>
<tr><td>1</td><td>rtnrtntr</td><td>rtntrnrt</td><td>rntnrt</td></tr>
<tr><td>1</td><td>gfgf</td><td>3dfgdfgdf</td><td>gdfgdfgdfgfdg</td></tr>
<tr><td>1</td><td>eberb</td><td>efbete</td><td>dfgdfgdf</td></tr>
<tr><td>1</td><td>ebrbreb2</td><td>rgnrnrtnrt3n</td><td>sgwgwrgr</td></tr>
</table>

А сейчас он выводит только первую строку, а нужно все, где есть указанный id_user

Сейчас выводит так:

<table border=0 width=100%>
<tr><td>id_user</td><td>Описание операции</td><td>Определение</td><td>Комментарий</td></tr>
<tr><td>1</td><td>rtnrtntr</td><td>rtntrnrt</td><td>rntnrt</td></tr></table>

только одну строку

P.S. Надеюсь написал подробно
 
 Top
OverNik
Отправлено: 30 Октября, 2010 - 14:13:48
Post Id



Частый гость


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


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




CODE (htmlphp):
скопировать код в буфер обмена
  1. echo "<table border=0 width=100%>";
  2. $auth_profile = mysql_query("SELECT `date`,`about`,`comment`,`money` FROM `user_bu` WHERE id=\"".$userinfo['id']."\"");
  3. while($userinfo_profile = mysql_fetch_array($auth_profile))
  4. {
  5.    echo "
  6.    <tr><td>Дата</td><td>Описание операции</td><td>Сумма</td><td>Комментарий </td></tr>
  7. <tr><td>$userinfo_profile[date]</td><td>$userinfo_profile[about]</td><td>$userinfo_profile[money]</td><td>$userinfo_profile[comment]</td></tr>
  8.  ";
  9. }
  10. echo "</table>";

Оно? )))
 
 Top
antobra
Отправлено: 30 Октября, 2010 - 18:45:16
Post Id


Посетитель


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


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




OverNik пишет:
CODE (htmlphp):
скопировать код в буфер обмена
  1. echo "<table border=0 width=100%>";
  2. $auth_profile = mysql_query("SELECT `date`,`about`,`comment`,`money` FROM `user_bu` WHERE id=\"".$userinfo['id']."\"");
  3. while($userinfo_profile = mysql_fetch_array($auth_profile))
  4. {
  5.    echo "
  6.    <tr><td>Дата</td><td>Описание операции</td><td>Сумма</td><td>Комментарий </td></tr>
  7. <tr><td>$userinfo_profile[date]</td><td>$userinfo_profile[about]</td><td>$userinfo_profile[money]</td><td>$userinfo_profile[comment]</td></tr>
  8.  ";
  9. }
  10. echo "</table>";

Оно? )))


не то... он снова выводит одну строчку
 
 Top
OverNik
Отправлено: 30 Октября, 2010 - 19:45:26
Post Id



Частый гость


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


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




Я лично у себя проверял, если есть данные у которых ячейка id одинаковая, то скрипт их нормально выводит. Может у тебя каждный столбец ID уникальный? Повторных нету? Посмотри, так как пример реально проверен!!!
 
 Top
antobra
Отправлено: 30 Октября, 2010 - 20:05:40
Post Id


Посетитель


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


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




OverNik пишет:
Я лично у себя проверял, если есть данные у которых ячейка id одинаковая, то скрипт их нормально выводит. Может у тебя каждный столбец ID уникальный? Повторных нету? Посмотри, так как пример реально проверен!!!


Окей, сейчас займусь детальным изучением
(Добавление)
Все получилось, только я сделал так:

echo "<table border=0 width=100%> <tr><td>Дата</td><td>Описание операции</td><td>Сумма</td><td>Комментарий </td></tr>";
$auth_profile = mysql_query("SELECT `date`,`about`,`comment`,`money` FROM `user_bu` WHERE id=\"".$userinfo['id']."\"");
while($userinfo_profile = mysql_fetch_array($auth_profile))
{
echo "
<tr><td>$userinfo_profile[date]</td><td>$userinfo_profile[about]</td><td>$userinfo_profile[money]</td><td>$userinfo_profile[comment]</td></tr>
";
}
echo "</table>";

Спасибо!
 
 Top
OverNik
Отправлено: 30 Октября, 2010 - 20:18:53
Post Id



Частый гость


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


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




А разница?
 
 Top
antobra
Отправлено: 30 Октября, 2010 - 20:30:32
Post Id


Посетитель


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


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




OverNik пишет:
А разница?


А у меня показывалась строка с названиями столбцов, потом строка из базы, снова столбцы, потом база и т.д. Улыбка хах

странно)
 
 Top
JustUserR
Отправлено: 31 Октября, 2010 - 02:08:23
Post Id



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


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


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




OverNik пишет:
Можно вбить в базу IP юзера и ID его SID, и после того как юзер обратно вернется на страничку востановить SID, конечно одного IP будет мало, в некоторых прокси и так далее. Кстати JustUserR это же самое описал выше.
Основным критерием обеспечения безопасности при реализации автоматического восстановления и продления сессионой авторизации пользователя является использование специальных безопасных cookie-записей на клиентской стороне - в таком случае сохраняемое в браузере пользователя значение является MD5-кодом не подлежащим обратному восстановлению и связанного с текущим путем проведения авторизации - в таком случае при осуществелнии последущего обращения к серверному PHP-скрипту производится поиск открытого сеанса для заданного имени пользователя и генерация MD5 по идентчой схеме - и в случае если значения сопадаю то производится допуск пользовател к ресурсу Кроме того после осуществления успешного входа возможно проведения обновления cookie-записи - это позволяет реализовывать автоматическое продление саенса при нахождении пользователя на web-сайте


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



Частый гость


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


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




JustUserR Вы описали детальный процес востановления SID, это понятно, но увы не все безопасно, и все дынне можно подставить. Для хорошой реализации можно воспользиватся ключовым словом который будет добавляться для хэша в MD5. Не правда ли?
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB