【发布时间】:2017-04-17 08:08:31
【问题描述】:
我正在做一个在线测验。
每次单击“下一个问题”按钮时,我都尝试了以下操作:
if(isset($_POST['submit']) && isset($_POST['ans']))
{
//process answers and fetch next question
//Increment the Session variable which contains serial of next question
$_SESSION['qnum'] = $_SESSION['qnum']+1;
}
每当我单击 F5 按钮时,会话都会更新并获取新问题。
仅在单击下一个问题按钮时才应增加会话,否则不应增加。
以下是我参考一篇文章后尝试过的:
$pageWasRefreshed = isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0';
if($pageWasRefreshed)
{
//refetch the current question.
}
else
{
//refetch the current question and increment the Session Variable
}
- 这种方法在 Mozilla Firefox 中运行良好
- 在 IE 中,按钮点击和 F5 点击都被视为未刷新
- 在 Chrome 中,按钮单击和 F5 都被视为已刷新
我尝试了 StackOverflow 和 Google 上其他文章的一些其他变体,但这些变体根本不起作用包括基于 ajax 的解决方案。
【问题讨论】:
-
你可以浏览本地存储
-
您是否将所有这些都保存到数据库中?也许有更好的方法使用数据库,同时使用 SID。
-
不,这是在线考试 MCQ,在提取考试问题期间,数据库中不会保存任何内容。尝试最后一个问题后,数据将被保存。
-
谷歌“发布重定向获取”en.wikipedia.org/wiki/Post/Redirect/Get
-
@ITSagar 您是否提交到同一页面..?我认为这是你的问题。参考伊曼纽尔的解决方案。
标签: javascript php ajax session session-cookies