Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> одна страничка на 1 браузер 
V
    Опции темы
seth
Дата 6.5.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Необходимо сделать так чтобы для 1 браузера можно было открыть лишь одну страничку (т.е. нельзя было в другом окне открыть ту же самую). Есть ли варианты решения проблемы?


--------------------
PM MAIL   Вверх
almagnit
Дата 6.5.2008, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нет так сделать не получиться, JavaScript выполняется во время загрузки страницы, а для 

решения такой задачи необходима постоянная работа в фоновом режиме.
PM MAIL ICQ   Вверх
bars80080
Дата 6.5.2008, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



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

фоновый режим теоретически можно сделать с помощью ajax, но оно скорее всего муторно, да и трафик есть будет постоянно
PM MAIL WWW   Вверх
ksnk
Дата 6.5.2008, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



seth, Установить куку и по таймауту поставить запрос какой-нибудь ерунды ajax'ом с сервера раз в 10 секунд. Если ерунда запрашивалась кем-то с такой кукой менее чем 10 секунд назад - сервер на запрос странички посылает клиента подальше... Итого - вторая страничка не будет открыта тем-же клиентом с включенными куками и разрешенным JavaScript.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
almagnit
Дата 6.5.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Однако Аякс не удержит настойчивого пользователя и при желании можно будет открыть нужное 

кол-во копий.

Это сообщение отредактировал(а) almagnit - 6.5.2008, 13:12
PM MAIL ICQ   Вверх
Itsys
Дата 6.5.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(almagnit @  6.5.2008,  13:07 Найти цитируемый пост)
Однако Аякс не удержит настойчивого пользователя и при желании можно будет открыть нужное кол-во копий

Можно какое-нибудь уникальное для каждого окна браузера значение (ну, например, сумму секунд для текущей даты-времени в момент загрузки станицы) - а дальше Ajax-ом проверять возможность работать дальше для этого значения.

Но этот вариант будет работать только в случае включенных куков.
PM MAIL WWW Skype   Вверх
almagnit
Дата 6.5.2008, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Itsys @  6.5.2008,  13:26 Найти цитируемый пост)
Но этот вариант будет работать только в случае включенных куков


Вот именно, поэтому для решения подобных задач может стоит просто пересмотреть алгоритм 

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

В каких целях Вы преследуете использование этого способа ?
PM MAIL ICQ   Вверх
seth
Дата 6.5.2008, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



конкретизирую проблему - есть веб-приложение с багатым пользовательским интерфейсом (RIA на HTML). Все приложение умещается на одной страничке. (но там могут открыватся разные окна так что даже удобнее намного)
и необходимо поддерживать обновления с сервера - т.е. если другой пользователь чето поменял то и в твоей вкладке должно изменится тоже. Для этого сделан пуллинг через ajax которые опрашивает обновления - но соответственно если открыть несколько вкладок то для аякс запросов используется одна и та же сессия - и следовательно обновления получает только 1 вкладка а для второй обновление не генерируется т.к. сервер думает что эта та же самая вкладка - вот собственно зачем необходимо какое то разделение или ограничение чтобы можно было открыть лишь один экземпляр приложения
я уже думаю смотреть в сторону апплетов или флеша (но на флеше сложно что то придумать - т.к. не разбираюсь особо)



--------------------
PM MAIL   Вверх
ksnk
Дата 6.5.2008, 23:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Цитата(seth @  6.5.2008,  20:01 Найти цитируемый пост)
я уже думаю смотреть в сторону апплетов или флеша

И что? В аплетах или флеше есть возможнось запускать только один экземпляр апплета на броузер?
Вариант №1 - запретить куки. Тогда идентификатор сессии будет передаваться в строке адреса и открытие нового окна (без дублирования уже открытой строки адреса) приведет к появлению новой сесии.
Вариант №2 - хранить идентификатор сесcии не в куке, а в переменной JavaScript. При этом ввести новый запрос - "перегенерировать идентификатор сессии", который запускать автоматически при открытии страницы. Все ajax-запросы должны будут дополняться параметром ?PHPSESSID=?? При этом даже чистить сессионную куку не нужно, новая сессия "победит"...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
seth
Дата 7.5.2008, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(ksnk @ 6.5.2008,  23:40)
Цитата(seth @  6.5.2008,  20:01 Найти цитируемый пост)
я уже думаю смотреть в сторону апплетов или флеша

И что? В аплетах или флеше есть возможнось запускать только один экземпляр апплета на броузер?
Вариант №1 - запретить куки. Тогда идентификатор сессии будет передаваться в строке адреса и открытие нового окна (без дублирования уже открытой строки адреса) приведет к появлению новой сесии.
Вариант №2 - хранить идентификатор сесcии не в куке, а в переменной JavaScript. При этом ввести новый запрос - "перегенерировать идентификатор сессии", который запускать автоматически при открытии страницы. Все ajax-запросы должны будут дополняться параметром ?PHPSESSID=?? При этом даже чистить сессионную куку не нужно, новая сессия "победит"...

апплет можно подписать и уже использовать "стандартный механизм" проверки ;) (с использованием сокетсервера)
Насчет варианта 1 - как отследить что пользователь открыл новую вкладку?
Насчет варианта 2 - тоже самое - как отсделить - в этом жеж сама суть вопроса ;)


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


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Цитата(seth @  7.5.2008,  10:35 Найти цитируемый пост)
как отследить что пользователь открыл новую вкладку

никак. При таком решении это не обязательно ;-) Каждое окно получает новую сессию


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
seth
Дата 7.5.2008, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(ksnk @ 7.5.2008,  10:42)
Цитата(seth @  7.5.2008,  10:35 Найти цитируемый пост)
как отследить что пользователь открыл новую вкладку

никак. При таком решении это не обязательно ;-) Каждое окно получает новую сессию

большинство браузеров если нажать открыть новую вкладку - автоматически туда все копируют (и адрес в том числе) - вот что меня и беспокоит ;) (например ИЕ 6)
и то сомнительно что начнется новая сессия - я сейчас автоматически добавляю айди сессии - даже если куки включены - т.к. есть одна проблемная конфигурация в которой все плохо ;)

Это сообщение отредактировал(а) seth - 7.5.2008, 14:29


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


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

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



seth конечно немного не в тему, но если это 
есть веб-приложение с багатым пользовательским интерфейсом (RIA на HTML).
и специфика корпоративная заточенная под msie и винду
то почему бы не попробовать использовать hta технологию
позволяет создать окно без тулбаров и запуск ЕДИНСТВЕННОГО экземпляра программы

и собственно встречный вопрос в чем собственно проблема то может заключаться при нескольких открытых табах
пользователь ведь однозначно идентифицируется (ip, login+password) в системе со своими правами
ну откроет он несколько табов, в них будет равнозначная информация, изменить в одном табе, обновится и в другом


так что думаю что проблема немного надуманная по сути, имхо





--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

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


Опытный
**


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

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



приложение не только под винду ;)

http://forum.vingrad.ru/forum/topic-209936.html#
тут я уже писал что необходимо
еще раз акцентирую внимание на том что обновление должно происходить _автоматически_ между двумя вкладками (равно как и между двумя браузерами) 
поэтому непонятно как необходимо определить передавал ты обновление этому пользователю или нет (но т.к. 2 вкладки работают под одной сессией то это сложно ;) )

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


--------------------
PM MAIL   Вверх
dstorm81
Дата 8.5.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

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



seth
том что обновление должно происходить _автоматически_ между двумя вкладками (равно как и между двумя браузерами) 

1 пользователь регистрируется в системе (заводится сессия на сего, или "дело", куку в браузер ему)
2 пользователь откывает страницу, вносит данные (здесь включается ajax забирает все и уносит в базу)
3 открывает такую же страницу - ему опять таки же все данные передаются из базы нашим ajax
4 если он пытается снова зарегится, то на сервер проверяется в системе он или нет
то есть запустить другую сессию он не сможет, если конечно сессия не будет передаваться в урле

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

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

посмотри на ajax чаты все идентично по сути...
и никто не жалуется

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

Это сообщение отредактировал(а) dstorm81 - 8.5.2008, 14:48


--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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