шаблон "наблюдатель" php для входа пользователя, когда сессия испытывает таймаут

Вам нужно использовать ngfor для итерации списка элементов на основе количества кликов,

Вам нужно использовать массив для переноса значения модели ng в компонент из html. [ 112]

Проверьте этот рабочий код. В зависимости от ваших требований могут потребоваться некоторые изменения

https://stackblitz.com/edit/angular-jzyfpk [114 ]

6
задан T.Rob 16 December 2011 в 02:40
поделиться

5 ответов

Возьмите самый простой случай сначала. Предположим, что у Вас есть 1 пользователь в Вашей системе, и Вы хотите их сессию к тайм-ауту, и Вы хотите точную отчетность их состояния. Пользователь не был к странице за 12 минут, и Ваш тайм-аут сессии установлен на 10 минут. Одна из двух вещей произойдет. Или они посетят снова в скором времени, или они не будут. Если они не посещают снова, как система будет когда-либо выполнять код для обновления их состояния тайм-аута? Единственный путь* состоит в том, чтобы иметь отдельного новичка процесса функция обновления статуса для всех пользователей, которые в настоящее время находятся в состоянии "на сессии".

Каждый раз пользователь поражает Ваш сайт, обновите переменную в базе данных, которая связывает их сессию с прошлым разом, к которому получают доступ. Затем создайте задание крона, которое работает каждую минуту. Это вызывает простую функцию для проверки состояний сессии. Любые сессии, более старые, чем период тайм-аута, установлены на "приведенное к таймауту" состояние. (Необходимо также очистить таблицу после того, как приведенные к таймауту сессии находились некоторое время). Если Вы когда-нибудь хотите отчет о числе зарегистрированных людей, запрос для всех записей, которые имеют на прошлый раз, к которому получают доступ, позже, чем интервал тайм-аута запускается.

"*" существуют другие пути, но в целях простого веб-приложения, это не действительно необходимо. Если Вы имеете что-то более сложное, чем простое веб-приложение, обновляете Ваш вопрос отразить определенную потребность.

2
ответ дан 17 December 2019 в 04:53
поделиться

Каждый раз, когда пользователь поражает страницу, отметьте то время в базе данных, назовите этот столбец LastAccessed. Когда пользователь нажимает на часть Выхода из системы Вашего сайта, можно установить это значение в NULL. При записи запроса для нахождения списка пользователей, которые в настоящее время зарегистрированы сделайте следующее:

SELECT *  FROM Users WHERE LoggedIn=1 AND LastAccess > DATEADD(Minute,-20.GETDATE())

Который возвратил бы пользователей, у которых все еще есть активная сессия. Простите SQL, который, вероятно, не работает с MySQL/PHP, но это должно дать Вам общее представление.

2
ответ дан 17 December 2019 в 04:53
поделиться

Почему Вы хотите сделать это? Общий подход должен проверить каждый запрос, отправленный пользователем, если тайм-аут истек. Конечно, это означает, что состояние в Вашем дб не актуально, потому что пользователя все еще показывают, как вошел в систему, даже при том, что тайм-аут был достигнут.

Но практически который обычно не имеет значения.

1
ответ дан 17 December 2019 в 04:53
поделиться

Ужасный, но возможно осуществимое предложение:

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

0
ответ дан 17 December 2019 в 04:53
поделиться

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

Для некоторых примеров при создании пользовательского обработчика сессий видят http://www.daniweb.com/code/snippet43.html и читают документ PHP http://ca.php.net/manual/en/function.session-set-save-handler.php

0
ответ дан 17 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: