Page 1 sur 1

info session

Posté : 19 déc. 2006, 02:01
par jsar27
Bonjours,

Je voudrais savoir si cela est possible de recuperer toutes les infos spécifique s a un utilisateur lors de sa session :

Des que l'utilisateur rentre dans sa session, est-ce possible de recuperer, par exemple, son heure de connexion, quelles pages il visite etc. , et comment recuperer toutes ces informations (informations liées a une session )

Merci d'avance

Posté : 19 déc. 2006, 10:19
par Cyrano
Salut,
bien sûr que tu peux, précisément avec des variables de session :
-1- Lors de la connexion, tu enregistres l'heure dans une variable de session;
-2- Lors de l'accès à une page, tu enregistres l'URI visitée dans une variable aussi, et cette variable doit être un tableau;
Exemple :
<?php
session_start();
/* Si la variable n'existe pas, on enregistre l'heure de l'entrée */
if(!isset($_SESSION['entree']))
{
    $_SESSION['entree'] = date();
}
/* On enregistre la page visitée */
if(!isset($_SESSION['parcours']))
{
    $_SESSION['parcours'] = array();
}
/* Ajout de la page dans l'historique de navigation */
$_SESSION['parcours'][] = $_SERVER['REQUEST_URI'];
//... suite du code de la page ...
?>
Et à partir de là, tu pourras en tous temps savoir quand est arrivé ton internaute, les pages visitées et dans quel ordre.

Reste éventuellement à savoir si tu veux conserver ces informations de façon permanente ou pas dans une base de données auquel cas tu peux ajouter un code qui va mettre à jour la table à chaque entrée. Il te faut alors une table comportant un certain nombre de colonnes :
- id de session (CHAR(64));
- heure début (DATETIME);
- pages visitées(TEXT);

Ça pourrait par exemple ressembler à ceci :
<?php
session_start();
/* Si la variable n'existe pas, on enregistre l'heure de l'entrée */
if(!isset($_SESSION['entree']))
{
    $_SESSION['entree'] = date("Y-m-d H:i:s"); // On utilisera un format adapté à MySQL
    /* Code enregistrer l'entrée de l'internaute */
    $sql = "INSERT INTO `parcours_visiteurs` (`sessid`, `heuredebut`)".
           "'". $_SESSION['SID'] ."', '". $_SESSION['entree'] ."'";
    // suite du code pour accéder à MySQL ...
}
/* On enregistre la page visitée */
if(!isset($_SESSION['parcours']))
{
    $_SESSION['parcours'] = array();
}
/* Ajout de la page dans l'historique de navigation */
$_SESSION['parcours'][] = $_SERVER['REQUEST_URI'];
/* Mise à jour dans la base */
$sql = "UPDATE `parcours_visiteurs` ".
       "SET `inineraire` = '". serialize($_SESSION['parcours']) ."' ".
       "WHERE `sessid` = '". $_SESSION['SID'] ."'"
// suite du code pour accéder à MySQL ...

//... suite du code de la page ...
?>
C'est succinct, mais par exemple, rien ne t'empêche d'avoir une colonne de plus dans cette table avec par exemple en clé étrangère l'identifiant du membre, ça te permettra de retracer l'historique des visites de cet internaute pour établir des statistiques, la fréquence de ses visites, les pages qu'il visite le plus souvent, celles qu'il ne regarde jamais, on pourrait même pousser plus loin avec d'autres données pour savoir combien il passe de temps sur chaque page, mais là, cette dernière info serait un peu faussé par la page de sortie : il est toujours problématique de savoir quand un internaute quite un site en fermant son navigateur sans se déconnecter.

Posté : 19 déc. 2006, 20:13
par jsar27
hmmmm , deja merci pour la reponse...

Si je veut pousser plus loin, par exemple comment savoir combien de tps il reste sur une page ( en fonction du click que l'utilisateur fait pour arriver sur la plage, et des qu'il click sur une autre page ) ????

Posté : 19 déc. 2006, 21:28
par Ajoloca
Bonsoir,

Regarde du coté de la fonction microtime().