Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Создание собственных сессий


Автор: Zmiuko 6.3.2010, 06:10
Прощу сильно не "бить".. это делается для себя, самопознания и маленького проекта. Спасибо.

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

Код

<?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 секунд
Пардон, при создании топика не то написал - описание архитектуры... извините.

Автор: Ипатьев 6.3.2010, 09:21
как раз наоборот, в засорении головы смысла еще меньше, чем в невнятном учебном задании smile

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

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

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

Автор: azesmcar 6.3.2010, 09:57
http://www.webmasterworld.com/php/3585918.htm

Автор: IgorIV 6.3.2010, 10:21
http://forum.vingrad.ru/topic-292266.html

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

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

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

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

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

Спасибо, подсказали smile

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

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

Автор: awers 6.3.2010, 10:52
Zmiuko, cамосовершенствование не в изобретении велосипедов, а в изучении существующих технологий с их подводными камнями.

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

Автор: Ипатьев 6.3.2010, 12:17
Дело не в изобретении велосипеда.
Дело в том, у велосипеда треугольные колеса. 

Интересно, найдется хоть один человек кроме меня, который хотя бы прочтет вопрос и вникнет в суть проблемы?
А не будет отвечать на какие-то свои собственные ассоциации?

Автор: skyboy 6.3.2010, 12:52

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


Добавлено через 4 минуты и 36 секунд
Ипатьев, почему бы просто не игнорировать? никто ведь не принуждает отвечать.
Zmiuko, плохо, что задача, судя по твоим словам, возникла "из ничего". лучше бы были какие-то реальные предпосылки – недостатки стандартного механизма, или, точнее, нехватка функционала. самому не обидно – решать задачу, не имеющую практического смысла?
azesmcar, в данном случае мне ситуация кажется ближе к попытке переписать библиотеку iostream "в целях обучения", чем к изучению векторов и массивов. раз уж обращаться к С-аналогиям. не думаю, что подобный труд имеет смысл.

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

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

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

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

Имеет ли задача практический смысл - этот вопрос здесь не при чем.
У автора есть конкретная проблема - идентифицировать клиента. При этом ни один из стандартных вариантов им не был рассмотрен. 
После того, как ему указали на это - начались обычные в его стиле выступления: ни слова по сути вопроса, одни рассуждения о собственной оригинальности. Я считаю, что после первой же фразы подобного плана топик надо закрывать.

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

ППКС

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

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

user posted image

user posted image

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

Автор: IgorIV 6.3.2010, 19:44
Цитата(Ипатьев @  6.3.2010,  10:51 Найти цитируемый пост)
А дальше мы что будем делать?

Писать найденный идентификатор в куки. 

Автор: Ипатьев 6.3.2010, 20:00
Вот об этом и речь.
Ничего похожего у автора не наблюдается.
Вопрос был не как сгенерировать идентификатор, а чем заменить ip адрес в целях идентификации юзера.
Сама же по себе генерация униального идентификатора, привязанного к IP, никакую проблему решить не может.

Автор: Lexty 6.3.2010, 20:20
Цитата(Zmiuko @  6.3.2010,  06:10 Найти цитируемый пост)
Чем я могу указать на уникальность пользователя в своих сессиях вместо ip? То есть чем вообще можно заменить этот ip? Спасибо.

Генерировать уникальный ключ, сохранять на сервере, подставлять в строку запроса или в куки и сравнивать.

Автор: azesmcar 6.3.2010, 21:23
Цитата(Ипатьев @  6.3.2010,  20:00 Найти цитируемый пост)
Вопрос был не как сгенерировать идентификатор, а чем заменить ip адрес в целях идентификации юзера.

ответ мог бы быть такой: заменить на сгенерированный идентификатор, и далее по тексту рассказ о том, как сгенерировать идентификатор. Я лично не нашел в вопросе ничего непонятного, если человек не знает как решать задачу естественно то, что он и вопрос правильно не сформулирует. Ему надо это объяснить, а не рассказывать на 2х страницах что его задача фуфло. Просто у многих тут уже выработалась привычка отвечать не по теме. Один раз я на просьбу подправить регулярное выражение я получил ответ "используй библиотеку, в которой это уже написано". Браво, и как же я сам не догадался, очень полезный совет. Модераторам надо бы чистить все темы от флуда, вообще я бы на месте администраторов добавил функцию "лучший ответ" выбираемую автором вопроса, а то реально теряешься, 20 страниц и все не по теме, а потом еще удивляются, что люди поиском не пользуются, разве тут что-то найдешь?

Автор: Ипатьев 6.3.2010, 21:59
дада
все так и есть.
Автор вопроса пишет русским языком: "Чем я могу указать на уникальность пользователя"? Куча доброхотов кидается постить ссылки о том, как получить уникальность идентификатора.
А потом начинают рассуждать об ответах не по теме.

Автор: awers 6.3.2010, 23:03
Ипатьев, всё больше и больше флейма наблюдается и с твоей стороны. Будь любезен, умерь немного пыл и если есть чем помочь - помоги товарищу Zmiuko

Автор: Ипатьев 6.3.2010, 23:09
Я пробовал. В ответ на помощь я читаю такую вот фразу:
Цитата(Zmiuko @  6.3.2010,  10:42 Найти цитируемый пост)
Вот шож тебе неймется указать мне тот путь "как все"? Пускай я буду одним таким, нездравомыслящим.

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

Если бы модераторы следили не только за тем, чтобы "Тишина была в библиотеке!", но и за осмысленностью высказываний посетилелей, то - клянусь - ни слова оффтопика от меня никто бы не услышал. 

Автор: awers 6.3.2010, 23:13
Ипатьев, считают, однако просьба была именно к тебе. Потому что Zmiuko не объяснить.

Автор: Zmiuko 7.3.2010, 00:07
awers, пардон за флейм, но я извиняюсь если в чем-то разгневал или ввел в ситуацию неопределенности. Действительно не хотел. Вообще с моей стороны это просто непорядочно. Я не понимаю что и всегда имеет ввиду Ипатьев, но я тоже перед ним извиняюсь. Форум же считаю местом достаточным для простой организации "вопрос-ответ", ввергать вас в издевки или "шарлатанство" не имеет для меня удовольствия, так как вообще теряет смыл - для этого есть вконтакте и девочки-блондинки (не все). Что-то где-то изобретаю, что-то новое - хорошо забытое старое, но это же не повод упрекать, тем более профессионалам, достаточно прокомментировать в указание чего-либо, поскольку для этого этот форум и создан. Если бы мы друг другу флеймили по поводу ненужности - это бы в нас развивало не столько отвращение к собственной идеи, сколько претензионость, заученность неких правил только тормозящих сознание. Смотрите сами - мы живем по тем законам, что придумали сами, не более не менее и не смотря на их силу - это есть фикция и иллюзия, несмотря на всю их суровость, опять же суровость как и вся фикция придумана нами. Все как круговорот своя. Если я и что-то придумываю - проще указать на ошибку, либо реальную помощь, поскольку не столько дать понять в несерьезности и недальновидности идеи, от которой отказались все и вся, сколько дать ее рассмотреть, понять, изучить, проработать и в конце-концов дать опыт работы и таким образом преподать четкий и неголословный урок, а Урок с большой буквы, что так делать не следует. Чтобы человек не просто заучил слова Ипатьева, либо кого другого, а сам, самостоятельно, пускай не без помощи, наглядно увидел свою небрежность к мнению и несовершенство идей, пришел к определенному выводу и делал действительно нудные, пускай "не как все", а для себя самого вещи, проекты и прочее. В этом и состоит своеобразное воспитание. А по-другому и никак - вы, взрослые люди, воспитанные не на единой статье о php, да и не только им, вам как не кому другому должно быть это известно. Обидеть, или задеть, никого не хотел, в любом случае вы молодцы.
Да, я не соглашаюсь с вами, что предложенные мною коды, вопросы, идеи не соответствует сегодняшним принципам, идейности, реализациям, но если посмотреть трезво и не со ссылкой на меня, то заметим, что давно, уже более нескольких лет, любой программист, особенно с появлением фреймворков и сторонних библиотек, разучились думать в сторону оптимизаций и написания сложного функционала с нуля - да и зачем, проще использовать jquery (нет, он действительно хорош) или другую библиотеку, неважно какой бы то не был язык. Я пытаюсь понять структуру-технологию-проектирование с нуля. В этом нет ничего плохого. Даже если бы я использовал это для настоящих проектов - это было бы только мне в минус.
В любом случае, мне кажеться, при любом "справочном" вопросе, контрагент должен проявлять некую беспристрастность. В последнем случае человек спросил меня про закругление углов картинки в php, другой натыкал носом в код. Последний, на мой взгляд не был прав, во-первых данный скрипт не мой и легко находить даже в яндексе - ко мне претензий не должно было быть, во-вторых я человеку дал рабочий скрипт, пускай с небольщими минусами - но это есть подсказка. новичек использует как есть, профи - переработает, ни то ни другое - ну удосужиться создать здесь топик - в любом из них случае мне неважно зачем и к чему этому человеку нужен этот скрипт, поскольку я его и не продаю, да он и немой - вопрос есть вопрос, ответ есть ответ. Но я ответил развернуто и более ко мне ни по данному вопросу не было ни восклицаний, ни упреков, я действительно помог и все работало.
Ипатьев пускай не сердиться, что-то я ему наговорил в обиду, но не более того, что человек читает туториалы, а реальной помощи нет -поскольку теория есть теорией, а на практике теория есть не суть - более того иногда даже "подводные камни" создает. В любом случае я всегда благодарен уделенному вниманию, если оно не выходит за рамки дозволенного правилами и вежливости.
Надеюсь модератор меня поймет. Это совсем не флейм, если я написал бы в другой (разговорный) топик данного форума - это был бы настоящий флейм и должной "отдачи" он бы не нашел. А именно я имел ввиду то, что происходило в течении двух дней в данной категории и хотел дать полный и развернутый ответ всем тем, кто был в чем-то несогласен с моим мировоззрением, не в обиду никому, не в оскорбление - вы по-своему правы. Спасибо.

Автор: Zmiuko 7.3.2010, 00:38
В случае со своим скриптом я искал возможность обойти стороной и куки и сессии, найти полезное решение. На этом форуме, похожее писали, как Ипатьев (не в обиду) "Не использовать GD никак не получиться в формировании капчи", но все же я написал скрипт формирования картинки с шрифтом и прочем без ее использования. Вопрос о применимости? Ответ простой - использование скрипта не бесплатных хостингах, отличающихся своей убогостью, не в силу  несостоятельности, а в силу предлагаемых ресурсов, хостер сам не виноват ни в чем - он и так добро делает - hut.ru два-три года назад яркий тому пример - гениальность моя, как заметил Ипатьев, тут не причем - намеков не было, обиды никакой, непосредственности ноль - я просто делал свою работу и решил определенную задачу. Тоже самое с потоковым видео - сторонние программы, модули и прочее - разрешил ситуацию полностью, как не странно реализовав ее посредством стандарта php. Оригинальность тут не причем - просто даже я уже опустил руки - вкралась в голову идея,  организовал. Ничего сверхъестественного не создали. Если кому интересно - восстановлю скрипты- покажу, все достаточно убого, просто при становлении задачи с определенной обстановкой играет роль не столько возможности сколько целеустремленность - это сможет каждый. Сейчас я пытаюсь реализовать сессии без кук и без самих сессий.
Если мы рассмотрим вконтаке - знаменитый ресурс - да! он использует куки, это правильно. Но, у него нет sql базы как считалось и считается до сих пор, на то есть определенные знания в результате анализа и произведенных взломов (ничего деструктивного) проведенных мной - все содержится в совершенно иной архитектуре. на мой взгляд самой совершенной. Для масштабнных проектов, конечно. Но если посмотреть вглубь, допустим реализовать подключение посредством php и сокетов, то мы увидим, что любая ссылка в нем уникальна, будь то музыка или видео - имею виду то что там производиться проверка не сессий, а именно ip - хотя по идее ip не правильно считать за уникальный индетификатор. Поэтому я и озадачился даным скриптом и данной идеей. Помошь в следущем - сформировать уникальный индетификатор без кук и сессий.

Автор: gcc 7.3.2010, 01:01
как вариант http://ru.wikipedia.org/wiki/REST
http://en.wikipedia.org/wiki/Representational_State_Transfer



меня приколола вот эта http://www.x0.org.ua/photo/view/34/203






Автор: Ипатьев 7.3.2010, 01:12
Ну вот, наконец я получил ответ на свой вопрос.
Почему нельзя было сразу на него ответить, и сразу же получить разъяснения свого заблуждения - загадка. 

Цитата(Zmiuko @  7.3.2010,  00:07 Найти цитируемый пост)
Да, я не соглашаюсь с вами, что предложенные мною коды, вопросы, идеи не соответствует сегодняшним принципам, идейности, 

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

Чтобы писать собственный механизм сессий, можно не знать стандартный. Но нужно знать принцыпы, на которых сессия может работать вообще. Протокол НТТР. Что в нем передается, что не передается, а если передается - то каким образом. Браузер клиента работает по протоколу НТТР. Наши серверы работают по тому же протоколу. Это объективная реальность, это закон, сродни физическому. Это не "идейность". И не "реализация". Это факт, с которым надо считаться. 
Попытка написать собственный механизм сессий, не понимая протокола НТТР обречена на провал и на посмешище. 
Идея не использовать передачу идентификатора сессии средствами протокола - это не поиск нового. Это невежество. Новое можно искать, только если хорошо подкован теоретически. Это как в физике. Нельзя решить сложную физическую задачу, не зная физику. А если знаний нету - начинаются торсионные поля, наноочистка радиоактивных отходов и вечный двигатель. 

Никто не против поисков новых решений.
Но нужно различать новаторство и невежество.
И не нужно прикрывать свое невежество правильными словами про поиск нового. 

Надеюсь, эти общие замечания не будут сочтены переходом на личности. 

Автор: Zmiuko 7.3.2010, 01:41
Цитата(Ипатьев @  7.3.2010,  01:12 Найти цитируемый пост)
Надеюсь, эти общие замечания не будут сочтены переходом на личности.  

Да нет, если только я не соглашусь с невежеством. И все таки: какой ты вредный smile

Автор: Ипатьев 7.3.2010, 01:48
Да при чем здесь вредность. Может, где-то и вредный, но только не сейчас. 
Я тупо отвечаю на принципиальные, ключевые положения написанных выше текстов.
Показываю, где в них логические неувязки.

С сессиями понятно? Что в принципе идентификатор передавать можно в любом НТТР заголовке, но смысл имеет только либо в реквесте, либо в куках, либо в теле поста, если он есть? 

Автор: Zmiuko 7.3.2010, 01:59
Да это я понимаю, просто пытаюсь как раз отшагнуть, ну коль если получиться. На мой взгляд лучше было использовать MAC адрес, ну а что если пользователь не может использовать полноценно консоль - значит выбрасывается.

Я ищу оптимальное решение. В теории все понятно, теория давно и лаконична обоснованна. 

Вот если бы ip был уникален - я бы не искал отходных путей.

Мне необходимо отказаться от http идентификаторов и кук. 

С сессиями понятно тем более (я про стандарт предложенный php).

А ты все таки вредный ))))))))

PS: если задача изначальна глупа и тем более нереализуема - я действительно от нее отступлюсь в сторону кук, сессий, идентификаторов (здравый смысл все таки присутствует). Как правильно заметил - тут тоже дело принципа.

Автор: Ипатьев 7.3.2010, 02:11
Цитата(Zmiuko @  7.3.2010,  01:59 Найти цитируемый пост)
Я ищу оптимальное решение. 

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

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

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

Автор: NLspieler 7.3.2010, 05:34
А зачем создавать свой механизм сессий / дополнять существующий?

Я вижу следующие возможные причины:
- возможно поднять безопасность (или уменьшить - это от криворукости зависит)
- заставить сессии работать даже тогда, когда выключены куки (передавать индентификатор сессии через GET + IP и userAgent для проверки) 

Но пожалуй, ради 0,001% пользователей с выключенными куками и ради сомнительного плюса в безопасности разрабатывать свой механизм не стоит. Могу и ошибатся. 


Автор: Fortop 7.3.2010, 07:37
Zmiuko, рассуждения о законах-фикциях это конечно хорошо и замечательно что ты об этом задумываешься. Плохо то, что ты не справляешься с написанием собственных законов - твои придуманные законы очень плохо описывают действительность, о чем собственно и говорит Ипатьев.

Цитата(Zmiuko @  7.3.2010,  00:59 Найти цитируемый пост)
Мне необходимо отказаться от http идентификаторов и кук. 

Зачем?
Чем вызвана данная необходимость?

Цитата(NLspieler @  7.3.2010,  04:34 Найти цитируемый пост)
- заставить сессии работать даже тогда, когда выключены куки

Вы не поверите, но сессии таки работают с выключенными куками, во всяком случае с настройками в php.ini по-умолчанию.

Автор: Ипатьев 7.3.2010, 09:16
NLspieler, пользователей выключенными куками далеко не 0,001%
другое дело, автору и передача по ссылке тоже не подходит - он об этом не раз писал.

Автор: Zmiuko 7.3.2010, 11:03
Цитата(Ипатьев @  7.3.2010,  02:11 Найти цитируемый пост)
Но лично я бы, вместо стремления к оригинальности любой ценой, лучше бы почитал книжку по основам сетевых пртоколов.


Полагаю разбор сетевых протоколов мало чем сможет тут помочь.

Цитата(Fortop @  7.3.2010,  07:37 Найти цитируемый пост)
Вы не поверите, но сессии таки работают с выключенными куками, во всяком случае с настройками в php.ini по-умолчанию. 


Верю smile


Цитата(Fortop @  7.3.2010,  07:37 Найти цитируемый пост)
Зачем?
Чем вызвана данная необходимость?


Попытаться отшагнуть от кук и самих сессий в целом.

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

Автор: Ипатьев 7.3.2010, 11:37
Цитата

Полагаю разбор сетевых протоколов мало чем сможет тут помочь.

ну вот опять. не знаем, но предполагаем.
ну как не сможет помочь, если там написано, то мак адрес за пределы роутера не высовывается? 
Цитата(Zmiuko @  7.3.2010,  11:03 Найти цитируемый пост)
Извиняюсь, но в php не застал того времени, когда вместо кук использовали get-идентификатор,

ничего, все еще можно наверстать.
например, отключить куки в браузере и зайти на этот форум. а так же на много других. 
или почитать http://ru2.php.net/manual/en/session.idpassing.php
оказывается, наши представления о былых временах не совсем соответствуют действительности. а мы уже на основании своих представлений настроили кучу теорий smile

Автор: Zmiuko 7.3.2010, 11:43
Я имел ввиду не SID, который при отключенных куках падает в конец каждого url и тем самым, используется конечно, но приводит к разного рода неприятностям. Я про get-идентификатор при отказе от сессий.

Автор: Ипатьев 7.3.2010, 11:50
не понял. а в чем разница? 

Автор: Zmiuko 7.3.2010, 12:00
Пришел к такому решению: формировать запись в базе на определенное фиксированное время пять минут - пятнадцать - час, по uniqid()  формировать уникальное число с привязанным к нему и захешированным ip в связке с HTTP_CONNECTION и HTTP_USER_AGENT, потом ко всем ссылкам прибавлять сформированное уникальное число и потом его сравнивать. Также +/- использование кук. В целом с задачей справился, считаю вопрос решенным. Спасибо за терпение. smile

Автор: Fortop 7.3.2010, 15:04
Цитата(Zmiuko @  7.3.2010,  10:03 Найти цитируемый пост)
Попытаться отшагнуть от кук и самих сессий в целом.

Вот чтобы не заниматься ерундой, стоит такие почитать книжки и протоколах.
Хотя бы о HTTP, который stateless и именно поэтому ему нужны сессии.

Автор: NLspieler 7.3.2010, 21:50
Цитата(Ипатьев @  7.3.2010,  09:16 Найти цитируемый пост)
NLspieler, пользователей выключенными куками далеко не 0,001%

И сколько же их тогда, где можно посмотреть статистику?

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

Но вот зачем отключать куки, понять не могу. 
 
Цитата

Вы не поверите, но сессии таки работают с выключенными куками, во всяком случае с настройками в php.ini по-умолчанию.


Даже и не подозревал.
Правда механизм не совсем понятен, 
нужно ли что то делать с ссылками в php - коде / шаблоне, что бы они были с get-идентификаторами? Нужно ли самому добавлять к ним идентификатор или пропускать через специальные функции?

Автор: Fortop 8.3.2010, 00:00
Цитата(NLspieler @  7.3.2010,  20:50 Найти цитируемый пост)
нужно ли что то делать с ссылками в php - коде / шаблоне, что бы они были с get-идентификаторами? Нужно ли самому добавлять к ним идентификатор или пропускать через специальные функции? 

Цитата(php.ini)

; The URL rewriter will look for URLs in a defined set of HTML tags.
; form/fieldset are special; if you include them here, the rewriter will
; add a hidden <input> field with the info which is otherwise appended  
; to URLs.  If you want XHTML conformity, remove the form entry.        
; Note that all valid entries require a "=", even if no value follows.  
; Default Value: "a=href,area=href,frame=src,form=,fieldset="           
; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry" 
; http://php.net/url-rewriter.tags                                        
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)