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

时间:2011-06-22 21:58:21

标签: php session http-referer

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

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

我想将每个随机生成的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;
}

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

请记住在存储和阅读会话的文件顶部放置session_start(),以便您可以完全访问这些会话

答案 2 :(得分:1)

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

if (!isset($_SESSION['url_list']))
{
  $_SESSION['url_list'] = array();
}

$_SESSION['url_list'][] = $submissionId;

// see all entries
var_dump($_SESSION['url_list']);

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