2011-03-04 4 views
0

Je veux l'extrait de codeverrouillage de la session php

echo "This is a test"; 

à imprimer toutes les heures. Ainsi, lorsque l'utilisateur charge index.php la première fois, il doit être imprimé. Lorsque l'utilisateur immédiatement après cela recharge la page, il devrait disparaître. Après une heure, il devrait être imprimé à nouveau ... Comment est-ce que je peux faire ceci? Merci.

Répondre

0

Vous pouvez définir l'heure actuelle sur une variable $ _SESSION et si l'utilisateur modifie la page, vérifiez la variable de l'heure de session. et si ce temps est supérieur à une heure, que le message

afficher
4

Cela devrait fonctionner:

session_start(); 

if (!isset($_SESSION["last_shown"]))    // If the session variable 
               // was never set 
or ($_SESSION["last_shown"] < (time() - 3600)) // or was set more than 
               // 1 hour (3600 secs) ago 
{ 
    echo "This is a test";       // Make output 
    $_SESSION["last_shown"] = time();    // Update session variable 
               // with current time 
} 
+0

semble très bien. une accolade trop sur la ligne 5 je pense. – SandyBr

+0

@Sandy fixe, merci! –

+0

Cela ne fonctionnera pas si vous avez oublié d'exécuter le script après exactement une heure, par exemple après 1 heure et demie. – Artefact2

3

Plutôt que de sessions, définir un cookie expirer en 1 heure. au chargement de la page, si le cookie est présent, n'affichez pas le message. L'avantage sur les sessions est que l'utilisateur peut fermer le navigateur et revenir plus tard (si vous le souhaitez)

if (!isset($_COOKIE['sesslock'])) 
{ 
    // No cookie - show message & set cookie (expires in 1 hour, 3600sec) 
    setcookie('sesslock','ok', time()+3600); 
    echo "this is a test"; 
} 
else 
{ 
    // The cookie is there, don't display your message 
} 
+1

Une belle alternative. Aussi immunisé aux conditions de course –

+0

Devrait fonctionner, sauf si l'utilisateur est paranoïaque et a tous les cookies supprimés à la fermeture du navigateur. Mais alors, la méthode de session échouerait aussi pour cet utilisateur. –

+0

En termes de fonctionnement exactement toutes les heures, cependant, cela a le même problème que mon approche - il ne comptera pas exactement la même minute, mais à partir de quand l'utilisateur fait la demande –