无重复的随机链接 - 用户会话

时间:2011-05-09 12:42:27

标签: php session random

我有7个链接,我需要在每个页面或页面视图中显示一个链接,而不重复以前视图中的链接。

链接需要以随机方式显示,并且如果用户访问7页(每页一页),则必须向用户显示所有7个链接,如果用户访问超过7页,则cicle将再次开始

我希望问题很清楚。 谢谢,抱歉我的英语 丹尼尔

2 个答案:

答案 0 :(得分:3)

您应该将以前访问过的链接存储在会话或数据库中。你可以简单地改变链接,然后迭代。然后检查它是否曾被访问过 - 并继续前进,直到找到一个。如果你找不到(完成迭代),你可以假设已经访问了所有7个,你可以重置会话/数据库。

小代码示例(注意:伪代码)。

$aLinks = array(1, 2, .., ..);
shuffle($aLinks);

$sLinkToShow = null;
foreach($aLinks as $aLink) {
    if (seenBefore()) continue;
    $sLinkToShow = $aLink['link'];
}

if (is_null($sLinktoShow)) { 
    // seen all
}
echo $sLinkToShow;

答案 1 :(得分:0)

将随机链接存储在会话中并逐个使用:

$links = array('a', 'b', 'c', …);

if (empty($_SESSION['links'])) {
    // first time visit, populate random order in session
    $_SESSION['links'] = array_keys($links);
    shuffle($_SESSION['links']);
}

// pop first link
$link = array_shift($_SESSION['links']);

// cycle array; or don't, to create a different order next time
$_SESSION['links'][] = $link;

// output link
echo $links[$link];