time ();

Répondre
N@b
le 27/07/2005 à 17:05
N@b
Salut ...

j'ai comme un petit hic dans la fonction time().

j'ai écrit un code php qui doit vérifier si un utilisateur est toujours connecté ou pas, sinon une déconnexion survient automatiquement. Voici le code:

<?

$timer = time () + 300; // 300s soit 5 minutes
$time= time ();

$select_connected=mysql_query("SELECT * FROM connect WHERE id_mb='$id_mb'");
$verif_connected=mysql_num_rows($select_connected);

if ($verif_connected ==1)
{
while ($con=mysql_fetch_array($select_connected))
{
$time_connexion=$con["time_connect"];
}

if (($time_connexion + $timer) < time())
{
session_unset ("login");
session_unset ("motdepasse");
session_destroy ();
header ("location: ./deconnecte.html");
exit;
}
else
{

$insert_new_time=mysql_query("UPDATE connect SET time_connect='$time' WHERE id_mb='$id_mb'");
}
}
else
{
$add_new_connected=mysql_query("INSERT INTO connect VALUES ('','$id_mb','$time')");
}
?>



la structure de la table est plutôt simple:
CREATE TABLE connect (
id_connect integer auto_increment not null,
id_mb integer not null,
time_connect varchar (225) not null,
primary key (id_connect)
)type=myisam;



Bon, le problème c'est que une foi la page téléchragé, il suffit de 5 secondes pour que la page ne soit plus accécible. C'est à dire si j'actualise la page avant le compte à rebour qui est de 5 minutes, le programme démarre la condition else qui est la déconnexion ...

Pourquoi ?
dois-je modifier la variable $timer ?


Merci d'avance
moogli
le 27/07/2005 à 18:37
moogli
Salut,

question bete, pourquoi tu ne met pas le time stamp de connection dans une variable de sesssion ?

pourquoi utiliser une boucle pour la récup d'info mysql puisque tu n'en attend qu'une seul ?

je ne comprend pas cette ligne : if (($time_connexion + $timer) < time())

cette condiditon ne peut qu'etre vrai puisque timer = time() +300 et que de toutes façon la `longueur` de ton script ne dépassera jamais time() + 30 !!!!
donc quelque soit la valeur (positive) que va te retourner ta requete le if sera toujours validé. A partir du moment que le memebre est connecté l'execution de ce code le déconnecte !


Je pense que tu a mal prévue ton système !

Le plus simple est quand meme de réduire la durée de vie des sessions a 5 minutes avec ini_set et le paramètre correspondant ( a chercher dans la doc smiley).

sinon en mettant en en session la valeur du timestamp de connection +300 et tu verifie si celui est inférieur a time() !


@+
Il en faut peu pour être heureux !!!!!
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours