Выборка данных

Я всё пытаюсь да пытаюсь что-то изобрести в свободное время))
Задумка такова , если кукесы пустые происходит инициализация сессии, в куки рандомная строка в базу хэш строки,
Ок , ладно ,знаний мне хватило на эти хакиииирьские манипуляции )) c md5 можно поймать колизию , сделал поле primary key. Что теперь делать ? Если id сессии выступает в виде хэша md5, взять в цикл генерировать до тех пор пока не найдется свободный.

PHP:
  1. $session_id = session_create_id();
  2. $hahs = hash(‘md5’, $session_id);

Возникает вопрос теперь, как получить из базы данных этот хэш если он же и есть id,

Код (Text):
  1. select id from sessions where id = $hash

, ок какя-то дичь а не запрос ,походил подумал типа

Код (Text):
  1.  select `id` from sessions

выбрал все сесии потом поместил их массив

PHP:
  1. $s = mysqli_fetch_assoc(mysqli_query($mysqli, «select `id` from `».PREFIX.«_sessions`»));

Помечтаем не много, вдруг у меня миллион сессии или 20 миллионов, это все 20 миллионов ждать , тоже какая-то дичь . Но пока 4 бота и я 1 :p
Как это всё оптимизировать, чтобы можно было сравнивать или есть такой хэш (он же id) тогда выполнять мне мои задумки дальше генерация перегенерации , сравнивать или совпали не совпали с текущей и т.д и т.п , памагите навести порядок ))

 

Это не то , мне нужно сообразить поиск по таблице адекватный с моими воображаемыеми 20 миллионами, потому что я передаю не уникальное значение и primary key зря вставил чувствую:D

 

Перестал бы уже велосипед изобретать…

 

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

И вдруг у меня 20 миллионов этих id :oops:

PHP:
  1. $hash = md5($session_id); // выступает в качестве id записи в бд
  2.  
  3. $s = mysqli_fetch_assoc(mysqli_query($mysqli, «select `session_id` as `id` from sessions»));
  4. if($hash != $s[‘id’])
  5.     // тру код 🙂

Это уже 2-3 месяца прошло, я начал хоть понимать что-то, 3 месяца назад ещё веселей было ))) когда я писал select count(*) в num_rows и на конце limit 1 этот форум этих моментов не застал :D
Типа

PHP:
  1. if(mysqli_num_rows(mysqli_query($mysqli , «select count(*) from users where email=»{$email}» LIMIT 1″ )) > 0)
 

Я тЕ уже писал в др. теме, что это хрень, и писал, как надо делать. Но ты походу проигнорил. По крайней мере я отклика не получил.

 

Ещё раз пожалуйста, я мог где-то на другом форуме зависнуть и забить

 

Ну найди свою недавнюю тему, где примерно про то же самое спрашивал.

И нафига вообще session_id самому в БД сохранять? Сессии пыха или в файлах хранятся, или ты в конфиге пыха нужное хранилище прописываешь. А поднятая тема актуальна, когда сессии пыха НЕ используются ;)

 

Для того чтобы когда ты вошёл на сайт ты гость или Вася был в одной сессии , аунтефикацию прошел опередило как пользователя к сессии в бд добавилась id пользователя вышел с аккаунта колоночка в null превратилась, у каждого свои идею, как правильно нету ))
Или я тебе в кукесы влеплю 1 и в базу 1 ?))
А вот это $_SESSION вообще не знаю зачем нужно, прочитал что живут до закрытия браузера , на этом и закончил изучение $_SESSION

 

Разным «гостям» одна общая сессия? :D Вообще не создавай гостям сессии, т.е.стартуй сессию по условию. Или используй для гостей «анонимные» сессии, т.е. разные, причем создавать такие сессии лучше не по GET’у, т.е. тоже не сразу создавай, а когда они какую-то кнопку тыкнут.

А понятно… :) Доку пыха не осилил. В $_SESSION хранятся данные сессии, загруженные в память. Причем когда ты меняешь эти данные (часто говорят «меняешь сессионные переменные», т.е. элементы этого superglobal-массива), то пых обычно автоматом выписывает обновленные данные в сессионное хранилище. Немного похоже на AR :D

 

Ты Вася заходишь ты на сайт чекнул или у тебя куки пустые создал тебе сессию, если не пустые нужно чекать что у тебя в кукесах , так вот чтобы до этого момента дойти я пытаюсь расхлебать вот это потому что записей может быть 20кк но на само деле не будет но всё же )))

PHP:
  1. $s = mysqli_fetch_assoc(mysqli_query($mysqli, «select `session_id` as `id` from sessions»));
  2. if($hash != $s[‘id’])

Ничего не вижу в этом плохого единственное что будет весить база много но это решаемо по дате последнего посещения

Я говорил мне всё равно как работает $_SESSION , он дохнет после закрытия, значит не интересует даже что он может хранить, это популярно во время аунтефикаци для галочки запомнить или нет, да 15 лет я не разу ее пустую так и не оставлял по своему опыту удобно когда запомнил кука в браузер ушла а не долбить каждый раз логин и пароль, решил что мусор не нужный

 

Не, тогда ты просто стартуешь сессию и «чекаешь» ее содержимое, например:

PHP:
  1. if (isset($_SESSION[‘id’])) {
  2.   // сессия была создана ранее
  3. } else {
  4.   // сессия была создана только что
  5. }

В сессионной переменной id ($_SESSION[‘id’]) достаточно просто id юзера хранить.

 

Объясни мне , зачем мне этот мусор? Каждый раз после закрытия долбить логин и пароль в систему? +100к безопасности типа)))
У меня пароль от гугл аккаунта на старом телефоне в виде скриена был проблема в том что я вошёл на этом телефоне ещё до того как разбил там экран ну вот 2 года хожу не зная своего пароля , номер привязан к докам а акк к номеру вот яу безопасности надо поменять пароль а мне по фигу там 20+ символов, номер же привязан как всё слетит тогда поменяю ну и телефон как доверенно устройство выступает , не скоро слетит)) а теперь представим была бы эта хрень на сессиях я бы не пользоаался бы даже Гуглом, я туда не собираюсь долбить пароль даже которого я не знаю ))

 

Не понял.
— Добавлено —

Можно использовать разные сессии для одного юзера. Если реально хочешь разделять сессию между девайсами юзера, тогда правда попробуй без сессий пыха обойтись. Как быстро искать/менять такие записи в БД, писал в др. теме.

 

Ну вот напиши себе аунтефикацию на этом массиве и поймёшь

 

Я не конченый дебил, чтобы такие массивы создавать ;)
— Добавлено —
См. приписку к пред. посту. Успехов.

 

Из Гугла
В широком смысле слова — это все запросы, сделанные пользователем в конкретный период времени. В узком смысле «сессия» в веб-аналитике — это серия запросов или переходов с согласованной потребностью пользователя. В Google Аналитике используется понятие «веб-сеанс».

Так от в моем представлении может сессия длится 365 дней и после закрытия браузера
— Добавлено —

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

 

Будешь борзеть, нах пошлю. Где я тебе советовал создавать стопудовый массив? Ты сам эту хрень придумал.

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

 

Я придумал сессию которую я увидел клю в куки хэш ключа в бд , Хэш выступает в качестве идентификатора записи, учитывая что у меня опыта мало я задал вопрос как можно решить кукок кода если 20 миллионов записей, не помещать их в массив и по ему искать же , может ещё как-то, ты не понял что происходит начала рассказывать как правильно , ну вот как правильно я считаю я уже придумал, осталось до ума довести , что и пытаюсь
Нету как правильно главное чтобы логика была 9×5+5 или 10×5 желательно 10×5 так же проще но мы получаем один и тот же результат в обеих случаях, ну вот я выбрал путь 7×6+8

 

Реально не можешь мой пост в др. своей теме найти? :)

В токене, который передается на клиент/приходит от клиента, объединяй id и ключ. Это объединение можешь дополнительно и на сервере хранить в отдельном поле, но обычно пакуют/распаковывают «на лету», а в отдельных полях хранят части.
— Добавлено —
Если хочешь разделять сессию между девайсами юзера, то ключ в БД нужно в открытом виде хранить, т.к. тебе понадобится его «распространять» на девайсы юзера.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *