Случайная ссылка без повторов - сессия пользователя - PullRequest
2 голосов
/ 09 мая 2011

У меня 7 ссылок, и мне нужно отображать одну ссылку на страницу или просмотр страницы без повторения ссылок из предыдущих просмотров.

Ссылки должны отображаться случайным образом, и должны отображаться все 7 ссылок.пользователю, если он посетит 7 страниц (по одной на страницу), если пользователь посетит более 7 страниц, цикл начнется снова.

Надеюсь, вопрос ясен.Спасибо и извините за мой английский Даниэль

Ответы [ 2 ]

3 голосов
/ 09 мая 2011

Вы должны хранить ранее посещенные ссылки в сеансе или базе данных. Вы можете просто перетасовать ссылки и выполнить итерации. Затем проверьте, посещали ли вы его раньше, и продолжайте, пока не найдете его. Если вы не можете найти (выполненная итерация), вы можете предположить, что все 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;
0 голосов
/ 09 мая 2011

Сохраняйте перемешанные ссылки в сеансе и используйте их одну за другой:

$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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...