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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание собственных сессий, описание архитектуры, строения 
:(
    Опции темы
Zmiuko
  Дата 6.3.2010, 06:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


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

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



Прощу сильно не "бить".. это делается для себя, самопознания и маленького проекта. Спасибо.

Делаю своеобразную эмуляцию сессий. Вот. Даже код написал:

Код

<?php
class session
{
 var $sdb;
 var $set;
 var $sid;
 var $caller;
 function session()
 {
  $this->sdb = new msdb;
  $this->caller["hash"] = $this->genhash();
  $this->set["dir"] = "./db/sessions/";
  $this->set["sidlen"] = 12;
  $this->set["sidchars"] = "abcdefghijklmopqrstvuwxyzABCDEFGHIJKLMOPQRSTVUWXYZ1234567890";
  $this->set["hashline"] = "@REMOTE_ADDR@@@HTTP_CONNECTION@@HTTP_HOST@";
  $this->set["useHash"] = false;
  $this->set["expsess"] = 60*60*24;
 }
 function open($sid)
 {
  if (!$this->parseSession($sid))
  {
   $this->createSession();
   return false;
  }
  else {return true;}
 }
 function createSession()
 {
  $sid = $this->gensid();
  $this->sid = $sid;
  $this->sdb->load($this->set["dir"].$sid);
//  $this->sdb->lock();
  $this->sdb->db = array("inf"=>array("hash"=>$this->genhash()),"vars"=>$this->vars);
  $this->sdb->flush();
  $this->sid = $sid; 
  return $sid;
 }
 function checkhash()
 {
  if ($this->set["usehash"]) {return $this->caller["hash"] == $this->sdb->db["inf"]["hash"];}
  else {return true;}
 }
 function parseSession($sid)
 {
  if ($this->isSession($sid))
  {
   $this->sid = $sid;
   $this->sdb->load($this->set["dir"].$sid);
//   $this->sdb->lock();
   if (!$this->checkhash()) {return false; exit;}
   else
   {
    $this->sid = $sid;
    return true;
   }
  }
  else {return false;}
 }
 function flush($sid="")
 {
  if (!$this->checkhash()) {return false;}
  else
  {
   if (empty($sid)) {$sid = $this->sid;}
   $this->sdb->flush();
  }
 } 
 function gensid()
 {
  while (true)
  {
   $sid = "";
   $sidchrlen = strlen($this->set["sidchars"]);
   for($i=0;$i<$this->set["sidlen"];$i++)
   {
    $nc = rand(0,$sidchrlen);
    $sid .= $this->set["sidchars"][$nc];
   } 
   return $sid;
   if (!$this->isSession($sid)) {break;}
  }
 }
 function genhash()
 {
  $arrstrreplace = array("@HTTP_CONNECTION@"=>$HTTP_CONNECTION,
"@HTTP_HOST@"=>$HTTP_HOST,
"@HTTP_CONNECTION@"=>$HTTP_CONNECTION,
"@HTTP_USER_AGENT@"=>$HTTP_USER_AGENT,
"@REMOTE_ADDR@"=>$REMOTE_ADDR,
"@REMOTE_PORT@"=>$REMOTE_PORT
);
  $hash = myphpcrypt(str_replace(array_keys($arrstrreplace),array_values($arrstrreplace),$this->hashline));
  return $hash;
 }
 function isSession($sid) {return !empty($sid) and file_exists($this->set["dir"].$sid);}

 function destroy($sid="")
 {
  if (empty($sid)) {$sid = $this->sid;}
  return @unlink($this->set["dir"].$sid);
 }
}
?>


Чего я прошу: дело в том, что мои сессии работают так - берется, грубо говоря ip и заноситься в некий файл или базу - не суть; имя ячейки либо файла, допустим, тот же ip только в base_64. НО ip брать не выход - так как многие сидят под одним, да и вообще на него нельзя надеяться. На HTTP_USER_AGENT и прочее: указание портов, провайдера - также не выход.

Чем я могу указать на уникальность пользователя в своих сессиях вместо ip? То есть чем вообще можно заменить этот ip? Спасибо.

ЗЫ: Понимаю всю несерьезность, несуразность и может быть глупость моего проекта (скрипт используется на мини-сайте, к удивлению достаточно хорошо себя ведет) .
ЗЫ 2: Ипатьев, на этот раз это не учебное занятие - я просто засоряю себе голову (естественно смысл присутствует). smile

Добавлено через 2 минуты и 37 секунд
Пардон, при создании топика не то написал - описание архитектуры... извините.
PM MAIL WWW ICQ Skype Jabber   Вверх
Ипатьев
Дата 6.3.2010, 09:21 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



как раз наоборот, в засорении головы смысла еще меньше, чем в невнятном учебном задании smile

Цитата(Zmiuko @  6.3.2010,  06:10 Найти цитируемый пост)
Чем я могу указать на уникальность пользователя в своих сессиях

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

Это сообщение отредактировал(а) Ипатьев - 6.3.2010, 09:51
PM MAIL   Вверх
MaXL
Дата 6.3.2010, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

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



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

Это сообщение отредактировал(а) MaXL - 6.3.2010, 09:46


--------------------
MaXL
PM MAIL   Вверх
azesmcar
Дата 6.3.2010, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



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


Опытный
**


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

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



PM MAIL   Вверх
Zmiuko
  Дата 6.3.2010, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


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

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



То бишь проще ввести ip{разделитель}time (адрес+время первого вхождения) ? ну можно еще ссылочку сделать на uniqid() 

Цитата(Ипатьев @  6.3.2010,  09:21 Найти цитируемый пост)
чем не устроил один из двух механизмов, используемых в стандартных сессиях?

Вот шож тебе неймется указать мне тот путь "как все"? Пускай я буду одним таким, нездравомыслящим. smile

Цитата(MaXL @  6.3.2010,  09:46 Найти цитируемый пост)
Но опять таки, нафига  ?

Преследую идею изобретения велосипеда ))))) шучу, конечно. Для самосовершенствования.

Спасибо, подсказали smile
PM MAIL WWW ICQ Skype Jabber   Вверх
Ипатьев
Дата 6.3.2010, 10:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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

Zmiuko, вы так и не поняли.
Я делюсь знаниями. Базовыми знаниями. 
Оригинальность хороша, когда делаешь что-то действительно новое.
Но в вопросах таблицы умножения оригинальность не нужна. 2х2=4 , и с этим придется смириться. 
Ваша проблема в том, что вы полагаете себя гением, а свои задачи - уникальными. Не удосужившись при этом ознакомиться с букварем по программированию.

PM MAIL   Вверх
awers
Дата 6.3.2010, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Zmiuko, cамосовершенствование не в изобретении велосипедов, а в изучении существующих технологий с их подводными камнями.
PM MAIL WWW ICQ Skype   Вверх
azesmcar
Дата 6.3.2010, 12:11 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



В последнее время винград начал превращаться в свалку ненужной информации и флейма. Куда не глянь везде выяснение отношений и дурацкие споры не по теме. Что вам всем так неймется то? Ну задал человек, ответьте и закройте тему, нет же, надо часами доказывать ему что он нихрена не знает и это ему не нужно. Писать в учебных целях можно все что угодно, главное писать, на начальном этапе все на пользу. Годами люди обучаясь C++ пишут классические задачи list -ы и vector-ы (читать изобретают велосипед) и никто им не говорит "займись чем нибудь полезным" ибо в этом больше пользы, чем например в каком нибудь дурацком симуляторе лифта, который описан в Дейтлах. Изобретение велосипедов дает понимание устройства и работы этих самых велосипедов. Это мое мнение.

PM   Вверх
Ипатьев
Дата 6.3.2010, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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

Интересно, найдется хоть один человек кроме меня, который хотя бы прочтет вопрос и вникнет в суть проблемы?
А не будет отвечать на какие-то свои собственные ассоциации?
PM MAIL   Вверх
skyboy
Дата 6.3.2010, 12:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

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




M
skyboy
прекратите перепалку в публичном месте. если вам доставляет удовольствие обмениваться остротами - пожалуйста, делайте это в ЛС


Добавлено через 4 минуты и 36 секунд
Ипатьев, почему бы просто не игнорировать? никто ведь не принуждает отвечать.
Zmiuko, плохо, что задача, судя по твоим словам, возникла "из ничего". лучше бы были какие-то реальные предпосылки – недостатки стандартного механизма, или, точнее, нехватка функционала. самому не обидно – решать задачу, не имеющую практического смысла?
azesmcar, в данном случае мне ситуация кажется ближе к попытке переписать библиотеку iostream "в целях обучения", чем к изучению векторов и массивов. раз уж обращаться к С-аналогиям. не думаю, что подобный труд имеет смысл.
PM MAIL   Вверх
azesmcar
Дата 6.3.2010, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Цитата(skyboy @  6.3.2010,  12:52 Найти цитируемый пост)
azesmcar, в данном случае мне ситуация кажется ближе к попытке переписать библиотеку iostream "в целях обучения", чем к изучению векторов и массивов. раз уж обращаться к С-аналогиям. не думаю, что подобный труд имеет смысл. 

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

Работал я в одной конторе, там для написания веб приложений использовался язык C и писалось все на CGI. PHP, JSP, ASP .. все выкидывалось в мусоропровод, ничего не разрешено кроме чистого C. И там приходилось писать и свои сессии и много чего другого. Это так, о ненужности.

Это сообщение отредактировал(а) azesmcar - 6.3.2010, 13:14
PM   Вверх
Ипатьев
Дата 6.3.2010, 13:43 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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

Имеет ли задача практический смысл - этот вопрос здесь не при чем.
У автора есть конкретная проблема - идентифицировать клиента. При этом ни один из стандартных вариантов им не был рассмотрен. 
После того, как ему указали на это - начались обычные в его стиле выступления: ни слова по сути вопроса, одни рассуждения о собственной оригинальности. Я считаю, что после первой же фразы подобного плана топик надо закрывать.
PM MAIL   Вверх
bars80080
Дата 6.3.2010, 18:18 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



Цитата(azesmcar @  6.3.2010,  11:11 Найти цитируемый пост)
В последнее время винград начал превращаться в свалку ненужной информации и флейма. Куда не глянь везде выяснение отношений и дурацкие споры не по теме. Что вам всем так неймется то? Ну задал человек, ответьте и закройте тему, нет же, надо часами доказывать ему что он нихрена не знает и это ему не нужно. Писать в учебных целях можно все что угодно, главное писать, на начальном этапе все на пользу. Годами люди обучаясь C++ пишут классические задачи list -ы и vector-ы (читать изобретают велосипед) и никто им не говорит "займись чем нибудь полезным" ибо в этом больше пользы, чем например в каком нибудь дурацком симуляторе лифта, который описан в Дейтлах. Изобретение велосипедов дает понимание устройства и работы этих самых велосипедов. Это мое мнение.

ППКС

Цитата(Ипатьев @  6.3.2010,  11:17 Найти цитируемый пост)
Дело в том, у велосипеда треугольные колеса. 

а почему ты решил, что это не имеет право на существование?

user posted image

user posted image
PM MAIL WWW   Вверх
Ипатьев
Дата 6.3.2010, 18:32 (ссылка)  | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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

Это сообщение отредактировал(а) Ипатьев - 6.3.2010, 18:34
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1515 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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