我有问题答案quizes php表格...当用户在结束时回答问题他/她将得到结果。
我希望如果在测验中有5个问题,用户在提交1个问题后关闭浏览器或标签。我希望如果用户关闭浏览器或选项卡,或者如果在lightbox iframe中打开该页面,则关闭后,他的提交数据将根据会话ID从数据库中删除。
答案 0 :(得分:0)
您需要使用窗口在关闭之前触发的onbefore
事件。您可以获得更多详细信息:
https://developer.mozilla.org/en/DOM/window.onbeforeunload
如果您正在使用jQuery,您只需要监听该事件,然后将您的会话ID发送到接收会话ID的PHP脚本并删除您的记录。
$(window).on('beforeunload', function (e) {
// code to execute when browser is closed
$.post("delete_with_sessionID.php", { action: 'delete', sid: '<?php echo $_SESSION['ID']; ?>' });
});
答案 1 :(得分:0)
执行此操作的最佳方法是将测验的到期时间设置为5分钟或10分钟。当用户开始测验时,将当前时间保存在数据库中,然后您可以检查数据库并删除过期和未完成的测验。
您可以使用简单的php和mysql代码删除记录,或使用MySQL Scheduled Event自动化。
SQL代码:
DELETE FROM quiz WHERE time_started < (NOW() - INTERVAL 10 MINUTE) and quiz_completed != 1
MySQL预定事件:
CREATE EVENT myevent
ON SCHEDULE EVERY 10 MINUTE
DO
DELETE FROM quiz WHERE time_started < (NOW() - INTERVAL 10 MINUTE) and quiz_completed != 1
要使用MySQL Scheduled Event,您必须执行以下命令
SET GLOBAL event_scheduler = ON;