Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сайт в 1 вкладке

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
IncOness
Отправлено: 27 Декабря, 2015 - 14:14:00
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




В онлайн игре необходимо запретить использование сайта в нескольких вкладках. Как это лучше всего реализовать?
 
 Top
lastdays
Отправлено: 27 Декабря, 2015 - 14:23:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




Нужно больше подробностей и зачем это вообще делать, если у человека раздвоение личности, путь играет в двух вкладках. Если получает какую-либо пользу с этого, нужно исправлять игровые проблемы, а не делать костыли.
 
 Top
OrmaJever Модератор
Отправлено: 27 Декабря, 2015 - 15:58:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




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

index.php


post.php
PHP:
скопировать код в буфер обмена
  1. if( !isset($_SESSION['form_hash']) || $_SESSION['form_hash'] != $_POST['hash']) {
  2.   die('Вкладка устарела');
  3. }


То есть в любом обработчике должна быть проверка на хеш, и когда пользователь открывает новую вкладку (index.php), то в сессию пишется новый хеш, и старая вкладка (на который остался старый хеш) просто не функционирует


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DelphinPRO
Отправлено: 27 Декабря, 2015 - 17:59:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




OrmaJever
а если я буду использовать два браузера, сессии же будут разные?


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
lastdays
Отправлено: 28 Декабря, 2015 - 01:53:45
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




http://habrahabr[dot]ru/post/220297/
по-моему то, что нужно
 
 Top
IncOness
Отправлено: 28 Декабря, 2015 - 15:17:29
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




lastdays пишет:
http://habrahabr[dot]ru/post/220297/
по-моему то, что нужно

Спасибо, помогли.
 
 Top
OrmaJever Модератор
Отправлено: 28 Декабря, 2015 - 15:54:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




DelphinPRO пишет:
а если я буду использовать два браузера, сессии же будут разные?

ну, дак правильно, будет работать только один, тот который последним открыли. По-моему это именно то что нужно автору
(Добавление)
lastdays пишет:
по-моему то, что нужно

это чисто джаваскрипт, его можно перекрыть через консоль, и дальше играть в несколько вкладок. Я так понимаю суть именно в слове "запретить", а это нужно делать на стороне сервера


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
TuX560
Отправлено: 28 Декабря, 2015 - 16:28:52
Post Id


Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Дек. 2015  


Помог: 3 раз(а)




OrmaJever пишет:
DelphinPRO пишет:
а если я буду использовать два браузера, сессии же будут разные?

ну, дак правильно, будет работать только один, тот который последним открыли. По-моему это именно то что нужно автору
(Добавление)
lastdays пишет:
по-моему то, что нужно

это чисто джаваскрипт, его можно перекрыть через консоль, и дальше играть в несколько вкладок. Я так понимаю суть именно в слове "запретить", а это нужно делать на стороне сервера

Меня тоже это смутило, но по поводу двух браузеров, разные сессии значит у каждой будет валидный хеш, на мой взгляд лучше хеш привязать не к сессии а к ip, хотя не утверждаю, что я прав
 
 Top
IncOness
Отправлено: 28 Декабря, 2015 - 17:09:07
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Сделал иначе, привязал хеш к юзеру в бд с проверкой хеша, юзер агента и IP. При попытке войти с другого браузера или открыть новую вкладку в этом же браузере, или попытаться войт ив этот же аккаунт с другого IP - в старой вкладке появляется надпись "сессия устарела", в новой работает сайт. Вроде бы все хорошо.
 
 Top
lastdays
Отправлено: 28 Декабря, 2015 - 19:12:24
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




Почему не session_id() ?
Другая сессия - досвидание. Я так реализовал.

Описал бы изначально задачу иначе.

Я понял, как в одном браузере ты хотел сделать запрет на открытие одной и той же страницы.

(Отредактировано автором: 28 Декабря, 2015 - 19:23:06)

 
 Top
IncOness
Отправлено: 28 Декабря, 2015 - 20:41:13
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




lastdays пишет:
Почему не session_id() ?
Другая сессия - досвидание. Я так реализовал.

Описал бы изначально задачу иначе.

Я понял, как в одном браузере ты хотел сделать запрет на открытие одной и той же страницы.

Задача - запретить пользователю запускать игру в нескольких вкладках в любых браузерах. Т.е. 1 аккаунт = 1 вкладка.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB