Я хотел бы избежать возможности открыть два окна приложений (или вкладки). Это, если мое приложение (LAMP + Javascript) установлено на http://www.domain.com, и пользователь просматривает страницу http://www.domain.com/user/, он не может открыть другое окно, например http://www.domain.com/system/ . Если он открывает другое окно, приложение должно показать сообщение об ошибке.
Это возможно?
Для любопытных людей : мне нужно это поведение, потому что мое приложение использует некоторые данные сеанса для определения последовательности действий. Если пользователь открывает новое окно в одном браузере, обычно все правильно, но если он начинает новую последовательность, предыдущая (в другом окне) будет потеряна.
Хотя правильно, что все остальные сказали здесь, что вы не можете помешать кому-то дважды открывать ваш сайт, может возникнуть обходное решение для вас. Обратите внимание, что это не 100% -ное решение и потребует от вас разработки кода на основе этого.
Насколько я понимаю, у вас есть следующие проблемы:
Однако для этого вы можете использовать LSO – Local Shared Objects . Это флеш-файлы cookie, похожие на данные, хранящиеся на стороне клиента. И ОНИ – СОВЕРШЕННО-БРАУЗЕР И СОВЕРШЕНСТВОВАННЫЕ СОВМЕСТИМЫ. Вы можете найти красивую библиотеку под названием EVERCOOKIE для использования здесь .
Установив такой файл cookie, вы сможете отслеживать пользователя, даже если он откроет новое окно или даже если он откроет вашу страницу в другом браузере, поскольку браузеры используют одну и ту же установку Flash и т. Д.
Обратите внимание, что это не помешает кому-либо открыть два окна напрямую, но это позволит вам отправить его в одно и то же состояние последовательности, например, в другом окне.
Вы также должны знать, что это не 100% -ное решение. Всегда будет какой-то трюк, чтобы обойти это, хотя я думаю, что обычные пользователи не смогут его получить …
Вы не можете запретить кому-либо открывать ваш сайт дважды.
Вы могли бы использовать новый ключ сеанса для каждой страницы, но это может немного похудеть …
Как уже упоминалось выше, вы не можете запретить кому-либо открывать ваш сайт дважды. Однако, как я вижу, ваша проблема заключается в том, чтобы убедиться, что каждый сеанс браузера уникален. Существует много подходов к достижению этого, можно было бы создать случайное число клиентом и отправить его через ajax на бэкэнд, который будет использоваться вместо идентификатора сеанса, у вас могут быть некоторые проблемы с сохранением, но все это легко снасти.
Единственный способ, который я могу придумать, – это скрыть / удалить контент, если пользователь зарегистрирован в другом месте
Таким образом, вы должны: a) потребовать от пользователя входа в систему … и b) записи при входе пользователя в систему … и c) записи, когда пользователь вышел из системы
Есть еще проблемы с этим методом – когда вы решаете, когда пользователь закрыл браузер и должен быть удален из списка «вошел в систему» …
Короче говоря, вы не можете надежно остановить это ….
Я бы сделал это, используя сеансы на стороне сервера (т. Е. Php), и использовал события load и window.unload для установки и уничтожения сеансов.
Если сеанс уже создан, то любое окно, которое открывается после этого, должно проверять значение сеанса и принудительно закрыть сообщение об ошибке.