Как запретить открытие второй вкладки?
Самый надёжный вариант - позволять открывать вторую вкладку, при этом отключать все предыдущие. Например для каждой вкладки генерировать уникальный id (при запросе показа страницы) и позволять серверу работать только с последним окном.  Примерно так работает whatsapp web.
Это может работать, если вы можете идентифицировать пользователя и ваша страница активно общается с сервером по AJAX.
При открытии пользователю назначается токен, который сверяет сервер при каждом запросе.
При открытии второй вкладки будет сгенерирован другой токен, так что запросы с первой станут получать отлуп.

Иначе определить, закрыл ли пользователь предыдущую страницу перед открытием новой, вы на сервере никак не сможете.