Forum Webscript.Ru
Программирование => PHP => Тема начата: Shamandeffer от 05 Июля 2003, 16:44:12
-
Может это глюк.
Открываю окно www.xxx.index.php.
В скрипте у меня указано, что если сессия новая то - header("www.xxx.index.php?название_и_номер_сессии");.
При открытии нового окна (не закрывая старое) в IE создаётся новоя сессия,
не зависимо от того включены или отключены куки, открыты ли ещё окна IE. Глюк исчезает, когда в php.ini включить куки и установить время жизни куки больше 0.
Я знаю, что IE должен видеть созданую ранее сессию.
Глюк НЕ наблюдается в Opera, Mozilla, Netspase.
:cool:
-
IE вообще не должен видеть сессию
а вот расскажи как ты представляешь себе ситуацию что номер сессии передаётся без кук...? правильно! можно добавить в адресную строку номер сессии... и что же... ты открываешь новое окно с уже записаным номером сессии?
я думаю нет...
тогда почему без кук кто-то (читать что-то (читать ПХП)) должны понимать что вот это новое соединение надо сопоставить вот с этой старой сессией...
мыслить надо!
-
nagash
Понятно. Просто я думал, что пока открыто окно IE, номер сессии не теряется,
даже если его не передавать в адресной строке (как в Opera, Mozilla, Netspase).При работе над сессиями я беру за основу их работу на сайте
www.begun.ru
(http://partner.begun.ru/comming.jsp?soid=1827253&grid=1)
Если заходишь на этот сайт тебе выдаётся номер сессии. Если ты откроешь ещё окно about:blank и зайдёшь опять не закрывая предыдущего окна - номер сесии тотже.
При чём куки в данном случае не используются (я проверял).
Хотел бы сделать также.
-
Это можно реализовать если привязаться к IP, но ---
целесообразно ли использование Базы Данных в данном случае?
-
Shamandeffer
плохо проверял...
у меня в новом окошке почему то новая сессия =)
-
Shamandeffer:
При открытии нового окна (
Что имеется в виду?
Открыть новое окно через "открыть в новом окне" по ссылке из старого или просто новое окно эксплорера?
-
nagash
Я только что проверил:
нажал на ссылку - получил номер сессии.
закрыл окно Бегуна, нажал опять на ссылку - номер тотже, куки не всплывали.
RomikChef
Shamandeffer:
При открытии нового окна (
Что имеется в виду?
Открыть новое окно через "открыть в новом окне" по ссылке из старого или просто новое окно эксплорера?
Я имел в виду просто новое чистое окно с последующим вводом
www.xxx.index.php
-
эм...
так ты на ссылки на бегуне нажимаешь?
хех =)
-
nagash
эм...
так ты на ссылки на бегуне нажимаешь?
хех =)
Нет. Я нажимаю на ссылку, раннее оставленную на этой странице
www.begun.ru (http://partner.begun.ru/comming.jsp?soid=1827253&grid=1) - открывается окно Бегуна с присвоенной мне СеССией.
Затем закрываю окно Бегуна. На рабочем столе открыт EditPlus v2.11, и окно этого форума.
Затем нажимаю (опять) на туже самую ссылку
www.begun.ru (http://partner.begun.ru/comming.jsp?soid=1827253&grid=1) - открывается (опять) окно Бегуна с той же сессией. КуКи не использовались (наверное MySQL).
Извиняюсь, я наверно напряг кого-то какой-то моей проблемой. Постараюсь сам разобраться.
Как только так сразу. Расскажу.
-
Shamandeffer:
Я имел в виду просто новое чистое окно с последующим вводом
http://www.xxx.index.php
при открытии просто нового окна новая сессия НЕ ДОЛЖНА сохраняться. Должна начинаться новая..
Остальные браузеры сохраняют потому, что они - это одно большое окно.
-
Чего там уже говорить если вчера пришла рассылка (не помню точно что за фирмА, потому как убил сразу) было заявлено следующее...
Разработанный нами браузер используя движёк IE и вобрав в себя самые его лучшие качества такие как мультисессионность и многозадачность скоро станет прекрасным многоцелевым Web навигатором - заменой всем существующим на данный момент....
Но из всего этого маразма следует одно - если ориентация на IE то лучше передавать SID явным образом, либо порождать одно из другого (окно в смысле)...
:) МНОГОЦЕЛЕВОЙ - прям тебе истребитель- бомбардировщик или там человек -пароход:)
-
RomikChef
при открытии просто нового окна сессия НЕ ДОЛЖНА сохраняться. Должна начинаться новая..
Остальные браузеры сохраняют потому, что они - это одно большое окно.
Понятно. Значит сделаю привязку к IP-адресу, запишу в MySQL на срок 24 часа.
MrGreeN
Но из всего этого маразма следует одно - если ориентация на IE то лучше передавать SID явным образом, либо порождать одно из другого (окно в смысле)...
Порождать то лучше, но никто не запретит юзеру породить окно не из текущего.
-
Shamandeffer:
Значит сделаю привязку к IP-адресу, запишу в MySQL на срок 24 часа.
Что за бред?
Кто мешает тебе использовать куки?
Это точнее, чем IP.
Объясни толком - что ты вообще делаешь-то?
Судя по всему, у тебя банальная авторизация, и иты действительно путаешь в дикую кашу куки и сессии, не понимая ни того ни другого.
Ну 100 раз же уже отвечали.
если хочешь АВТОЛОГИН, то СТАВЬ КУКУ.
-
Понятно. Значит сделаю привязку к IP-адресу, запишу в MySQL на срок 24 часа.
бред какой то...
включи передачу номера сессии через куки да и всё...
что за заморочки непонятные?
-
Shamandeffer
вот смотри.
АВТРИЗАЦИЯ на этом форуме организована СЕССИЯМИ.
но автологин - КУКАМИ.
Если я открою два независимых окна, то в обоих буду АВТОРИЗОВАН.
сессии будут РАЗНЫЕ, но это не имеет никакого значения - юзер-то один!
панимаешь?
Если нет - спроси, я постараюсь по-другому объяснить
-
Друзья мои!
Я давно уже реализовал всё выше перечисленное и упомянутое!
С включенной передачей номера сессии через КуКи в PHP у меня ВСЁ работает.
Просто, КуКи не надёжны тем, что НЕ ВСЕ ЮЗЕРЫ ВКЛЮЧАЮТ ИХ НА СВОЁМ ПК! .
Если у юзера не включенны КуКи, то о никокой авто-авторизации не и речи, НО даже
при ручной авторизации - она ПРоПАДАЕТ при переходе на любую другую страницу (т.е.
надо каждый раз вводить пароль и логин), так же присваивается на каждой странице новая СеССия.
Попробувайте даже на ЭТОМ форуме!
Не хочу полностью привязываться к кукам!
А на www.begun.ru (http://partner.begun.ru/comming.jsp?soid=1827253&grid=1)
чтобы сменить номер СеССии я заходил с помощью анонимного прокси сервера.
-
Shamandeffer:
НО даже
при ручной авторизации - она ПРоПАДАЕТ при переходе на любую другую страницу
Для этого в РНР предусмотрен механизм передачи сида через урл.
включи - и все будет работать.
Как сделано на бегуне - я не знаю.
но привязываться по ip - нельзя.
-
ты бредишь.
я сейчас прошел по этим твоим ссылкам - открываются новые сессии, как и положено.
если есть кука - то сессия та же самая из одного окна.
Если нет куки - то разная.
в разных окнах - разные сессии.
Короче, разхберись со своими браузерами, прочти, на конец, http://faq.phpclub.net/session, и перестань задавать глупые вопросы.
-
Shamandeffer
не хочу привязываться к кукам
Кому надо тот их оставит...Я для этого форума их специально не отключаю (экономия времени понимаете ли)...
Но можно сделать и как на SQL.RU (т.е. у тебя юзер постоянно будет долбаться с авторизацией на каждом ответе)
-
Ладно. Уже пошла вторая страница, а толку нет. Ну не смог я объяснить что ме конкретно надо, т.к. я вижу, что я говорю об одном, а мне отвечают о парралельном.
RomikChef
Как сделано на бегуне - я не знаю.
Я узнаю сам. Закрывайте топик.
-
Тебе отвечают ровно о том, о чем ты спрашиваешь.
вот мозгов понять это - у тебя, действительно, не хватает
При открытии нового окна (не закрывая старое) в IE Создаётся новоя сессия,
Повторяю, для тупых.
так и должно быть. Так работает ИЕ. Другое окно - другие переменные - авторизация, сессионные куки и др. Это ОЧЕНЬ удобно и правильно.
Если ты открываешь новое окно не отдельно, а из первого, то в новом все остается - и куки в том числе.
А с куками - и сессия.
Shamandeffer:
Я узнаю сам. Закрывайте топик.
Нечего тебе узнавать.
Все там все то же, что тебе и вколачивают в твою башку уже две страницы подряд.
Есть протокол НТТР, по которому общается браузер с сервером. в этом протокле средст идентификации браузера - раз-два и обчелся.
На основании этой информации ОЧЕНЬ ПРОСТО узнать, как работает твой дохлый бегун.
Те же механизмы, которые мы имеем в РНР сессиял.
Либо куки, либо урл
ВСЕ
уйми свою больную фантазию, и прочти доку.
узнаватель.
Не про бегуна тебе надо здесь спрашивать - с бегуном все ясно, там все стандартно.
А про сессии тебе надо спрашивать, потому, что ты в них ни ухом ни рылом.
Понятно?
-
header("www.xxx.index.php?название_и_номер_сессии");.
Вот это - ДЕЛАТЬ НЕ НАДО.
Это бессмысленная операция.
Если ты хочешь, чтобы так появлялось, то это делает одна настройка в РНР.ини
Только не надо тут хлопать дверью, закатывать истерики, просить закрывать топики и думать, что кто-то хочет унизить главного менеджера ООО "Укртрансформатор".
Надо просто внимательно прочитать, что тебе пишут специалисты, проанализировать - что в этом не совпадает с твоими собственными представлениями, и задать вопрос - а почему так.
-
в общем-то, понятно, почему ты не смог объяснить того, что тебе надо.
потому что это фантазии твои.
,я может, тоже захочу спросить = а как мне на РНР ракету на марс запустить?
И буду обижаться, что меня не понимают.
А ты хоти простых вещей.
то, что в сети видел.
Как работает бегун - я тебе объяснил.
если непонятно - не стесняйся, я еще объясню.
И все у тебя будет работать.
-
короче.
то, что ты хочешь, во-первых, хотеть вредно и неправильно, а во-вторых, на бегуне этого нет и в помине.
вот.
Это если коротко
-
RomikChef
Було монго текста
Ни кто не обижается. Ни кто ни чего не фантазирует.
ВСЁ, ЧТО КАСАЕТСЯ ПЕРЕДАЧИ НОМЕРА СеССии ЧЕРЕЗ URL(PHP ЭТО ДЕЛАЕТ АВТОМАТИЧЕСКИ И У МЕНЯ ЭТО ДЕЛАЕТСЯ АВТОМАТИЧЕСКИ!) И/ИЛИ ЧЕРЕЗ КуКи(PHP ЭТО ДЕЛАЕТ ТОЖЕ АВТОМАТИЧЕСКИ И У МЕНЯ ЭТО ДЕЛАЕТСЯ ТОЖЕ АВТОМАТИЧЕСКИ!) С СООТВЕТСТВУЮЩИМИ НАСТРОЙКАМИ В php.ini(ВСЁ НАСТРОЕНО!) МНЕ БЫЛО ПОНЯТНО И ДО ОТКРЫТИЯ ЭТОГО ТОПИКА(ВСЁ РАБОТАЕТ ОТЛИЧНО)!
Тестируя свою "работу" я заметил, что если отключить передачу СеССии через КуКи(ЭТОГО ДЕЛАТЬ НЕ НАДО И Я НЕ СОБИРАЮСЬ!) ИЛИ если отключить КуКи на самом ПК(ВКЛЮЧИТЬ КуКи ВСЕМ НА СВЕТЕ Я НЕ В СИЛАХ!), ТО любой юзер открыв 2(к примеру 2) независимо пустых окна в IE, набрав в строках "Адрес:" один и тот же ULR получает две различные СеССии(Я ПРЕКРАСНО ПОНИМАЮ ПОЧЕМУ!) и может индифицироваться как 2 юзера, а не один(!) - это делается правильно, по всем правилам РНР(Я ПОНИМАЮ, ЧТО ЕСЛИ НЕТ КуК И НЕТ ЯВНОЙ ИЛИ СКРЫТОЙ ПЕРЕДАЧИ НОМЕРА СеССии, ТО ПРИСВАИВАЕТСЯ НОВЫЙ НОМЕР СеССии).
RomikChef
...для тупых.
...на бегуне этого нет и в помине...
Так вот я хочу, чтобы юзер не смог ТАК(см. пример с двумя пустыми окнами) "обмануть" сервер и индифицировался как один и тот же юзер, даже если у него не включены КуКи и нет возможности передать PHPSESSID(см. пример с двумя пустыми окнами).
Бегун так не обманишь.
RomikChef
Тебе отвечают ровно о том, о чем ты спрашиваешь.
...что тебе пишут специалисты...
Надеюсь я выложил вопрос понятно. Если да, то обьясни мне, пожайлуста, почему не обманывается Бегун.
Если сможешь обьяснить, то я буду только рад(!). Только, прошу, не надо речей, а просто ОБЬЯСНИ.
Если не сможешь... Жаль... По-другому задать вопрос я не могу...
-
Бегун так не обманешь.
Ты ошибаешься.
Как могу объяснить тебе, почему не обманывается бегун, если он обманывается?
Старт двух разных сессий в разеных окнах - достаточное для тебя доказательство?
Ну так устроен интернет - анонимный он по определению.
Сделаешь ты защиту по ip - я зайду через анонимный прокси.
-
Я знаю, что IE должен видеть созданую ранее сессию.
И после этого ты заявляешь, что все знаешь и все понимаешь и все у тебя сделано правильно?
ну-ну
-
Действительно, причём тут IE - это всего-лишь клиентская запчасть, чего сервер отошлёт, то он и будет видеть...
Shamandeffer
А чего мешает тебе логины/пароли хранить в базе( к примеру), доступ к таблице через хранимую процедуру при создании сессии, а сверять не пароль, а его хеш.
Ну даже угадает кто номер сессии и что дальше?...
-
MrGreeN
Да он не об этом.
Shamandeffer, ты что хочешь сделать-то?
Не разрешать заходить одному юзеру с двух логинов? с одного компа? или с одного и того же?
Объясни толком, что именно не обманывается в бегуне.
-
Если я правильно понял, то алгоритм примерно таков:
1. Выбераем таймаут, к примеру 5 минут.
2. Юзер заходит на сайт и мы узнаем его айпи.
3. Проверяем, существует ли последние 5 минут (таймаут) сессия у юзера с этим айпи.
4. Если не существует - выдаем ему новую сессию.
5. Если существует, получаем номер этой сессии и отправляем юзеру что-то типа такого:
header("Location: ". getenv(\'REQUEST_URI\') ."?PHPSESSID=".$session_id);
-
FreeSpace
Если я правильно понял, то алгоритм примерно таков:
1. Выбераем таймаут, к примеру 5 минут.
2. Юзер заходит на сайт и мы узнаем его айпи.
3. Проверяем, существует ли последние 5 минут (таймаут) сессия у юзера с этим айпи.
4. Если не существует - выдаем ему новую сессию.
5. Если существует, получаем номер этой сессии и отправляем юзеру что-то типа такого:
header("Location: ". getenv(\'REQUEST_URI\') ."?PHPSESSID=".$session_id);
ВОТ! ВОТ ТАК! ТОЛЬКО Я БУДУ ПРОВЕРЯТЬ НЕ 5 МИНУТ, А СУТКИ(ТАК НАДО)
бОЛЬШОЕ ТЕБЕ СПАСИБО, FreeSpace , ЗА ДОБРЫЙ СОВЕТ!!!
Наверное я правильно выложил свой вопрос, раз ты понял о чём я говорю.
Оказывается это не всем дано.
Спасибо ещё раз,FreeSpace !
-
Это один из вариантов, которые рассматривал :-)
Это о нем я писал, что это вредно и неправильно
И не нужно этого хотеть.
Все идет от непонимания механизма сессий.
Этот механизм - безличный. И не следует его притягивать к каждому юзеру персонально.
совершенно не могу понять, для чего может вообще понадобиться иметь обязательно один и тот же номер сессии.
FreeSpace - тебе дано, может, приведешь примерчик, объяснишь, а? :-)
-
RomikChef
Не издевайся :)
Сам я реально слабо представляю, зачем это нужно, потому что сессии юзаю редко.
Но мало ли, чтобы во всех окнах инет-магазина был одинаковый шоппинг карт или ещё что-то типа того...
-
Действительно не совсем понятно зачем такие извороты...
Кстати ктонибуть знает какой процент людей в инете у каторых динамически меняется IP в ходе работы?
С cookie понятно у около 1% отключено если верить статистики (они сами их отключили ну или браузеры вообще раритетны и это их проблеммы на мой взгляд)...
А вот например у меня инет по постоянному доступу и я сам одним щелчьком могу поменять свой внешний ip путем переключения различных каналов, провайдеров (у меня их 2) + каждый провайдер может менять канал в зависемости от нагрузки и т.д.
Так вот будет в твоей системе предусмотренна обработка такой ситуации?
-
Кстати ктонибуть знает какой процент людей в инете у каторых динамически меняется IP в ходе работы?
у всех пользователей America on-line
-
про AOL понятно я имел ввиду в Росии :)
-
да ты вообще не в тему
при чем тут вообще не IP?!
речь идет об юзере с кукой, а не об IP!
-
странно...
а мне казалось о сессиях...
просто тема завернула на ip мол по кукам не надежно...
-
ты не понял - это по IP как раз ненадежно.
Этак у всей моей конторы будет одна общая сессия. офигительно
и еще о том, что этот шаман считает себя самым умным и не желает слушать тех, кто говорит то, что ему не нравится.
-
RomikChef
понял :) мы друг друга не поняли
я пытался окцентировать внимание что ip у уникального пользователя может быть не уникальное в течение даже короткого времени и подвязыватся на него вобщемто глупо