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 :: Хранение данных пользователя [5]

 PHP.SU

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


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

> Описание: оцените вариант
DelphinPRO
Отправлено: 19 Августа, 2013 - 17:59:20
Post Id



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


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


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




Squirrel пишет:
Пяточек, ты уж определись, что ты хочешь (анекдот)

Я вам уже советовал перечитать топик сначала? кажется, да...

Я хочу максимум возможностей управления сессией с минимальным геммороем. Ваше предложение урезает возможности, увеличивая количество лишних телодвижений, при этом ни на толику не повышая безопасность. Докажете обратное - посыплю голову пеплом.


на вопрос 2. Не понятно, чем лучше обращение в двум файлам, вместо одного (файла сессии). вы не ответили. Я и Саныч предложили решения при которых сессия завершается\обновляется прозрачно для пользователя и не нужно лезть в базу.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Hapson
Отправлено: 19 Августа, 2013 - 18:01:38
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


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

[+]


PS
обращаться к этой табличке нужно будет при входе, выходе и удалении пользователя

(Отредактировано автором: 19 Августа, 2013 - 20:53:29)



-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
Squirrel
Отправлено: 20 Августа, 2013 - 00:07:39
Post Id


Забанен


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


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

[+]


caballero пишет:
термин сессия вполне понятен (тем кто в теме) и не зависит от контекста
Вот в данном контексте лично мне он как раз и не понятен. Если ты такой умный, то объясни, что такое в данном контексте "сессия", если это не кука, не содержимое куки, и не файл, то тогда что?
caballero пишет:
не факт - сериализуешь туда класс а он тянет за собой все остальные по ссылке
А зачем засовывать туда весь класс?
caballero пишет:
у меня апач под виндой больше десяти лет. не вижу никаких проблем и никакой то разницы с другими местами стояния.

А я например вижу. Как тут сказали, "тем кто в теме" разница очевидна. Ссылочку то почитай, там как раз разжевано.
(Добавление)
Саныч пишет:
Вот если б вы читали, что пишут другие, то заметили б, что ID сессии пользователя пишется в базу. При удалении сначала зачитываем этот ID, потом грохаем запись в таблице.
Ты теоритизировать то брось, а просто прикинь как это будет работать в реале. Если грубо, ты формируешь страничку admin.php , на которой выводишь логин пользователя/(или что ты там хочешь), и рядышком кнопочку "удалить". Я правильно поняла твою задумку?
Теперь опустимся до реальной жизни. Кнопочка будет снабжена ссылочкой, типа:
/user_del.php?UID=$UID&SID=$SID.
Сразу вопрос. Ты так печешься о безопасности. На сколько такая страничка будет безопасна в реальной жизни? Если ты передаешь только один параметр, то тебе придется по любому получать второй из БД Это первое обращение. Что бы удалить пользователя, из BD, тебе придется дернуть и саму БД. Это уже второе обращение. Ну и каким-то образом прибить саму сессию, это уже третье обращение. Даже если ты передаешь все два параметра, обращений будет ДВА, а ты твердишь, что одно.
Мой же вариант, более безопасен. В user_del ты передаешь только $SID, и на странице admin, ты в открытом виде выводишь ТОЛЬКО $SID.
Второй момент. Ты должен как-то защить вызов user_del от злоумышленника и робота.

Мелкий пишет:
Докажите это хотя бы теоретически.

Саныч пишет:
С каког это перепуга?

При открытии сессии, указывается время ее жизни. Если сессия жива после указанного времени, это говорить только о рукожопости админа, настраивавшего сервер.
Мелкий: Кста, твоя ссылка не открылась.

(Отредактировано автором: 20 Августа, 2013 - 00:48:58)

 
 Top
Саныч Модератор
Отправлено: 20 Августа, 2013 - 01:46:17
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Squirrel пишет:
/user_del.php?UID=$UID&SID=$SID.
Сразу вопрос. Ты так печешься о безопасности. На сколько такая страничка будет безопасна в реальной жизни? Если ты передаешь только один параметр, то тебе придется по любому получать второй из БД Это первое обращение. Что бы удалить пользователя, из BD, тебе придется дернуть и саму БД. Это уже второе обращение. Ну и каким-то образом прибить саму сессию, это уже третье обращение. Даже если ты передаешь все два параметра, обращений будет ДВА, а ты твердишь, что одно.
Мой же вариант, более безопасен. В user_del ты передаешь только $SID, и на странице admin, ты в открытом виде выводишь ТОЛЬКО $SID.
Второй момент. Ты должен как-то защить вызов user_del от злоумышленника и робота.
Передаем только userID. Получили, зачитали sessID, запустили сессию, очистили ее, удалили юзера из БД. Два запроса, где вы третий выкопали, я не понимаю.
И где я говорил про один запрос? Я специально пролистал назад, не нашел.
К тому же, что вы так этих двух запросов к базе при удалении пользователя боитесь, что готовы на каждый запрос дергать файл и искать в нем айдишник?.. Вы что на столько часто пользователей удаляете?.. Я нет. И если и будет пара лишних запросов, как вам кажется, к базе за неделю, так это вобще ничего.

Squirrel пишет:
При открытии сессии, указывается время ее жизни. Если сессия жива после указанного времени, это говорить только о рукожопости админа, настраивавшего сервер.
Я так погляжу, у вас все рукожопые, и админы всех серверов, и программисты из гугла. Так что ж вы с нами, рукожопыми, тут возитесь, а?!
По теме, кем и куда указывается? И советую почитать, как организован GC в PHP, может поймете наконец, что сессия может и полгода пролежать, а потом благополучно будет возобновлена.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
LIME
Отправлено: 20 Августа, 2013 - 09:10:59
Post Id


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


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


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





народ....как там говориться?
не кормите троля?
 
 Top
DelphinPRO
Отправлено: 20 Августа, 2013 - 09:58:05
Post Id



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


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


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




Белка такая белочка )


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Hapson
Отправлено: 20 Августа, 2013 - 17:27:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


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

[+]


Товарищи, ну тема так и не раскрыта. Как поддерживать авторизацию и корректно удалять/банить пользователя? При этом не трогая БД при простой навигации по сайту.

Я вот что надумал.
В таблице пользователей есть поле session.
При входе пользователя на сайт, пишем в это поле его session_id.
При навигации по сайту не трогаем базу - не нужен нам его session_id
Если нужно удалить пользователя или изменить его права, то у нас есть его session_id

Далее:
Пользователь ушел с сайта. Неважно как - нажал кнопку выйти или просто закрыл окно. Ничего не делаем с его session_id.
При следующем входе обновляем поле session. Если пользователь входит по куке, то делаем тоже самое - обновляем session_id в базе.

Я ничего не упустил?
(Добавление)
В догонку еще такой вопрос, немного не по теме.
Озадачился я вчера реализацией статуса online, offline.
Забабахал в таблице юзеров поле - status (0 и 1). А потом понял, что лоханулся. Начал гуглить на эту тему. Оказывается поле status в базе совершенно бессмысленно, так как пользователь может просто закрыть браузер и все - кто обновит поле status?
Неужели нет иного способа реализации статуса кроме записи и сравнения времени? Ведь это опять запрос к БД при каждом запуске скрипта.

Например нужно сделать некий модуль, который выводит 10-20 юзеров online. Или выводить список всех пользователей у каждого из которых есть статус - online/offline. Ну как на форуме вообщем.
Здесь на форуме я так понял тоже по времени. Чтож это, при каждом обновлении страницы/переходе - запрос к БД и сравнение временных меток?


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
soffrick
Отправлено: 20 Августа, 2013 - 17:36:14
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


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




LIME пишет:
не кормите троля?

в точку (см.аватар)

(Отредактировано автором: 20 Августа, 2013 - 17:36:37)



-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
LIME
Отправлено: 20 Августа, 2013 - 17:39:13
Post Id


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


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


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




Hapson пишет:
Как поддерживать авторизацию и корректно удалять/банить пользователя?
самостоятельно реализовать механизм сессий в базе
 
 Top
Hapson
Отправлено: 20 Августа, 2013 - 17:47:30
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


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

[+]


LIME
Объясните мне, что значит сессии в базе, что понимается под этим?
В базу пишется session_id, в базу пишутся сессионные данные... так? Зачем? А как удалять данные при выходе пользователя, если он просто закрыл окно?

Чем плох мой вариант выше? Цель ведь достигнута - корректно удалять пользователя и обновлять его права. В базу нужно лазить только при необходимости, а не при каждом запуске скрипта. А так пусть сессиями рулит php. Нам нужен лишь session_id< чтобы очистить или обновить сессию


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
Vinyl
Отправлено: 20 Августа, 2013 - 17:50:22
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012  
Откуда: Армавир, Краснодарский край


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




После продолжительного холивара у меня вопрос: чем мой вариант-таки не устроил? Или все же ТС пишет авторизацию на веримегахайлоад, на котором один запрос к базе при одном обращении к скрипту - непосильный груз?


-----
Пессимисты пользуются die(), оптимисты - exit()
 
 Top
LIME
Отправлено: 20 Августа, 2013 - 17:50:37
Post Id


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


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


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




механизм полностью реализуй
напиши класс Session
не пользуйся встроенным session_start вообще
 
 Top
caballero
Отправлено: 20 Августа, 2013 - 17:50:41
Post Id


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


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


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




есть возможность использовать для хранения сесий не файлы а БД.
С точки зрения кода ничего не меняется. Но появляется возможность прибивать старые болтающиеся сессии кроном.
но проблема яйца выеденного не стоит - не трать времмя и усилия на частности.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
LIME
Отправлено: 20 Августа, 2013 - 17:52:00
Post Id


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


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


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




Vinyl пишет:
Или все же ТС пишет авторизацию на веримегахайлоад
нет ...он пишет авторизацию в учебных целях
и правильно делает
и так полно тех кто пишет "лишь бы работало"
 
 Top
Vinyl
Отправлено: 20 Августа, 2013 - 17:55:45
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012  
Откуда: Армавир, Краснодарский край


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




LIME, а мой вариант по-вашему, "лишь бы работало"?


-----
Пессимисты пользуются die(), оптимисты - exit()
 
 Top
Страниц (6): « 1 2 3 4 [5] 6 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB