2009-10-12 7 views
0

je donne les résultats suivants qui stocke de l'URL 10 précédente dans une session:entrées uniques dans un tableau

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; 
} 
//Insert Current URL in SESSION 
     $CurrentPage = curPageURL(); 
     if(strpos($CurrentPage, '/products/')) 
     { 
     echo "<div class=\"title\">Recently viewed products</div> 
<div id=\"recent\">"; 
     $_SESSION['pages'][] = $CurrentPage; 
     if (Count ($_SESSION['pages']) > 10) 
     Array_Shift ($_SESSION['pages']); 

Comment puis-je assurer que les entrées uniques sont stockées?

Merci, B

Répondre

1

Juste après

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

vous devez ajouter

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

Docs sont disponibles here

Cette méthode nécessite moins de traitement, car il est une fonction native. L'exécution d'un «si» sur chaque élément du tableau pourrait potentiellement être très coûteux.

+0

c'est la route que je voulais tracer - mais je reçois: Attention: array_unique() [fonction.array-unique]: L'argument devrait être un tableau dans ??? –

+0

désolé, mon mauvais. collé le mauvais code. Il est modifié maintenant, ce qui précède devrait fonctionner – Rowan

3

au lieu de $_SESSION['pages'][] = $CurrentPage essayer $_SESSION['pages'][$CurrentPage] = 1

/edit: pour conserver les éléments triés, unset premier:

unset($_SESSION['pages'][$CurrentPage]); 
$_SESSION['pages'][$CurrentPage] = 1; 
+0

Mais cela ne va pas automatiquement pousser les autres éléments du tableau vers le bas. S'ils ont visité cette page il y a 7 pages, la clé de cet article, qui est probablement ce qu'il utilise pour sortir l'historique de leurs pages, sera toujours celle d'il y a 7 pages, ne la déplaçant pas vers le haut ou réorganisant l'autre 6 pages, n'est-ce pas? – Anthony

3
if(!in_array($CurrentPage, $_SESSION['pages']) { 
    $_SESSION['pages'][] = $CurrentPage; 
} 
Questions connexes