2010-10-27 7 views
0

Im utilisant l'appel ajax à insertmsg.php pour insérer un message. Maintenant, javascript n'est pas un langage en temps réel, donc je ne peux pas compter sur un bouton de désactivation en haut de la fonction ajax.PHP: Limitation de temps

Donc je me demande comment je peux faire un timelimit à l'insertmsg.php avec: mysql_query ("INSERT INTO .., avec un délai de 2 secondes, sans mémoriser la dernière fois que l'utilisateur a écrit dans la base de données. la seule façon? Comment puis-je faire avec la session peut-être?

+0

Je ne comprends pas du tout. Que voulez-vous empêcher, l'appel Ajax expire? –

Répondre

1

Je pense que je comprends ce que vous voulez. Mais votre anglais est très mauvais ...

Vous voulez empêcher l'utilisateur d'envoyer des messages à des intervalles inférieurs à 2 secondes.

Vous pouvez le faire à la fois côté client et côté serveur, mais la vérification côté client peut être facilement désactivée par un utilisateur consentant. Pour le faire du côté serveur, en PHP, vous devez stocker l'heure à laquelle l'utilisateur a envoyé un message pour la dernière fois.

$_SESSION['lastMessageTime'] = time(); 

Lorsqu'un appel à un nouvel insert est vous fait juste vérifier

if(time() - $_SESSION['lastMessageTime'] <= 2) 
    exit('Not allowed!') 

Ne pas oublier de vous permettre la session avant d'utiliser la variable $_SESSION. Ou peut-être que vous voulez que votre script fasse l'insertion avec un délai de 2 secondes?

Vous pouvez attendre en PHP avec la fonction sleep. Ou vous pouvez retarder une action en JavaScript avec setTimeout.

0

vous essayez de d'une durée déterminée si l'utilisateur répond à un querstion dans le temps?

Si oui, vous pouvez stocker le temps que vous envoyez la question sur le site dans une session, et comparez-la à l'heure de l'envoi avec l'heure à laquelle vous avez récupéré un nouvel appel ajax.Vous saurez alors combien de temps l'utilisateur a passé à taper la réponse

0

Une fois que vous avez inséré un commentaire, donnez une variable de session, avec time() puis, lors de la prochaine tentative d'insertion, vérifiez si la variable session> 120. Si oui, exécutez query .....

+0

Vous pouvez modifier cette information dans votre question initiale. –

0

Je comprends - Javascrip est en temps réel, dans le sens où vous pouvez définir une minuterie pour exécuter une fonction de vérification (pour une réponse) à un intervalle défini. Si vous souhaitez que le script PHP s'exécute pendant une durée définie, utilisez set_time_limit (utilisez http://php.net/manual/en/function.set-time-limit.php)