Скрипт недавно просмотренных страниц - PullRequest
1 голос
/ 08 октября 2009

У меня есть скрипт, который показывает текущий URL:

<? function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}

       $CurrentPage = curPageURL();
       $_session['pages']=$CurrentPage; 
       print_r($_session['pages']);

     ?>

Я не могу понять, как заставить отображать последние 10 просмотренных страниц, есть идеи?

Спасибо, B.

Ответы [ 4 ]

2 голосов
/ 08 октября 2009

Вы постоянно переопределяете $ _SESSION ['pages']. Создайте массив и добавьте URL-адреса в этот массив:

$_SESSION['pages'][] = $CurrentPage;

, затем проверьте, есть ли в массиве более 10 элементов, и удалите первый элемент, если это так:

if ( Count ( $_SESSION['pages'] ) > 10 )
  Array_Shift ( $_SESSION['pages'] );

затем отобразите URL

0 голосов
/ 08 октября 2009

Я думаю, что единственная причина, по которой скрипт знает последнюю 1 посещенную страницу, заключается в том, что адрес ссылки находится в фактическом заголовке HTTP.

Если вы хотите показать последние 10 страниц, посещенных на вашем сайте специально, вы можете сделать это с помощью переменной сеанса. Что-то вроде:

//Knock the oldest page off when array count gets to 11:
if(array_count($_SESSION["pagehistory"]) > 10) {
    array_shift($_SESSION["pagehistory"]);
}

//Print the list of pages:
if($_SESSION["pagehistory"]) {
   echo "<h2>Page History</h2>";
   echo "<ul>";
   foreach($_SESSION["pagehistory"] as $page) {
      echo "<li>$page</li>";
   }
   echo "</ul>";
}

//Add the current page to the recent list:
$_SESSION["pagehistory"][] = $_SERVER["HTTP_REFERER"];
0 голосов
/ 08 октября 2009

Вам нужно превратить его в массив:

if (empty($_SESSION['pages']))
    $_SESSION['pages'] = array();

$_SESSION['pages'][] = curPageURL();

$_SESSION['pages'] = array_slice($_SESSION['pages'], -10);
0 голосов
/ 08 октября 2009

Похоже, вы просто присваиваете / заменяете значение в сеансе на $_session['pages']=$CurrentPage;. Что вы должны сделать, это поместить туда массив.

Вот моя логика:

RecentPages()
{
    if (count of array > 10)
         Remove Top Item from Array
    Push Current Page to Array
    Print Array
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...