Bonjour a tous,,
J'ai écris un code qui permet de stocker dans ma BDD le temps de connexion, entre la connexion a une page par un membre (espace identification) et la deconnexion, via session_destroy();
Mais, j'ai plusieurs soucis :
- comment afficher régulièrement le temps de connexion instantané, sachant que le temps de connexion réel ne s'affiche uniquement qu'une fois que la personne se reconnecte la prochaine fois.
- comment pouvoir déclencher session_destroy(); meme si le membre visite une autre page ou clique sur la croix qui ferme l'onglet d'un navigateur ?
Merci pour votre aide, voici mon code :
La personne se connecte avec ses bons identifiants et cela déclenche le code php suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
$req = mysql_query("SELECT * FROM `table_membre ` where ......... ");
$data = mysql_fetch_assoc($req);
$MB_idMEMBRE=$data['idMEMBRE'];
//......
//......
$modif=mysql_query("UPDATE table_membre SET a_dateconx='".strtotime(date("Y-m-d H:i:s"))."' where idMEMBRE='$MB_idMEMBRE'");
$MB_dateconx=$data['a_dateconx'];
$date_compare = strtotime(date("Y-m-d"));
$date_con = strtotime(date("Y-m-d H:i:s"));
$res = mysql_query("SELECT * FROM `table_journal ` where idMEMBRE='$MB_idMEMBRE' and date='$date_compare' and connexion<>'' and deconnexion=''");
$nbres=mysql_num_rows($res);
if ($nbres=="0"){$modif=mysql_query("INSERT INTO table_journal (idMEMBRE, date, connexion,ip) VALUES ('$MB_idMEMBRE', '$date_compare', '$date_con', '$ip')");}
// redirection vers la page de formation |
une fois sur la page de formation, et après le temps qu'elle souhaitera elle se déconnecte en cliquant sur un lien :
accueil.php?action=logout&utlog='.$MB_idMEMBRE.'&natform='.$niv.'
et cela déclenche ce code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
<?php
header('Content-Type: text/html; charset=UTF-8');
if (($_GET['action'] == 'logout'))
{
$utlog=$_GET['utlog'];
$natform=$_GET['natform'];
$date_deconx = strtotime(date("Y-m-d H:i:s"));
$res = mysql_query("SELECT * FROM `table_journal ` where idMEMBRE='$utlog' order by idJ desc limit 1");
while($cl = mysql_fetch_array($res, MYSQL_ASSOC))
{
$conex=$cl['connexion'];
$solde_temps = $date_deconx - $conex;
$idj=$cl['idJ'];
$modif=mysql_query("UPDATE table_journal SET `deconnexion` = '$date_deconx',`solde_temps`='$solde_temps' where idJ='$idj'");
$result_sum= mysql_query("SELECT SUM(solde_temps) AS cout FROM `table_journal ` where idMEMBRE='$utlog' and natform='$natform'");
$solde_temps = mysql_result($result_sum,0);
$modif=mysql_query("UPDATE table_res SET `MBsoldetemps`='$solde_temps' where idMEMBRE='$utlog' and natform='$natform'");
}
$_SESSION = array();
session_destroy();
header('Location: '.$base_site_err); // retour vers page d'identification
} |
Mais il n'est au courant du temps passé que si il se reconnecte puis se reconnecte, donc c'est un problème pou celui qui a besoin de connaitre en temps réel son temps de connexion.
Enfin, il faudrait que je puisse suspendre son temps de connexion si il change de page, voir déclencher un autre temps si il visite une page qui réclame aussi d'enregistrer son temps de connexion a la nouvelle page.
Pour information, je suis en train de créer un site de formation en e-learning multi formations, pour situer un peu ma demande concernant son fonctionnement.
Merci pour toute l'aide apportée.
Guillaume
Partager