如何将当前url ID保存到会话中,然后在查看下一次提交时进行更新


How to save current url ID to a session and then update it upon viewing the next submission

刷新时http://mydomain.com,它将生成一个随机ID显示在页面上。

例如,http://mydomain.com第一次生成54,并且在重新加载时生成112等

我想将每个随机生成的ID保存到一个会话中,这样每次重新加载时,我都可以返回到最后一个。例如,第一次将54保存到会话时,以及http://mydomain.com重新加载并生成112,我可以链接回54。

我不能使用HTTP_REFERER或REQUEST_URI,所以我尝试使用自己的版本,但只保存了一次。我不知道如何在查看下一个ID时更新它。

    if(empty($_SESSION['lastURL'])) {
        $_SESSION['lastURL'] = $submissionId; // $submissionId is randomly generated
            } else {
        echo $_SESSION['lastURL'];
    }

是我当前的代码。我应该在哪里更新会话以存储下一个ID?

事实证明,它一直不成功的原因是它一直在触发一个额外的ajax请求,所以我每次都会得到一个随机生成的id。

我(在朋友的帮助下)通过使用以下代码找到了答案,并在每次随机触发之前进行设置:

    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest'){
    // Not an ajax request - just a normal page load
    $_SESSION['lastid'] = $_SESSION['currentid'];
    $_SESSION['currentid'] = $submissionId;
}

您只设置了一次$_SESSION['lastURL'],因为它只设置了empty()一次。每当您生成一个新的ID(从而使其成为新的"旧"ID)时,您都需要更新此值。

记住在存储和读取会话的文件的顶部有session_start(),这样您就可以完全访问它们

如果你想保存所有ID,你需要把它们放在一个数组中:

if (!isset($_SESSION['url_list']))
{
  $_SESSION['url_list'] = array();
}
$_SESSION['url_list'][] = $submissionId;
// see all entries
var_dump($_SESSION['url_list']);

现在,您有了自会话开始以来所有ID的历史记录。