Aller au contenu

Verification d'activité


Sujets conseillés

Posté

Hello,

alors je reviens une fois de plus soliciter votre aide, voilà mon problème :

lors de la connection de mes user sur ma zone membre ça inscrit l'heure dans un champs de ma table meet_user_connect sour la forme H:i:s jusqu'ici pas trop dure, mais le probleme c'est que j'ai essayé de faire une fonction qui verifie si cette user n'est pas inactif depuis 50min, et la c'est le drame, j'ai developpé une fonction de 30 ligne qui fonctionne, sauf quand je passe a 00:00:01 en gros passé minuit ça deconnecte automatiquement le user et ce même si il viens de se connecter (forcement par toute logique 00 est plus petit que 23) car pour lui l'heure que je recupere de ma table n'est pas une heure mais un simple texte !

Alors ma question est y a t il un moyen plus simple pour dire que si le user est inactif depuis 50min on le deconecte ? J'ai pourtant cherché sur le net mais a part pour formater une date j'ai pas trouver grand chose pour m'aider.

Si je me suis mal expliqué n'hesitez pas a me demander plus de détail, c'est pas toujours simple d'exposer son problème.

Je vous remercie d'avance pour votre aide .

Morphe

Posté

L'ideal serait de ne pas stocker les dates dans un format de time H:i:s mais directement sous forme de timestamp unix (nombre de secondes depuis le 1er janvier 9070 minuit GMT). Ce timestamp correspond au resultat de la fonction time(). A partir de la, il devient beaucoup plus facile de faire des comparaisons de date, verifier qu'un delais de 50 minutes est depasse, etc.

:)

Posté (modifié)

oui j'avais déjà lu deux trois choses la dessus mais j'ai pas réussis a fairer quoique ce soit avec ! Si tu pouvais m'éclairer un peu sur cette fonction ça serais gentil de ta part !

Mais merci pour ta réponse.

Morphé.

Modifié par djmorphe
Posté

Bonjour,

Lorsque l'utilisateur effectue une action sur ton site, tu enregistre dans une variable de session (par exemple, tu peux aussi le faire dans la base de donnée) sous la forme d'un timestamp (avec la fonction time), ensuite il te suffit de faire la différence avec le timestamp courant (bien entendu tu fais ceci avant tout autre action).

Un exemple rapide et non exhaustif :

$maxinactivity = 50; // Temps d'inactivité maximum en minutes
$now = time(); // Le timestamp actuel
if(isset($_SESSION['lastactivity'])) {
if((time() - $_SESSION['lastactivity']) > ($maxinactivity * 60)) { // Le la différence obtenu est en seconde (timestamp), donc on multiplie le temps maximum par 60
// Supprimer la session et déconnecter l'utilisateur
} else {
$_SESSION['lastactivity'] = time(); // La session n'a pas expiré, on met à jour la variable pour la prochaine vérification
}
} else {
// Si la variable n'a pas été définie il y a plusieurs possibilités... Soit c'est la première fois que l'utilisateur se connecte
// (auquel cas il faut l'initialiser.. ça se ferait pendant la procédure de login... donc on n'arrivera pas dans cette branche
// du "if"... Et donc il ne reste qu'un cas, celui de l'utilisateur qui n'a pas de session.
}

Bonne continuation.

Posté

Je te remercie, je vais pencher la dessus mais je pense que je vais l'inscrire dans ma table car j'utilise deja une variable de session pour le login , et je voudrais eviter d'en avoir trop !

Posté (modifié)

Super TheRec ton script ma vraiment bien aidé et ça marche nikel chrome, et le tout en 2 lignes, ce qui est bien c'est que tu m'as appris à utiliser la fonction time() et je t'en remercie beaucoup !

Morphé :thumbsup:

Si quelqu'un veux passer mon post en [résolu] c'est ok de mon coté.

Modifié par djmorphe

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...