IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] comment créer un historique de navigation à l'aide des sessions ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut comment créer un historique de navigation à l'aide des sessions ?
    Bonjour,

    Tout d'abord je précise que je poste là et pas dans sécurité, car même si ça parle des sessions ça à rien à voir avec la sécurisation.

    Cela étant dit et comme le nom du sujet l'indique, je souhaite permettre à mes visiteurs identifiés d'avoir à disposition un historique de navigation reprenant les 10 dernières pages vues.

    Pour ce qui est d'enregistrer les urls et les noms de page, malgré l'url-rewriting, je sais faire.
    Par contre je ne vois pas comment placer 10 pages dans l'historique.
    A l'instant où j'écris ça je me dis qu'il faudrait sans doute utiliser un tableau.
    Malgré tout je ne vois pas trop comment placer dans le tableau de session (si tableau il doit y avoir) une page s'il n'y en a pas, deux s'il y en a une, trois s'il y en a 4 etc... Puis arriver à 10 remplacer la première par la 11 eme, la seconde par la 12eme etc...

    Pourriez-vous m'éclaircir la voie ?
    C'est pas parce que j'ai tort que vous avez raison.

  2. #2
    Membre averti Avatar de spilliaert
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 307
    Points
    307
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(count($_SESSION['historique'])<10)
     
           $_SESSION['historique'][]=$url_page;
    else{
           unset($_SESSION['historique']);
           $_SESSION['historique'][]=$url_page;
    }
    voilà, c'est peut-être pas le plus "propre", mais je pense que ça marche(j'ai pas testé)...

    @+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Ma foi ça m'a l'air aussi simple qu'efficace, merci Spilliaert !

    Bon forcément comme ça peut pas fonctionner du premier coup, j'ai un petit souci pour lire le tableau.

    Mon code donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if(count($_SESSION['historique'])<10)
     
           $_SESSION['historique'][]=$retour;
    else{
           unset($_SESSION['historique']);
           $_SESSION['historique'][]=$retour;
    }
    for($i=0;$i<sizeof($_SESSION['historique'][]);$i++)
     
        {
        echo $_SESSION['historique'][$i].'<br>'; 
        }
    J'ai donc rajouter une boucle for pour lire les 10 éléments du tableau.
    Mais cela n'en affichait qu'un. Alors j'ai rajouté [] dans le sizeof, après $_SESSION['historique'], comme vous pouvez voir dans l'exemple.
    Maintenant j'obtiens ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Fatal error: Cannot use [] for reading 
    in /home.2/site/scripts/liens-inscription.php
     on line 53
    Personnellement, la poésie du message me touche, mais je crains que mes visiteurs ne sachent en apprécier la finesse.

    Comment éliminer ce message et accessoirement afficher les 10 dernières pages correctement ?
    C'est pas parce que j'ai tort que vous avez raison.

  4. #4
    Membre averti Avatar de spilliaert
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 307
    Points
    307
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $_SESSION['historique'][]=$url_page;
    for($i=(count($_SESSION['historique'])-11);$i<(count($_SESSION['historique'])-1);$i++)
     
        {
        echo $_SESSION['historique'][$i].'<br>'; 
        }

  5. #5
    Membre averti Avatar de spilliaert
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 307
    Points
    307
    Par défaut
    le seul problème, c'est que ce code garde tout l'historique et qu'il n'en affiche que les 10 derniers...mais bon, ça peut t'être utile si tu veux, à un moment afficher tout l'historique...
    Sinon, si ça te dérange vraiment, pour des raisons de performance, il faudrait trouver un algo qui refait un nouveau tableau à chaque ajout .
    ou un truc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for($i=0;$i<(count($_SESSION['historique'])-11);$i++)
         unset($_SESSION['historique'][$i]);
    Mais c'est bon comme ça, non?


  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Mouif forcément, ça pouvait pas être si simple

    En plus du problème que tu soulèves (que en ait quand même hein parce que c'est pour un forum où les gens, ont le sait, voit beaucoup de pages et que ça va bouffer de la mémoire), il y en a au moins deux autres.

    1) Je comprend pas que s'il n'y a aucune variable de session, l'espace utilisé par la div d'affichage soit le même que s'il y en a 10. Normalement elle devrait grandir au coup par coup et être null si il n'y a aucune variable (elle est pleine de <br> mais pourtant ceux-ci sont dans la boucle, donc ils ne devraient s'afficher qu'au besoin.)
    2) Arrivé à 10, le 1er n'est pas remplacé par le 11eme mais tout est effacé. C'est le else qui efface tout au lieu de remplacer le 1 par le 11 je crois.

    Bon voyons ça maintenant.
    C'est pas parce que j'ai tort que vous avez raison.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer un historique de navigation à partir d'une listview
    Par Rohan21 dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 08/09/2014, 15h17
  2. Réponses: 6
    Dernier message: 18/07/2014, 13h21
  3. Réponses: 1
    Dernier message: 18/02/2007, 11h07
  4. créer une barre de navigation déroulante aide
    Par max45 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 28/11/2005, 20h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo