Temps de session

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Temps de session

par agité » 23 mai 2006, 17:26

une idée ? :oops:

par agité » 23 mai 2006, 14:12

je pensais plus a un session_destroy() pour clore la session lorsque le temps depasse pour l'instant tout ce passe bien
<?php
session_start()
?>
en debut de page, quand quelqu'un se connecte sur le site il passe du statut visiteur a logué et vice verca lors de deco par contre quand il depasse le temps de session il repasse bien visiteur mais la session n'est pas tue c'est pourquoi je pensais mettre ;
While((mysql_query) != false)
 {
session_destroy();
 }
mais ca ne marche pas et quand j'execute un
mysql_query("SELECT FROM sessions WHERE ip LIKE '".jesaispluslafonctiondetete."') && session_destroy()
il boucle et je vois pas comment faire pour tuer la session apres un certain temps.

ps: je suis au boulot donc j'ai pas les variables exactes sous la main et ya peut être des erreur de codes.

par Invité » 23 mai 2006, 14:10

je pensais plus a un session_destroy() pour clore la session lorsque le temps depasse pour l'instant tout ce passe bien
<?php
session_start()
?>
en debut de page, quand quelqu'un se connecte sur le site il passe du statut visiteur a logué et vice verca lors de deco par contre quand il depasse le temps de session il repasse bien visiteur mais la session n'est pas tue c'est pourquoi je pensais mettre ;
While((mysql_query) != false)
 {
session_destroy();
 }
mais ca ne marche pas et quand j'execute un
mysql_query("SELECT FROM sessions WHERE ip LIKE '".jesaispluslafonctiondetete."') && session_destroy()
il boucle et je vois pas comment faire pour tuer la session apres un certain temps.

ps: je suis au boulot donc j'ai pas les variables exactes sous la main et ya peut être des erreur de codes.

par jeff » 22 mai 2006, 21:17

salut
comment a tu defini le gestionnaire des session
normalement unset($_SESSION['masession'] devrai suffir

par agité » 22 mai 2006, 20:56

// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes

mysql_query('DELETE FROM sessions WHERE timestamp < ' . $timestamp_5min);
Je vois pas comment faire un session_destroy ajouté a la requete ...

par agité » 22 mai 2006, 16:24

Image

J'ai fais cette table pour stocker l'ip et l'id de session pour verrifier ensuite si l'id dans la base de donnée correspond bien a celui de la session en cours.

Temps de session

par agité » 22 mai 2006, 16:04

Bonjour,

J'ai déjà creer des sessions sur ma base de donnée mais je me rends compte que j'ai pas mal de problème, je n'avais pas de temps de session mis alors j'ai recuperer un script sur le site du zero :
http://www.siteduzero.com/tuto-3-174-1- ... ectes.html

Par contre ce que j'aimerais maintenant c'est que lorsqu'il supprime l'entrée de la table il ferme aussi la session car je peux continuer de naviguer alors que la session est consideré comme morte pourtant j'ai fais ca :
															<?php

															$retour = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM sessions WHERE ip='".$_SERVER['REMOTE_ADDR']."' ");
															$donnees = mysql_fetch_array($retour);

															if (isset($_GET['phpsessid'])) {



															if ($donnees['nbre_entrees'] == 0) // L'ip ne se trouve pas dans la table, on va l'ajouter
															{
															    $sql = "INSERT INTO sessions (ip,timestamp,nom,sessid) VALUES ('".$_SERVER['REMOTE_ADDR']."', '".time()."', '".$_SESSION['login']."', '".$_SESSION['session_id']."') ";
															    $request = mysql_query($sql) or die ("erreur ".$sql);
															}
															else // L'ip se trouve déjà dans la table, on met juste à jour le timestamp
															{
															    $sql = "UPDATE sessions SET timestamp= '".time()."', nom = '".$_SESSION['login']."', sessid = '".$_GET['PHPSESSID']."' WHERE ip= '".$_SERVER['REMOTE_ADDR']."' ";
															    $request = mysql_query($sql) or die ("erreur ".$sql);
															}

															// -------
															// ETAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes
															}
															// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
															$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
															$sqm ="DELETE FROM sessions WHERE timestamp < '".$timestamp_5min."' ";
															while (mysql_query($sqm) != false)
																{
																	session_start();
																	session_destroy();
																}


															// -------
															// ETAPE 3 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
															$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM sessions');



															// Ouf ! On n'a plus qu'à afficher le nombre de connectés !
															echo  "<b>".$donnees['nbre_entrees']."</b>";
															?>
j'ai verrifier que la session etait detruite comme ca :
                                                            $sqm ="DELETE FROM sessions WHERE timestamp < '".$timestamp_5min."' ";
                                                            while (mysql_query($sqm) != false)
                                                                {
                                                                    session_start();
                                                                    session_destroy();
                                                                } 
pourtant il ne me detruit pas la session je peux continuer de naviguer