info session

Petit nouveau ! | 2 Messages

19 déc. 2006, 02:01

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

Mammouth du PHP | 19672 Messages

19 déc. 2006, 10:19

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 2 Messages

19 déc. 2006, 20:13

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 ) ????

ViPHP
ViPHP | 1961 Messages

19 déc. 2006, 21:28

Bonsoir,

Regarde du coté de la fonction microtime().
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein