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 :: Одноразовый пароль

 PHP.SU

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


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

> Без описания
drboris32
Отправлено: 16 Марта, 2015 - 10:30:29
Post Id


Новичок


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


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




Уважаемые форумчане!
Прошу подсказать, как я могу реализовать следующую фичу:
Доступ на сайт осуществляется посредством PHP+мускул. Я хочу, чтобы пользователь удалялся из базы автоматически через час после входа на сайт. Так же необходимо рвать сессию через час после входа пользователя. Это реализуемо?
 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Марта, 2015 - 11:21:36
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Сессию можно хранить в БД: http://php.net/manual/ru/functio...save-handler.php

Дальше уже проще, да?
 
 Top
drboris32
Отправлено: 16 Марта, 2015 - 11:29:24
Post Id


Новичок


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


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




DeepVarvar пишет:
Сессию можно хранить в БД: http://php.net/manual/ru/functio...save-handler.php

Дальше уже проще, да?

Пока еще нет))
Как реализовать функцию автоматического удаления данных о пользователе из базы сразу после входа пользователя на сайт?
 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Марта, 2015 - 11:43:56
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Примерно так:
CODE (SQL):
скопировать код в буфер обмена
  1. DELETE FROM tbl WHERE access_datetime >= (NOW() - INTERVAL 1 HOUR)
 
 Top
exlant
Отправлено: 16 Марта, 2015 - 11:45:03
Post Id



Посетитель


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


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




Цитата:
Как реализовать функцию автоматического удаления данных о пользователе из базы сразу после входа пользователя на сайт?


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

(Отредактировано автором: 16 Марта, 2015 - 11:46:25)

 
 Top
Мелкий Супермодератор
Отправлено: 16 Марта, 2015 - 11:51:13
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Зачем session save handler вообще трогать для такой задачи?

При авторизации смотрите время действия этого пароля (timestamp default NULL):
если null - сохраняете текущее датавремя в это поле и пропускаете
иначе - сравниваете с текущим. Если час ещё не прошёл - пускаете, иначе отлуп, пароль устарел.

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

Всё, с протухшим паролем уже не войти. Остался только сбор мусора: с любой удобной периодичностью кроном удаляете просроченные записи из базы.

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


-----
PostgreSQL DBA
 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Марта, 2015 - 12:02:12
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Мелкий пишет:
сохраняете в сессию датавремя
У него в задаче - час устаревания, а сессия может сдохнуть и за 30 минут (неизвестно, есть ли у него доступ к настройкам). Если только, не отпинывать раньше чем через час, но это уже не по условиям задачи.
 
 Top
drboris32
Отправлено: 16 Марта, 2015 - 12:08:25
Post Id


Новичок


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


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




DeepVarvar пишет:
Мелкий пишет:
сохраняете в сессию датавремя
У него в задаче - час устаревания, а сессия может сдохнуть и за 30 минут (неизвестно, есть ли у него доступ к настройкам). Если только, не отпинывать раньше чем через час, но это уже не по условиям задачи.

Вот теперь все встало на свои места.
Огромное спасибо за помощь всем откликнувшимся!
 
 Top
Мелкий Супермодератор
Отправлено: 16 Марта, 2015 - 12:08:52
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




DeepVarvar пишет:
У него в задаче - час устаревания, а сессия может сдохнуть и за 30 минут

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


-----
PostgreSQL DBA
 
 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