微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – PHP页面刷新问题

正在进行在线测验.
每次点击“下一个问题”按钮,我都尝试了以下方法

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的解决方案.

解决方法:

以下应该是您最好的解决方案:

$RSig = md5($_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING'].print_r($_POST, true));

    if(isset($_SESSION['LastRequest']) && $_SESSION['LastRequest'] == $RSig)
    {
        $_SESSION['reqstat']='refresh';
    }
    else
    {
        $_SESSION['qnum'] = $_SESSION['qnum']+1;
        $_SESSION['reqstat']='newrequest';
        $_SESSION['LastRequest'] = $RSig;
    }

您可以使用Session:reqstat来检查应该在按钮单击时执行的操作,而不是刷新.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐