下面的代码创建了一个随机字符串:
<form name="randform">
<input type="button" value="Create Random String" onClick="randomString();">
<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条答案
按热度按时间p8h8hvxi1#
另外,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。但最好把这些信息放在一个单独的表格里。