Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> чем создать уникальный идентификатор сессии 
:(
    Опции темы
sanich_
Дата 23.2.2010, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Я пользуюсь функцией time() для получения уникального значения - идентификатора сесиии, вот задумался а не возникнет ли такой ситуации, когда time() выдаст для двух пользователей одинаковые значения, и вообще как создаются уникальные идекнтификаторы?
PM MAIL   Вверх
Sanchezzz
  Дата 23.2.2010, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Стандартные сессии вам не подходят???

 TIME + random и все в md5


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
azesmcar
Дата 23.2.2010, 08:28 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



uniqid()
PM   Вверх
sanich_
Дата 23.2.2010, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Код

$better_token = md5(uniqid(rand(),1)); // лучше, труднее взломать


тоже неплохая фнкция, но я сделал вот так:

md5(id юзера+time())
PM MAIL   Вверх
IgorIV
Дата 23.2.2010, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



sanich_, спасибо, ты открыл мне глаза. smile
Я тоже переделал. Но не так как у тебя.
PM MAIL   Вверх
Kano
Дата 23.2.2010, 23:27 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 23.2.2009

Репутация: 1
Всего: 0



Цитата(sanich_ @  23.2.2010,  22:39 Найти цитируемый пост)
md5(id юзера+time()) 

— и не стыдно показывать?
PM MAIL   Вверх
IZ@TOP
Дата 24.2.2010, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



session_id() религия использовать не позволяет?
И, если уж на то пошло, при старте сессии для нее автоматически назначается уникальный идентификатор. Алгоритм генерации идентификатора можно указать в настройках php.ini.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
IgorIV
Дата 24.2.2010, 20:31 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Не знаю как там у sanich_, у меня это уникальный идентификатор пользователя. Сессии отдельно, идентификатор отдельно. В отличие от сессий он навечно. (хотя над этим надо подумать)
PM MAIL   Вверх
azesmcar
Дата 24.2.2010, 20:33 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



Цитата(IgorIV @  24.2.2010,  20:31 Найти цитируемый пост)
Не знаю как там у sanich_, у меня это уникальный идентификатор пользователя. Сессии отдельно, идентификатор отдельно. В отличие от сессий он навечно. (хотя над этим надо подумать) 

а auto_increment чем не подходит?
PM   Вверх
IgorIV
Дата 24.2.2010, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Цитата(azesmcar @  24.2.2010,  20:33 Найти цитируемый пост)
auto_increment 

А что это такое?  smile 
PM MAIL   Вверх
sTa1kEr
Дата 24.2.2010, 23:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(IgorIV @  25.2.2010,  00:29 Найти цитируемый пост)
А что это такое?    

Это 1, 2, 3, 4, 5...  smile 
PM MAIL   Вверх
IgorIV
Дата 24.2.2010, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Ну если azesmcar подразумевал это, то остается только улыбнутся. smile
PM MAIL   Вверх
sTa1kEr
Дата 25.2.2010, 00:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Собственно azesmcar прав, в 99% случаев в качестве идентификатора пользователя более чем достаточно autoincrement'а.  Глобально уникальный идентификатор тут может иметь смысл разве что при отсутствии какой-либо централизованной БД, либо при наличии нескольких различных БД.
PM MAIL   Вверх
IgorIV
Дата 25.2.2010, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Либо при хранении этого идентификатора на стороне клиента, в куках.

PM MAIL   Вверх
sTa1kEr
Дата 25.2.2010, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(IgorIV @  25.2.2010,  01:19 Найти цитируемый пост)
Либо при хранении этого идентификатора на стороне клиента, в куках.

Что мешает в куках циферку хранить?
PM MAIL   Вверх
IZ@TOP
Дата 25.2.2010, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(sTa1kEr @  25.2.2010,  01:33 Найти цитируемый пост)
Что мешает в куках циферку хранить? 

Наверное то, что я могу это значение изменить и получить права другого пользователя?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
sanich_
Дата 25.2.2010, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Цитата(Kano @ 23.2.2010,  23:27)
Цитата(sanich_ @  23.2.2010,  22:39 Найти цитируемый пост)
md5(id юзера+time()) 

— и не стыдно показывать?

И что здесь стыдиться?
id юзера - это уникальный id юзера в таблице, второго такого значения никогда не будет т.к. автоинкрементное оно.
time() - теоретически может быть одинаковое, но в сумме md5(id юзера+time()) получится на 100% уникальная комбинация.


Это сообщение отредактировал(а) sanich_ - 25.2.2010, 01:13
PM MAIL   Вверх
IZ@TOP
Дата 25.2.2010, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(sanich_ @  25.2.2010,  02:12 Найти цитируемый пост)
И что здесь стыдиться?
id юзера - это уникальный id юзера в таблице, второго такого значения никогда не будет т.к. автоинкрементное оно.
time() - теоретически может быть одинаковое, но в сумме md5(id юзера+time()) получится на 100% уникальная комбинация.

Ну, например, я теперь знаю алгоритм работы хеширования идентификатора пользователя. Чем мне это может помочь? Предположим, это был бы форум и в информации о пользователе можно было бы увидеть время последнего посещения пользователя. Дальше нужно намекать?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
sTa1kEr
Дата 25.2.2010, 02:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(IZ@TOP @  25.2.2010,  02:06 Найти цитируемый пост)
Наверное то, что я могу это значение изменить и получить права другого пользователя? 

Т.е. вы по ID пользователя, лежащему в куках, определяете какие он получит права? smile 

Это сообщение отредактировал(а) sTa1kEr - 25.2.2010, 02:07
PM MAIL   Вверх
azesmcar
Дата 25.2.2010, 05:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



Цитата(IgorIV @  24.2.2010,  23:46 Найти цитируемый пост)
Ну если azesmcar подразумевал это, то остается только улыбнутся. smile 

Улыбайся, улыбка красит человека.
PM   Вверх
awers
Дата 25.2.2010, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



Цитата(sTa1kEr @  25.2.2010,  03:06 Найти цитируемый пост)
Т.е. вы по ID пользователя, лежащему в куках, определяете какие он получит права?  

 smile  smile 
PM MAIL WWW ICQ Skype   Вверх
IgorIV
Дата 25.2.2010, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



sTa1kEr, он подколол, а ты его подкалываешь smile

azesmcar, спасибо, доброе слово и кошке приятно. Но ни я, ни sanich_, ни словом не обмолвились о базе.
Давайте тогда с другой стороны зайдем.
Пользователь зашел на сайт, началась сессия, пользователь ушел с сайта, закрыл браузер, выключил компьютер, как мне его завтра "узнать"?
PM MAIL   Вверх
azesmcar
Дата 25.2.2010, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



IgorIV

Какой вообще имеет смысл задавать идентификатор пользователя на клиентской стороне? Смысл идентификатора - различение одного пользователя от другого в неком СПИСКЕ. На стороне клиента никакого списка нет, храни данные в cookie, этого достаточно, смысла в идентификаторах я тут не вижу.
PM   Вверх
sTa1kEr
Дата 25.2.2010, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(IgorIV @  25.2.2010,  09:18 Найти цитируемый пост)
Пользователь зашел на сайт, началась сессия, пользователь ушел с сайта, закрыл браузер, выключил компьютер, как мне его завтра "узнать"? 

Смотря что имеется ввиду под "узнать". Если имеется ввиду автологин, то нужно генерировать и записывать в куку некий secret key, по которому и будет происходить авторизация. Соответственно после каждой успешной авторизации старый ключ становится не действительным и генерируется новый ключ.

Если же под "узнать" имеется ввиду выдать приветствие "Добро пожаловать назад, Вася!", то достаточно ID в куке. Либо даже просто  имени.
PM MAIL   Вверх
IZ@TOP
Дата 25.2.2010, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Нафига козе боян? Зачем выдумывать непонятные, никому не нужные костыли?
У вас уже есть идентификатор сессии, зачем вам в куку еще идентификатор пользователя совать, объясните мне?

Добавлено @ 12:36
Цитата(sTa1kEr @  25.2.2010,  03:06 Найти цитируемый пост)
Т.е. вы по ID пользователя, лежащему в куках, определяете какие он получит права? smile

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


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
sTa1kEr
Дата 25.2.2010, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(IZ@TOP @  25.2.2010,  13:34 Найти цитируемый пост)
Сталкер такой сталкер. Мне не нужно знать какие я получу права по ID который лежит у меня в куках, я получу нужные мне права путем подстановки чужого идентификатора в своей куке. Особенно, если учитывать, что код пишет насколько грамотные кодеры. 

Это был вопрос как к грамотному кодеру, а не как к хитропому пользователю.

Цитата(IZ@TOP @  25.2.2010,  13:34 Найти цитируемый пост)
У вас уже есть идентификатор сессии, зачем вам в куку еще идентификатор пользователя совать, объясните мне?

Ответ очевиден, для использования его после окончания действия сессии.
PM MAIL   Вверх
IZ@TOP
Дата 25.2.2010, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(sTa1kEr @  25.2.2010,  14:04 Найти цитируемый пост)
Ответ очевиден, для использования его после окончания действия сессии. 


Хорошо. Предположим, сессия закончилась, пользователь ушел. Вернулся он спустя неделю с кукой в которой записан хеш md5(user_id + time), как вы его собираетесь вспоминать? Я не говорю о записи в куку ID, поскольку в таком случае я могу придти с любым ID, как я уже говорил, и система меня примет за того, кого я захочу.

Добавлено через 51 секунду
Цитата(sTa1kEr @  25.2.2010,  14:04 Найти цитируемый пост)
Это был вопрос как к грамотному кодеру, а не как к хитропому пользователю.

Я воспринял этот вопрос как сарказм, ответ был соответствующий.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
sTa1kEr
Дата 25.2.2010, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(IZ@TOP @  25.2.2010,  14:30 Найти цитируемый пост)
Предположим, сессия закончилась, пользователь ушел. Вернулся он спустя неделю с кукой в которой записан хеш md5(user_id + time), как вы его собираетесь вспоминать? Я не говорю о записи в куку ID, поскольку в таком случае я могу придти с любым ID, как я уже говорил, и система меня примет за того, кого я захочу.

Именно по ID.

Цитата(IZ@TOP @  25.2.2010,  14:30 Найти цитируемый пост)
Я не говорю о записи в куку ID, поскольку в таком случае я могу придти с любым ID, как я уже говорил, и система меня примет за того, кого я захочу.

Это уже зависит от того, зачем именно нам понадобился ID пользователя. Если для автологина или другой авторизованной операции, то см. мой пост выше. А если, к примеру, для подсчета статистики, то пожалуйста, меняй сколько влезет.
PM MAIL   Вверх
segrey
Дата 25.2.2010, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.12.2006

Репутация: нет
Всего: нет



Цитата(sanich_ @ 24.2.2010,  23:12)
Цитата(Kano @ 23.2.2010,  23:27)
Цитата(sanich_ @  23.2.2010,  22:39 Найти цитируемый пост)
md5(id юзера+time()) 

— и не стыдно показывать?

И что здесь стыдиться?
id юзера - это уникальный id юзера в таблице, второго такого значения никогда не будет т.к. автоинкрементное оно.
time() - теоретически может быть одинаковое, но в сумме md5(id юзера+time()) получится на 100% уникальная комбинация.

id юзера 300
time 1267095400
1267095400+300 = 1267095700

id юзера 200
time 1267095500
1267095500+200 = 1267095700
PM MAIL   Вверх
sanich_
Дата 25.2.2010, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Цитата(segrey @ 25.2.2010,  14:01)
Цитата(sanich_ @ 24.2.2010,  23:12)
Цитата(Kano @ 23.2.2010,  23:27)
Цитата(sanich_ @  23.2.2010,  22:39 Найти цитируемый пост)
md5(id юзера+time()) 

— и не стыдно показывать?

И что здесь стыдиться?
id юзера - это уникальный id юзера в таблице, второго такого значения никогда не будет т.к. автоинкрементное оно.
time() - теоретически может быть одинаковое, но в сумме md5(id юзера+time()) получится на 100% уникальная комбинация.

id юзера 300
time 1267095400
1267095400+300 = 1267095700

id юзера 200
time 1267095500
1267095500+200 = 1267095700

Вот опишу подробно как сделал я.

1. Вместо ID юзера числового я использовал email при регистрации - он уникальный,
email пользователя нигде в свободном доступе светиться не будет.

2. значение куки формирую так $id_session=md5($_POST['email'].time());
Если пользователь авторизовался, то установилась кука в браузере и в БД в таблице юзеров у залогинившегося юзера сохранился этот самый $id_session. Время жизни куки ставлю пожизженное)

3. Если юзер закрыл браузер, потом через некое время снова открыл, проверяю куку, если она установлена, то ищу в БД в таблице юзеров, если есть такая сессия, то вывожу на экран приветствие юзера. Если нет, то показываю форму авторизации.

4. Учитывая, что email пользователя можно подобрать, например 
 - восстановлением пароля, можно тупо вбивать разные email пока не получишь ответ, что пароль отправлен на email пользователя,
 - регистрацией, тоже использовать разные email пока система не скажет что такой email использовать незя, т.е. email в системе такой есть

5. После того как подобрали email, т.е. знаем что пользователь с таким email в системе существует, пробуем подобрать time(). В комбинации наша_кука=md5(email+time())

Т.е. вероятность несанкционированного доступа есть, тока надо потратить немало времени. И самое главное, прежде чем что-то подбирать, нужно знать что кеш куки строится именно как md5(email+time()), а ведь этого ж никто не знает?)))))

Жду ваши советы по улучшению этой схемы!!!!!


Это сообщение отредактировал(а) sanich_ - 25.2.2010, 15:20
PM MAIL   Вверх
IZ@TOP
Дата 25.2.2010, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(sTa1kEr @  25.2.2010,  14:47 Найти цитируемый пост)
Именно по ID.

Или я тупой или погода такая... Объясни мне, пожалуйста, как ты достанешь из md5 хеша ID.


Цитата(sTa1kEr @  25.2.2010,  14:47 Найти цитируемый пост)
Это уже зависит от того, зачем именно нам понадобился ID пользователя. Если для автологина или другой авторизованной операции, то см. мой пост выше. 


Если ты используешь некий секрет кей для автологина (в коем я вообще необходимости практически не вижу), на кой фиг в куку еще и ID юзера писать?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
sanich_
Дата 25.2.2010, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Цитата(IZ@TOP @ 25.2.2010,  14:46)
Или я тупой или погода такая... Объясни мне, пожалуйста, как ты достанешь из md5 хеша ID.

из md5 хеша id никак не достать, никто этого делать и не будет

будут тупо брать id от 1-100000, делаем md5 хеш по этому id

отстается сравнить наш кеш с хешем в системе.
PM MAIL   Вверх
Fortop
Дата 25.2.2010, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(sanich_ @  25.2.2010,  14:06 Найти цитируемый пост)
из md5 хеша id никак не достать, никто этого делать и не будет

будут тупо брать id от 1-100000, делаем md5 хеш по этому id

В случае md5(id + time())  - несложится. Разве что time() всегда будет одинаковым, но тогда это называется salt smile


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
sTa1kEr
Дата 25.2.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(IZ@TOP @  25.2.2010,  15:46 Найти цитируемый пост)
Объясни мне, пожалуйста, как ты достанешь из md5 хеша ID.

Да не md5 от ID хранить в куке, а просто ID, число. И плевать, что его можно изменить, все равно это ничего не даст злоумышленнику.

Цитата(IZ@TOP @  25.2.2010,  15:46 Найти цитируемый пост)
Если ты используешь некий секрет кей для автологина (в коем я вообще необходимости практически не вижу), на кой фиг в куку еще и ID юзера писать? 

Затем, что проще достать пользователя по pk из кеша, чем нагружать дополнительным запросом БД + создавать дополнительный индекс по очень часто изменяемому полю размером в целых 32 байта.

Цитата(IZ@TOP @  25.2.2010,  15:46 Найти цитируемый пост)
в коем я вообще необходимости практически не вижу

В таком случае я бы хотел услышать вашу реализацию автологина.
PM MAIL   Вверх
IZ@TOP
Дата 25.2.2010, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(sTa1kEr @  25.2.2010,  16:48 Найти цитируемый пост)
Затем, что проще достать пользователя по pk из кеша, чем нагружать дополнительным запросом БД + создавать дополнительный индекс по очень часто изменяемому полю размером в целых 32 байта.

О боже, какие сложности для реализации столь простой вещи.

Цитата(sTa1kEr @  25.2.2010,  16:48 Найти цитируемый пост)
В таком случае я бы хотел услышать вашу реализацию автологина. 


http://php.net/manual/en/function.session-...okie-params.php
И, если честно, совершенно не вижу разницы между неким secret key и id сессии.

Что касается "проще достать пользователя по pk из кеша", тут я совершенно несогласен. Во первых - кэш служит в качестве промежуточного буфера и чаще всего имеет ограничения на размер и срок жизни. Изобретение собственного механизма с сроком хранения равным сроку жизни автологина - абсурд. Впрочем, даже если и так - это можно сделать с помощью одной простой настройки стандартных сессий в PHP.

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

В контексте high-load все слишком сильно зависит от используемой платформы, архитектуры проекта и конкретных задач.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
sTa1kEr
Дата 25.2.2010, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(IZ@TOP @  25.2.2010,  17:12 Найти цитируемый пост)
О боже, какие сложности для реализации столь простой вещи.

Куда уж проще достать юзера по pk?

Цитата(IZ@TOP @  25.2.2010,  17:12 Найти цитируемый пост)
http://php.net/manual/en/function.session-...okie-params.php
И, если честно, совершенно не вижу разницы между неким secret key и id сессии.

Т.е. вы предлагаете держать сессию месяцами, а то и вечно? При этом отключив полностью GC и, по сути, не меняя на протяжении всего времени ее ID? Я правильно понял?

Цитата(IZ@TOP @  25.2.2010,  17:12 Найти цитируемый пост)
Что касается "проще достать пользователя по pk из кеша", тут я совершенно несогласен. Во первых - кэш служит в качестве промежуточного буфера и чаще всего имеет ограничения на размер и срок жизни. Изобретение собственного механизма с сроком хранения равным сроку жизни автологина - абсурд. Впрочем, даже если и так - это можно сделать с помощью одной простой настройки стандартных сессий в PHP.

Что за ерунду вы несете? Вы не знаете как работает кеш? Если запись есть в кеше, она возвращается, если нету, делается запрос к БД (по тому же pk) и запись кладется в кеш. И не надо никакого "собственного механизма", имелся ввиду обычный общий кеш пользователей, который и так дергается ежесекундно.

Этот простой алгоритм одинаково хорошо работает в любых категория проекта и не зависит от backend'а механизма сессий.
PM MAIL   Вверх
IZ@TOP
Дата 25.2.2010, 19:02 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(sTa1kEr @  25.2.2010,  17:49 Найти цитируемый пост)
Куда уж проще достать юзера по pk?

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

Цитата(sTa1kEr @  25.2.2010,  17:49 Найти цитируемый пост)
Т.е. вы предлагаете держать сессию месяцами, а то и вечно? При этом отключив полностью GC и, по сути, не меняя на протяжении всего времени ее ID? Я правильно понял?

Я предлагаю вариант без лищних прослоек. Моя сессия как и ваш pk за месяц, что пользователь не заходил на сайт, не изменится. А уж сделать регенерацию идентификатора сессии после автологина Вам точно никто не запрещает.

Плюс ко всему, совершенно не понимаю, с чего Вы решили, что я собираюсь отключить сборщик мусора?


Цитата(sTa1kEr @  25.2.2010,  17:49 Найти цитируемый пост)
Что за ерунду вы несете? Вы не знаете как работает кеш? Если запись есть в кеше, она возвращается, если нету, делается запрос к БД (по тому же pk) и запись кладется в кеш. И не надо никакого "собственного механизма", имелся ввиду обычный общий кеш пользователей, который и так дергается ежесекундно.

Уж поверьте, я знаю о кешировании не меньше вашего, а то и больше. И, в данном случае, в связи с Вашим последним заявлением, я вижу всю бессмысленность предыдущего поста:

Цитата(sTa1kEr @  25.2.2010,  16:48 Найти цитируемый пост)
Затем, что проще достать пользователя по pk из кеша, чем нагружать дополнительным запросом БД + создавать дополнительный индекс по очень часто изменяемому полю размером в целых 32 байта.

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


Цитата(sTa1kEr @  25.2.2010,  17:49 Найти цитируемый пост)
Этот простой алгоритм одинаково хорошо работает в любых категория проекта и не зависит от backend'а механизма сессий. 

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


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Kano
Дата 25.2.2010, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 23.2.2009

Репутация: 1
Всего: 0



Цитата(sanich_ @  25.2.2010,  14:24 Найти цитируемый пост)
И самое главное, прежде чем что-то подбирать, нужно знать что кеш куки строится именно как md5(email+time()), а ведь этого ж никто не знает?)))))

— а ты знаешь вообще КАК ведёт себя оператор "+" если один операнд — string, а другой — integer?
PM MAIL   Вверх
sanich_
Дата 25.2.2010, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Цитата(Kano @ 25.2.2010,  19:02)
Цитата(sanich_ @  25.2.2010,  14:24 Найти цитируемый пост)
И самое главное, прежде чем что-то подбирать, нужно знать что кеш куки строится именно как md5(email+time()), а ведь этого ж никто не знает?)))))

— а ты знаешь вообще КАК ведёт себя оператор "+" если один операнд — string, а другой — integer?

Ну расскажи!
PM MAIL   Вверх
IgorIV
Дата 25.2.2010, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Ох, написали-то. smile
1 Сервер - к примеру, radikal.ru
2 Я не регистрируюсь. Не хочу.
3 Заливаю несколько картинок.
4 Они становятся доступными по ссылке "Все изображения сеанса"
5 Вчера залил, в сеансе они были.
6 Сегодня зашёл - нету.
7 Используются стандартная PHP-сессия. Без увеличения её продолжительности. То есть назавтра сессия удалена.
8 Используем куки для сохранения информации.
9 Вопрос, что надо сделать на сервере чтобы узнать залившего картинки назавтра?

Наверно всё-таки в моём случае не правильно связать идентификатор и сессии. Это просто некий идентификатор. 
И в случае sanich_, наверно тоже.

Цитата(azesmcar @  25.2.2010,  08:28 Найти цитируемый пост)
 Смысл идентификатора - различение одного пользователя от другого в неком СПИСКЕ. На стороне клиента никакого списка нет, храни данные в cookie, этого достаточно, смысла в идентификаторах я тут не вижу.

Список есть на сервере. Таблица user в базе данных.

Цитата(IZ@TOP @  25.2.2010,  14:46 Найти цитируемый пост)
Если ты используешь некий секрет кей для автологина (в коем я вообще необходимости практически не вижу), на кой фиг в куку еще и ID юзера писать?

Как будем по базе искать пользователя? По кею? 
Код

"SELECT  `user_hash`
    FROM `user` 
    WHERE user_id = '".$scr_user_id."' 
    LIMIT 1";

Цитата(sTa1kEr @  25.2.2010,  15:48 Найти цитируемый пост)
Затем, что проще достать пользователя по pk из кеша, чем нагружать дополнительным запросом БД + создавать дополнительный индекс по очень часто изменяемому полю размером в целых 32 байта.

Вот здесь я не понял, зачем нужен кеш? Кеш нужен для хранения часто запрашиваемой информации. Ну сессию туда можно записать, но идентификатор пользователя зачем. (если что-то не понял - проясните)
PM MAIL   Вверх
sTa1kEr
Дата 25.2.2010, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Давайте обойдемся без переходов на личности и "распальцовки" о том кто больше знает, хорошо?

Итак, объясняю подробно.
Цитата(IZ@TOP @  25.2.2010,  20:02 Найти цитируемый пост)
Плюс ко всему, совершенно не понимаю, с чего Вы решили, что я собираюсь отключить сборщик мусора?

Потому что сколько бы вы не выставили время жизни сессионой куки сборщик мусора все равно почистит все ваши сессии, которые старее 14400 секунд(по умолчанию).

Соответственно вам в любом случае придется либо отключать сборщик мусора(если надо запоминать пользователя перманентно), либо выставлять огромное время жизни для сборщика мусора. А так как сборщик мусора настраивается только глобально для всех сессий, то соответственно любая новая сессия будет храниться бесконечно/очень долго.

К чему это приведет?
1. У вас будут накапливаться куча мусорных сессий. Пользователь удалил куку, сменил браузер, зашел с другого компьютера и каждый раз ему выдается новая сессия, причем старые идентификаторы так же будут оставаться валидными. А если еще учесть, что далеко не всем пользователем нужен автологин и большинству пользователям будет устанавливаться кука до закрытия браузера, то таких мусорные сессии будут плодиться с катастрофической скоростью.
2. С точки зрения безопасности считается плюсом сессий то, что они валидны лишь короткое время жизни и, злоумышленник заполучивший SID, сможет им воспользоваться только короткое время. В вашем же случае, мало того что время жизни сессий безгранично большое, так еще и количество этих сессий на одного пользователя может быть больше одной. Т.е. злоумышленнику достаточно заполучить лишь один из многочисленных SID и он сможет беспрепятственно получать доступ к данным пользователя длительное время.


Теперь еще раз подробнее про алгоритм, о котором я говорил.
Когда пользователь авторизуясь на сайте ставит галочку "запомнить меня", то генерируется некий secret key, который привязывается к данному пользователю и устанавливаются две куки на длительное время: ID пользователя и только что сгенерированный secret key.
Все, на этом на данный момент все манипуляции закончены. Мы все так же работаем с сессиями как и раньше.

Далее пользователь уходит с сайта, все сессии как положено очищаются, SID становится недействительным. Через некоторое время он возвращается и передает на сайт ID и secret key. Мы пытаемся его аутентифицировать: получаем данные о пользователе по его ID (не важно как и откуда) и сверяем переданный secret key с тем, что был получен с данными о пользователе и если они совпадают, то авторизовываем пользователя и повторяем процедуру с генерацией secret key.
Все, дальше пользователь работает, как будто он авторизовался по логину и паролю.

Т.о. все "навороты" заключаются в создании альтернативного backend'а авторизации (чем, собственно, автологин и является), что при грамотном ООП подходе не составит никакого труда и займет всего десяток строк.

Как вы правильно заметили, можно обойтись одной кукой secret key, но тогда, что бы узнать какого именно пользователя надо авторизовать, пришлось бы искать его по этому secret key, что обычно несколько накладнее. Куда проще хранить рядом с ним его ID'шник.

Цитата(IZ@TOP @  25.2.2010,  20:02 Найти цитируемый пост)
что к механизму сессий имеет разве что косвенное отношение. 

Нет, автологин не имеет никакого отношения к сессиям, это всего-лишь механизм "прозрачной" авторизации пользователя.
PM MAIL   Вверх
sTa1kEr
Дата 25.2.2010, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



IgorIV, не совсем понял. У вас данные о залитых картинках для незарегистрированных пользователей так же хранятся в базе вместе с остальными пользователями?

Цитата(IgorIV @  25.2.2010,  22:06 Найти цитируемый пост)
Вот здесь я не понял, зачем нужен кеш? Кеш нужен для хранения часто запрашиваемой информации. Ну сессию туда можно записать, но идентификатор пользователя зачем. (если что-то не понял - проясните) 

Да не нужен кеш, точнее он не имеет никакого отношения к автологину, я привел его в качестве аргумента в пользу хранения вместе с secret key ID пользователя.
Просто т.к. данные пользователя часто требуются при каждом запросе, то есть смысл хранить в кеше всю информацию о пользователе(вместе с secret key) с ключем по его ID. Тогда, если в куках вместе с secret key будет лежать ID пользователя, то можно будет получить secret key задаром вместе с другими данными пользователя (все равно они итак-итак понадобятся). 
PM MAIL   Вверх
IgorIV
Дата 25.2.2010, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



sTa1kEr, все верно. Так я и задумывал.

Добавлено через 3 минуты и 11 секунд
Цитата(sTa1kEr @  25.2.2010,  22:36 Найти цитируемый пост)
 У вас данные о залитых картинках для незарегистрированных пользователей 

А других нет. smile
Нет, конечно есть. Но почему бы и не хранить их вместе?
PM MAIL   Вверх
sTa1kEr
Дата 25.2.2010, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Просто, если у вас вообще отсутствует регистрация, то вам как-раз больше бы подошел вариант IZ@TOP'а со стандартным механизмом сессий и увеличенным максимальным временем жизни. Тогда можно было бы вовсе отказаться от хранения информации о закаченных картинках в БД и тем самым упростить задачу. Т.е. отказаться от хранения не самой информации о картинках, а об их принадлежности какому-либо пользователю, т.к. как таковых пользователей нету и, соответственно, нету авторизации.

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

Тогда можно поступить так же, как и с автологином, хранить ID незарегистрированного пользователя + секретный ключ. Разница будет лишь в том, что этот механизм будет работать только для незарегистрированных пользователей.

А можно оставить вашу идею с уникальным идентификатором для пользователей в виде хеша. Но тогда этот идентификатор нельзя будет менять и индекс в БД будет более тяжелым. Плюс тогда нельзя будет нигде светить этим идентификатором.

Это сообщение отредактировал(а) sTa1kEr - 25.2.2010, 23:21
PM MAIL   Вверх
Fortop
Дата 25.2.2010, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(IgorIV @  25.2.2010,  20:06 Найти цитируемый пост)
9 Вопрос, что надо сделать на сервере чтобы узнать залившего картинки назавтра?

заставить его зарегистрироваться.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
IZ@TOP
Дата 26.2.2010, 13:19 (ссылка)   | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



sTa1kEr, Вы или тролль или немного глуповаты?

Цитата(sTa1kEr @  25.2.2010,  22:47 Найти цитируемый пост)
Как вы правильно заметили, можно обойтись одной кукой secret key, но тогда, что бы узнать какого именно пользователя надо авторизовать, пришлось бы искать его по этому secret key, что обычно несколько накладнее. Куда проще хранить рядом с ним его ID'шник.


Это уже, простите, экономия на спичках. Думать надо, учиться и анализировать полученные знания и опыт.

Цитата(sTa1kEr @  25.2.2010,  22:47 Найти цитируемый пост)
Потому что сколько бы вы не выставили время жизни сессионой куки сборщик мусора все равно почистит все ваши сессии, которые старее 14400 секунд(по умолчанию).

Мне все равно чего там будет делать сборщик мусора. Я его как не трогал, так трогать и не собираюсь.

Цитата(sTa1kEr @  25.2.2010,  22:47 Найти цитируемый пост)
1. У вас будут накапливаться куча мусорных сессий. Пользователь удалил куку, сменил браузер, зашел с другого компьютера и каждый раз ему выдается новая сессия, причем старые идентификаторы так же будут оставаться валидными. А если еще учесть, что далеко не всем пользователем нужен автологин и большинству пользователям будет устанавливаться кука до закрытия браузера, то таких мусорные сессии будут плодиться с катастрофической скоростью.

Вы слишком самоуверенны. Во первых, опять же, никакого мусора храниться не будет. Сборщик мусора будет работать так, как это ему и положено. Во вторых, никаких новых сессий генерироваться не будет. Какой позор делать подобные предположения. В третьих - вы тут немного слукавили, ибо не всем в принципе пользователям нужна сессия, верно? Или вы ее стартуете для всех, даже для поисковых ботов? Ну и, собственно, не вижу проблемы в том, чтобы разделить пользователей, которые хотели, что бы их запомнили и тех, кто живет в течении стандартной сессии браузера.

Цитата(sTa1kEr @  25.2.2010,  22:47 Найти цитируемый пост)
Теперь еще раз подробнее про алгоритм, о котором я говорил.
Когда пользователь авторизуясь на сайте ставит галочку "запомнить меня", то генерируется некий secret key, который привязывается к данному пользователю и устанавливаются две куки на длительное время: ID пользователя и только что сгенерированный secret key.
Все, на этом на данный момент все манипуляции закончены. Мы все так же работаем с сессиями как и раньше.

Ну и в чем разница между sekret key и session _id? Я предлагаю сделать систему прозрачной, в тоже время по надежности она не уступит вашей. А вы предлагаете лишнюю прослойку и добавляете излишней логики.

Цитата(sTa1kEr @  25.2.2010,  22:47 Найти цитируемый пост)
Далее пользователь уходит с сайта, все сессии как положено очищаются, SID в куке остается жить продолжительное времяЧерез некоторое время он возвращается и передает на сайт SID. Мы пытаемся его аутентифицировать: получаем данные о пользователе по его SID и сверяем его с тем, что был сгенерирован ранее и если они совпадают, то авторизовываем пользователя и повторяем процедуру с генерацией SID при необходимости.
Все, дальше пользователь работает, как будто он авторизовался по логину и паролю.

Внес некоторые правки. Разницы опять не вижу. Разве что, только в том, что в Вашем варианте присутствуют излишние условия.

Цитата(sTa1kEr @  25.2.2010,  22:47 Найти цитируемый пост)
Т.о. все "навороты" заключаются в создании альтернативного backend'а авторизации (чем, собственно, автологин и является), что при грамотном ООП подходе не составит никакого труда и займет всего десяток строк.

Надо еще десяток лишних строк кода написать?! О ужас!

Цитата(sTa1kEr @  25.2.2010,  22:47 Найти цитируемый пост)
Как вы правильно заметили, можно обойтись одной кукой secret key, но тогда, что бы узнать какого именно пользователя надо авторизовать, пришлось бы искать его по этому secret key, что обычно несколько накладнее. Куда проще хранить рядом с ним его ID'шник.

Да не надо sekret key, он несет под собой ту же смысловую нагрузку, что и id сесии и спереть его можно точно так же, в течении сессии. Куда проще - не значит - куда правильнее. У нас работал программист, которому было куда проще сделать копипаст, чем переписать код под новые условия для возможности его повторного использования.


Цитата(sTa1kEr @  25.2.2010,  22:47 Найти цитируемый пост)
Нет, автологин не имеет никакого отношения к сессиям, это всего-лишь механизм "прозрачной" авторизации пользователя. 

А вот вырывать из контекста не нужно.

Цитата(IZ@TOP @  25.2.2010,  20:02 Найти цитируемый пост)
и данные прикрытые кэшом, что к механизму сессий имеет разве что косвенное отношение. 

При чем там был автологин вообще понятия не имею. Учитесь понимать собеседника.

И еще добавлю, что бы не было недопонимания: не знаю как в вашем случае, в моей практике большинство веб-морд проектов живет на нескольких серверах. Соответственно и сессии хранятся не на диске а во внешнем хранилище (MySQL, Memcached, Memcachedb, Redis), соответственно, как бы не хотелось, но идентифицируются сессии - правильно! - по строке из 32 символов. Я это к чему? Ну, как бы опять же, про экономии на разнице в производительности индексов по строке и инту - это экономия на спичках, которая может стать серьезной проблемой только в случае, если у вас таблица вырастет за гигабайт.

Добавлено @ 13:25
Цитата(sTa1kEr @  25.2.2010,  23:36 Найти цитируемый пост)
Просто т.к. данные пользователя часто требуются при каждом запросе, то есть смысл хранить в кеше всю информацию о пользователе(вместе с secret key) с ключем по его ID. Тогда, если в куках вместе с secret key будет лежать ID пользователя, то можно будет получить secret key задаром вместе с другими данными пользователя (все равно они итак-итак понадобятся).  

Это уже вопрос конкретной реализации,  не нужно путать людей излишней информацией.

Цитата(sTa1kEr @  26.2.2010,  00:20 Найти цитируемый пост)
Просто, если у вас вообще отсутствует регистрация, то вам как-раз больше бы подошел вариант IZ@TOP'а со стандартным механизмом сессий и увеличенным максимальным временем жизни. Тогда можно было бы вовсе отказаться от хранения информации о закаченных картинках в БД и тем самым упростить задачу. Т.е. отказаться от хранения не самой информации о картинках, а об их принадлежности какому-либо пользователю, т.к. как таковых пользователей нету и, соответственно, нету авторизации.


Эм, простите, а разве Вы используете не стандартный механизм сессий? У вас свой написан?
И опять же, прошу мои слова не коверкать. Я не увеличиваю время жизни сессии, я увеличиваю время жизни идентификатора сессии, что дает те же самые возможности, что и в случае с sekret key. Просто у меня отсутствует ID юзера, ибо смысла я в нем все так же не вижу.



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
sTa1kEr
Дата 26.2.2010, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Боже мой, сколько агрессии! smile Мой вам совет, учитесь быть сдержаннее.

А себе ответьте только на один вопрос: что произойдет, когда пользователь придет с идентификатором сессии через месяц, а самой сессии с таким идентификатором уже существовать не будет (ее почистит сборщик мусора по превышению максимального времени жизни)? 
PM MAIL   Вверх
IZ@TOP
Дата 26.2.2010, 15:08 (ссылка)   | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(sTa1kEr @  26.2.2010,  15:23 Найти цитируемый пост)
Боже мой, сколько агрессии! smile Мой вам совет, учитесь быть сдержаннее.

Это не агрессия мой юный друг, это праведный гнев, абсолютно оправданный по отношению к столь самоуверенной личности.


Цитата(sTa1kEr @  26.2.2010,  15:23 Найти цитируемый пост)
А себе ответьте только на один вопрос: что произойдет, когда пользователь придет с идентификатором сессии через месяц, а самой сессии с таким идентификатором уже существовать не будет (ее почистит сборщик мусора по превышению максимального времени жизни)?  

У меня нет вопросов, что бы на них отвечать, да еще и себе. А вот если вам не очевидно, что же произойдет, то я отвечу: стартанет новая сессия с тем же идентификатором. Все просто, ничего лишнего.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
sTa1kEr
Дата 26.2.2010, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(IZ@TOP @  26.2.2010,  16:08 Найти цитируемый пост)
А вот если вам не очевидно, что же произойдет, то я отвечу: стартанет новая сессия с тем же идентификатором. Все просто, ничего лишнего.

Цитата

- Доктор, я жить буду?
- А смысл?..

 smile 

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

Это сообщение отредактировал(а) sTa1kEr - 26.2.2010, 15:44
PM MAIL   Вверх
IZ@TOP
Дата 26.2.2010, 16:18 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(sTa1kEr @  26.2.2010,  16:23 Найти цитируемый пост)
На всякий случай поясню. Так как данные об аутентификации пользователя содержатся в сессии, то стартовав ее заново, пользователю придется так же заново аутентифицировать себя. Другими словами, автологин работать не будет.

Как будто со стенкой разговаривал все это время. Придется, видимо, объяснять как для умственно отсталых.

Возьмем в пример ваш собственный метод. 
Уберем оттуда ID пользователя, а в качестве secret key подставим значение ID сесии. Как и в Вашем случае, при применении настройки автологина, идентификатор сессии будет записан куда-то на постоянное хранение. Я вообще, если честно, не понимаю, чего Вы с такими способностями к логике в программисты записались. Попробуйте другое направление, в секторе обслуживания например.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
sTa1kEr
Дата 26.2.2010, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(IZ@TOP @  26.2.2010,  17:18 Найти цитируемый пост)
Возьмем в пример ваш собственный метод. 
Уберем оттуда ID пользователя, а в качестве secret key подставим значение ID сесии. Как и в Вашем случае, при применении настройки автологина, идентификатор сессии будет записан куда-то на постоянное хранение.

Ага, ну вот мы и пришли к общему знаменателю smile

Реализуем полностью мой метод со всеми "ненужными прослойками" в виде backend'ов прозрачной авторизации и заменяем в нем set_cookie() на session_set_cookie_params(), а md5(uniqid()) на session_id() smile 
PM MAIL   Вверх
Fortop
Дата 26.2.2010, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Бгг, наконец-то договорились.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
IZ@TOP
Дата 26.2.2010, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(sTa1kEr @  26.2.2010,  17:46 Найти цитируемый пост)
Ага, ну вот мы и пришли к общему знаменателю smile

Что-то Вы очень долго шли к понимаю как без secret key и user_id можно все это на обычном идентификаторе сессий построить. Возможно со временем опыт придет.

Цитата(sTa1kEr @  26.2.2010,  17:46 Найти цитируемый пост)
Реализуем полностью мой метод со всеми "ненужными прослойками" в виде backend'ов прозрачной авторизации и заменяем в нем set_cookiesetcookie() на session_set_cookie_params(), а md5(uniqid()) на session_id() smile  


Я рад, что Вы усвоили принцип хотя бы в таком виде.




--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
sTa1kEr
Дата 26.2.2010, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Ух! Интересно, чем же я вас так задел? Все таки подумайте над тем, что бы впредь контролировать свои эмоции. Они немного мешают вести диалог и затрудняют взаимопонимание. smile 

И еще я хотел бы добавить, генерация secret key при помощи session_id() усложняет задачу тем, что нам придется тщательно отслеживать перегенерацию SID и следить, что бы в базе всегда хранилось актуальное значение. Лучше, как говорится, держать мух от котлет отдельно smile 

Это сообщение отредактировал(а) sTa1kEr - 26.2.2010, 18:30
PM MAIL   Вверх
IZ@TOP
Дата 26.2.2010, 18:59 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(sTa1kEr @  26.2.2010,  19:25 Найти цитируемый пост)
Ух! Интересно, чем же я вас так задел? Все таки подумайте над тем, что бы впредь контролировать свои эмоции. Они немного мешают вести диалог и затрудняют взаимопонимание. smile 

Тут два вариант: или своей глупостью или излишней самоуверенностью. В любом случае, не я это начал и не я это закончил.

Цитата(sTa1kEr @  26.2.2010,  19:25 Найти цитируемый пост)
И еще я хотел бы добавить, генерация secret key при помощи session_id() усложняет задачу тем, что нам придется тщательно отслеживать перегенерацию SID и следить, что бы в базе всегда хранилось актуальное значение. Лучше, как говорится, держать мух от котлет отдельно smile

Что-то мне подсказывает, что тут достаточно сделать session_regenerate_id сразу после того, как вспомнили пользователя. Ну и опять же, secret key = session id. Потому тут не усложнение а упрощение из secret key & id в session id.
Впрочем, это уже, скорее всего, на вкус и цвет.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
sTa1kEr
Дата 26.2.2010, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(IZ@TOP @  26.2.2010,  19:59 Найти цитируемый пост)
В любом случае, не я это начал и не я это закончил.

Действительно, один из нас должен оказаться умнее и первым закончить этот диалог smile 

Это сообщение отредактировал(а) sTa1kEr - 26.2.2010, 19:05
PM MAIL   Вверх
IgorIV
Дата 26.2.2010, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Цитата(Fortop @  25.2.2010,  23:39 Найти цитируемый пост)
заставить его зарегистрироваться.

Полемика на эту тему должна продолжатся во флейме.


PM MAIL   Вверх
IZ@TOP
Дата 27.2.2010, 09:16 (ссылка)   | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(sTa1kEr @  26.2.2010,  20:03 Найти цитируемый пост)
Действительно, один из нас должен оказаться умнее и первым закончить этот диалог smile 

Согласен. Придется это сделать мне.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2010 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.