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

 PHP.SU

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


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

> Описание: оцените вариант
DelphinPRO
Отправлено: 18 Августа, 2013 - 23:52:09
Post Id



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


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


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




Ну навскидку - писать идентификатор сессии в табличку при отрытии, а при надобности дернуть его оттуда и удлаить\модифицировать непосредственно файл сессии


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Саныч Модератор
Отправлено: 19 Августа, 2013 - 00:21:30
Post Id



Участник


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


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




DelphinPRO, а если такая схема. Пользователь авторизовуется, пишем в БД его sess_id. В саму сессию нужные данные. Потом, когда нам приспичит удалить пользовател, читаем это sess_id запускаем сессию с таким id и грохаем все данные в сессии, удаляем юзера из БД. Юзер заходит, сессия "пустая", авторизация не подтверждена. Все счастилвы...


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
DelphinPRO
Отправлено: 19 Августа, 2013 - 01:03:05
Post Id



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


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


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




Если мы запустим чужую сессию, своя не отвалится?


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Саныч Модератор
Отправлено: 19 Августа, 2013 - 01:37:16
Post Id



Участник


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


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




DelphinPRO, потестил малость. Если нужно грохнуть данные в чужой сессии:
PHP:
скопировать код в буфер обмена
  1. session_start(); // это запуск нашей сессии
  2. // тут проверяем авторизацию
  3.  
  4. $sessID = session_id(); // сохраняем свой ID
  5. session_write_close(); // закрываем свою сессию
  6.  
  7. session_id('j4fpt59nmitjauersf345655i7'); // ID чужой сессии
  8. session_start(); // запускаем
  9. session_destroy(); // и тут же убиваем
  10.  
  11. session_id($sessID); // возвращаем обратно свой ID
  12. session_start(); // восстанавливаем свою сессию
Вот такой костыль у меня получился. Все работает, как ожидалось, но почему-то мне такое решение не нравится Хм


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Squirrel
Отправлено: 19 Августа, 2013 - 01:47:41
Post Id


Забанен


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


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

[+]


DelphinPRO пишет:
Ну не так уж и просто ее подменить, не нагнетайте..

Легко. Достаточно обычно в ручную поставить всего 1 куку, или ручками поменять запись запроса.
(Добавление)
Саныч А заем тебе вообще грохать чужую сессию?
"Юзер заходит", проверяем, а существует ли такой юзер в BD, и если нет далее по тексту.
Если считаешь, что это слишком медленно, то создай еще одну BD с удаленными пользователями. Эта BD будет мизерная.
 
 Top
Саныч Модератор
Отправлено: 19 Августа, 2013 - 02:13:34
Post Id



Участник


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


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




Squirrel пишет:
"Юзер заходит", проверяем, а существует ли такой юзер в BD, и если нет далее по тексту.
Так в этом и есть суть вопроса. Так нужно каждый раз делать запрос к БД. А мы тут обсуждаем, чтоб хранить данные пользователя в сессии, а в БД лезть только, когда он входит через форму или куки.
И встал вопрос, а что если пользователь авторизован и в этот момент админ его удаляет. Сессия то у него уже открыта, а в базу не лазит, т.е. не узнает что его уже нет...


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
DelphinPRO
Отправлено: 19 Августа, 2013 - 02:31:44
Post Id



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


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


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




Squirrel пишет:
Легко. Достаточно обычно в ручную поставить всего 1 куку, или ручками поменять запись запроса.

куку сначала скоммуниздить нужно Улыбка
Саныч пишет:
Вот такой костыль у меня получился.

а я полез файл сессии удалять )
Так, наверное, можно и модифицировать данные, не завершая сессию? Например, админ повысил\понизил пользака в правах.


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


Забанен


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


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

[+]


Саныч пишет:
Так нужно каждый раз делать запрос к БД.

Squirrel пишет:
Если считаешь, что это слишком медленно, то создай еще одну BD с удаленными пользователями. Эта BD будет мизерная.

Причем под BD я понимаю именно BD, а не только то, что создают MySql или прочие.
Хоть массив в файле. Размер то МИЗЕРНЫЙ.
 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Августа, 2013 - 02:49:01
Post Id



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


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


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




Bata Dase?
 
 Top
Саныч Модератор
Отправлено: 19 Августа, 2013 - 02:57:49
Post Id



Участник


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


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




DelphinPRO пишет:
Так, наверное, можно и модифицировать данные, не завершая сессию? Например, админ повысил\понизил пользака в правах.
А почему нет. Мы ж ее стартуем, а дальше делаем что хотим. При следующем запросе у пользователя будут новые права, без всяких перезаходов и дергания БД.

Squirrel пишет:
Причем под BD я понимаю именно BD, а не только то, что создают MySql или прочие.
То ли я дурак, то ли лыжи не едут. Т.е. вы мне предлагаете создать еще одну, отдельную, базу для пользователей? Зачем?! Растерялся И чем это будет быстрее?..


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
DelphinPRO
Отправлено: 19 Августа, 2013 - 03:02:35
Post Id



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


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


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




Squirrel пишет:
Причем под BD я понимаю именно BD

Биде, видимо Улыбка

А если серьезно, то я не понял, что именно вы подразумеваете под "базой данных", если это не только "база данных". Я правильно перефразировал ваше высказывание?

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



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Squirrel
Отправлено: 19 Августа, 2013 - 03:25:58
Post Id


Забанен


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


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

[+]


DelphinPRO пишет:
А если серьезно, то я не понял, что именно вы подразумеваете под "базой данных", если это не только "база данных".
Squirrel пишет:
оть массив в файле. Размер то МИЗЕРНЫЙ.
 
 Top
DelphinPRO
Отправлено: 19 Августа, 2013 - 06:46:38
Post Id



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


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


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




Squirrel пишет:
оть массив в файле

Перечитайте весь топик. От начала.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Squirrel
Отправлено: 19 Августа, 2013 - 08:24:34
Post Id


Забанен


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


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

[+]


DelphinPRO пишет:
Перечитайте весь топик. От начала.

Тонко намекни, что именно я пропустила, и почему мой совет тебе не подходит.

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

Squirrel пишет:
Если считаешь, что это слишком медленно, то создай еще одну BD с удаленными пользователями. Эта BD будет мизерная.

В этой базе ты будешь хранить только некий ID только удаленных пользователей за очень короткий период. Остальные данные там тупо не нужны, это же очевидно.
В сессии ты этот ID и так хранишь,
В основной BD этот ID у тебя уже есть.

И что-то мне подсказывает, что ты и про сессии опять не до конца. На что тебе уже тонко намекали. Сессия имеет некий период жизни, после чего сама закрывается, и все данные из нее удаляются. Первая ссылка из гугля: http://habrahabr.ru/post/28418/

(Отредактировано автором: 19 Августа, 2013 - 08:56:43)

 
 Top
LIME
Отправлено: 19 Августа, 2013 - 09:45:41
Post Id


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


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


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




Squirrel пишет:
Сессия имеет некий период жизни, после чего сама закрывается, и все данные из нее удаляются.
нет ...это не так
сохрани SID и подделав его зайдешь хоть через месяц после закрытия браузера(зависит от GC)
физически данные удаляются сборщиком мусора(GC)
эхехех...ну что за воинствующая амазонка))
(Добавление)
Squirrel пишет:
Если считаешь, что это слишком медленно, то создай еще одну BD с удаленными пользователями. Эта BD будет мизерная.
и чем это не сессия? ))
и кстати очень многие реализуют свой механизм сессий...в базе например
 
 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