导出并使字符串在mysql数据库中有效7天

izj3ouym  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(276)

下面的代码创建了一个随机字符串:

<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天内有效。目标是,用户生成一个代码,该代码将在数据库中获取存储,然后用户尝试使用该代码登录到另一个页面(只有在其仍然有效时才可能)
如何使用此代码继续执行此操作?我设法将另一个页面上的其他表单输入导出到数据库中,但这只是我的知识范围。

twh00eeo

twh00eeo1#

另外,mysql中的记录没有特定的ttl函数,但是有一个 Event Scheduler 您可以编写定期运行的查询。但我想如果你期待的话,它不适合你。
如果我是你,那我就这样来解决这个问题。
创建单独的表 Session_Data . 有列 user_id , session_id , session_created_at .
session_id (类型) VARCHAR(512) )用于存储生成的代码。
session_created_at (类型) TIMESTAMP )在生成此代码时存储。
发布此表单数据时,后端服务必须在数据库中存储/更新生成的哈希。 INSERT INTO Session_Data (user_id, session_id, session_created_at) VALUES (?, ?, NOW()) 每当用户请求页面时,检查此表以获取与该用户相关联的代码并验证 session_created_at 当前时差大于7天。如果在过去7天内生成了代码,则返回一条记录,否则将不返回任何记录。基于此,您可以允许/拒绝页面查看。 SELECT * FROM Session_Data WHERE TIMESTAMPDIFF(MINUTE, session_created_at, NOW()) <= 100080 WHERE user_id = ? 或者,您可以将这两列添加到 User 还有table。但最好把这些信息放在一个单独的表格里。

相关问题