Экспорт и сделать строку действительной в течение 7 дней в базе данных MYSQL - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть следующий код, который создает случайную строку:

<form name="randform">
<input type="button" value="Create Random String" onClick="randomString();">&nbsp;
<div id="xyz"></div>
</form>



  <script language="javascript" type="text/javascript">
    function randomString() {
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
    var string_length = 8;
    var randomstringy = '';
    for (var i=0; i<string_length; i++) {
        var rnum = Math.floor(Math.random() * chars.length);
        randomstringy += chars.substring(rnum,rnum+1);
    }
    document.getElementById("xyz").innerHTML = ""+randomstringy;}

Теперь я хочу экспортировать эту строку в базу данных в MySQL и сделать ее действительной в течение 7 дней.Цель состоит в том, чтобы пользователь генерировал код, который получал бы хранилища в БД, затем пользователь пытался войти на другую страницу, используя этот код (что тогда возможно только в том случае, если он все еще действителен)

Как мне поступить, используя этот код?мне удалось экспортировать некоторые другие формы ввода на другой странице в базу данных, но это мои знания.

1 Ответ

0 голосов
/ 30 ноября 2018

AFAIK, для записей в mysql нет специальной функции TTL, однако есть Event Scheduler, для которого вы можете писать запросы для периодического запуска.Но я думаю, что это не подойдет для вас, если вы ожидаете.

Если я вы, то вот как я собираюсь это решить.

  1. Создайте отдельныйстол Session_Data.Имеют столбцы user_id, session_id, session_created_at.
  2. Столбец session_id (тип VARCHAR(512)) предназначен для хранения сгенерированного кода.
  3. Столбец session_created_at (тип TIMESTAMP), чтобы сохранить, когда этот код был сгенерирован.
  4. Когда вы публикуете эти данные формы, бэкэнд-сервис должен сохранить / обновить этот сгенерированный хэш в базе данных.

    INSERT INTO Session_Data (user_id, session_id, session_created_at) VALUES (?, ?, NOW())

  5. И всякий раз, когда пользователь запрашивает страницу, проверяйте эту таблицу для получения кода, связанного с пользователем, и проверяйте session_created_at, и текущая разница во времени больше, чем7 дней.Это вернет запись, если код был сгенерирован в течение последних 7 дней, в противном случае ничего не будет возвращено.Исходя из этого, вы можете разрешить / запретить просмотр страницы.

    SELECT * FROM Session_Data WHERE TIMESTAMPDIFF(MINUTE, session_created_at, NOW()) <= 100080 WHERE user_id = ?

Кроме того, вы также можете добавить эти два столбца в таблицу User.Но лучше хранить эту информацию в отдельной таблице.

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