То, что я делал в прошлом, - это включил на каждую страницу вместе с jQuery (фактически, добавленным в файл jQuery) расширение метода AJAX, чтобы проверять пользовательский код, который я отправляю, когда пользователь невошел в систему. Когда это значение было замечено, оно перенаправило пользователя на страницу входа независимо от того, что происходило.
Это произошло потому, что у этого сайта было время ожидания входа в систему, поэтому пользователь мог выйти из системы, сидяна странице, а затем запрос AJAX просто не удастся.Если у вас нет тайм-аута при входе в систему, шансы увидеть эту проблему невелики.Просто игнорируйте запросы от пользователей, которые не вошли в систему.
Если вам нужна помощь в кодировании этого, начните здесь: Расширение Ajax: префильтры, конвертеры и транспорты .
На самом деле не нужно ничего сложного, например псевдокода:
- JS необходимо выполнить AJAX, поэтому JS обращается к серверу
- PHP проверяет вход в систему, еслиНужен
- Если вы не вошли в систему, отправьте обратно сообщение об отмене (я использовал конвертер для перехвата dataType «notLoggedIn». Однако это также может быть сделано с транспортом, они просто более сложные.)
- JS видит сообщение об отмене и выполняет перенаправление window.location, а не возвращает сообщение AJAX.
Если вы хотите, вы можете загрузить лайтбокс с формой входа и отправить его через AJAX в PHP, где может произойти повторный вход в систему, если вы помните, что попытка AJAX не удалась, вы можете отправить ееснова после входа в систему.Тогда пользователю даже не нужно покидать страницу для входа в систему.