CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

javascript : setTimeout

iscario
iscario
Niveau 7
05 janvier 2011 à 00:14:00

bonjour,

j'ai dans un site un appel à du javascript dont le but est de fermer une session quand l'utilisateur est inactif.
la fonction js fait appel à setTimeout comme ca :
setTimeout("chemin_php_fonction_logout()", 53000);
Donc php_fonction_logout() enclenche la fermeture de session après 53000ms.
bien.
Sauf que quand l'utilisateur est sur la page et tape du texte, le setTimeout ne le détecte pas. Du coup mon utilisateur remplis une textarea, mais s'il n'a pas valider le texte en postant le formulaire avant 53000ms, alors la session se ferme et l'utilisateur est pas content car il a tout perdu!

Comment intégrer le fait que lorsque l'utilisateur tape, il n'est pas inactif ?

merci

PaulAimik
PaulAimik
Niveau 10
05 janvier 2011 à 02:02:02

setTimout revoit une id qui permet de stopper le timer.

Donc dans ton cas quand l'utilisateur bouge la souris ou appuie sur une touche tu stop le timer et t'en redémarre un autre.

PaulAimik
PaulAimik
Niveau 10
05 janvier 2011 à 02:03:33

j'ai oublié de dire le nom de la fonction pour arrêter le timer :
clearTimeout( idTimer/*:int*/ )

iscario
iscario
Niveau 7
05 janvier 2011 à 08:01:12

est-ce que dans le cas ou mon utilisateur a 2 onglets internet ouverts, qu'il bouge la souris sur l'autre onglet (pas le mien), ma fonction js va chopper les events quand meme ?

deepblue
deepblue
Niveau 16
05 janvier 2011 à 09:39:41

Si la pointeur est sur ta page, oui.

Ne demandes pas à javascript de faire ça. Tu stockes dans un cookie/session or whatever le timestamp de la date d'ouverture de la dernière page de ton site. Ensuite, tu fais un test pour savoir si, à l'ouverture de la page, le lapse de temps n'est pas supérieur à 54s, et si ce n'est pas le cas, tu le déconnectes.

if(time() - $timestamp > 54) {
deconnexion();
}

miseAjourDeTimestamp();

PaulAimik
PaulAimik
Niveau 10
05 janvier 2011 à 18:53:08

L'idéal c'est de le faire des 2 côtés,

Un délai assez long côté server, par exemple 1h, comme ca même le type qui désactive javascript sera déconnecte au bout d'un moment.

Et en javascript via XmlHttpRequest tu renvoie régulièrement le message "hého je suis là me déconnecte pas" (par ex toutes les 30min) si l'utilisateur a bougé la souris (ou pressé un touche clavier) entre temps.

Comme ca l'utilisateur peut remplir son formulaire tranquillou sans se faire déconnecter, et il restera pas nonplus indéfiniment connecté (ce qui est pas idéal si le visiteur se connecte depuis un PC public...).

iscario
iscario
Niveau 7
05 janvier 2011 à 21:47:56

mmmmh, je crois que je vois.
Je vous remercie pour ces conseils :-)

iscario
iscario
Niveau 7
07 janvier 2011 à 19:02:27

ah, en fait j'ai une balise META qui fait un refresh de la page au bout d'un certain temps et qui déconnecte.... du coup ca empèche mon clearTimeout d'etre utile....

J'ai pas trop envie de virer le Meta car dans le cas ou le javascript serait désactivé, il n'y aurait plus de controle du tout.

Est-ce qu'il y aurait une solution quand meme ?

PaulAimik
PaulAimik
Niveau 10
07 janvier 2011 à 19:54:43

Comme je l'ai dit tu peux faire un timer côté serveur, et en javascript tu fais un script de confort qui redémarre le timer côté serveur quand l'utilisateur utilise le clavier/souris.

Résultat :
- si l'utilisateur a désactive javascript il sera deco quoi qu'il arrive une fois le délai expiré.
- si js est activé, il sera déco seulement après un délai d'inactivité.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment