Temporiser avant l'envoi avec mail()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Temporiser avant l'envoi avec mail()

par Ripat » 31 oct. 2005, 16:32

Peut etre que je vais dire une bétise mais tu pourrais afficher ta page COMPLETEMENT, l'envoyer, puis envoyer le mail. Un peu confus ... d'où l''exemple ci-dessous ;)
<!DOCTYPE ...
...
</html>
<?php

flush();

mail( ... );

?>
Ca ne marchera pas.

Le flush seul ne renvoie pas de 200 OK. La page restera en suspens jusqu'à la fin du script. J'ai été confronté à ce problème il n'y a pas longtemps.

Le mieux est de trouver la raison de la lenteur de la fonction mail (librairie PEAR ?).

S'il n'y a pas de solution de ce côté, faire tourner la partie php en background comme ceci:
// envoi d'un header OK
header("HTTP/1.1 200 OK"); 
header("Content-Length: 0");
flush();

// partie de code pour l'envoi du mail
// attention! Il n'y aura plus d'affichage sur le poste client à partir de ce point
Autre solution (linux) et détail de mes recherches:
http://www.phpfrance.com/forums/voir_su ... texte-.php

Dernière mise en garde: cet artifice rend un site plus réactif mais ne solutionne rien du côté serveur!

par gesualda » 31 oct. 2005, 15:56

Je vais voir regarder de plus près et je reviens .

Merci :)

par Vaedan » 31 oct. 2005, 15:51

par gesualda » 31 oct. 2005, 15:50

C'est quoi la fonction
 flush();

par Vaedan » 31 oct. 2005, 15:47

Peut etre que je vais dire une bétise mais tu pourrais afficher ta page COMPLETEMENT, l'envoyer, puis envoyer le mail. Un peu confus ... d'où l''exemple ci-dessous ;)
<!DOCTYPE ...
...
</html>
<?php

flush();

mail( ... );

?>

par gesualda » 31 oct. 2005, 15:45

NOn, en fait ca fait un effet de temporisation, le mail part bien, et arrive à destination.

Ne peut ton pas faire un genre d'enregistrement dans une variable temporaire et l'envoi ensuite :oops:

par Vaedan » 31 oct. 2005, 15:37

Une solution serait d'envoyer l'email, puis de rediriger vers la page.

par Vaedan » 31 oct. 2005, 15:37

Peut etre que l'envois du mail ne se fait pas et provoque une erreur, justifiant ainsi le temps de retard :)

Temporiser avant l'envoi avec mail()

par gesualda » 31 oct. 2005, 15:32

Bonjour à tous

Lors du déclanchement de l'envoi du mail avec la fonction mail(), la page est comme figé, pendant 2 à 3 secondes au moment de l'envoi

Y a t-il une raison à cela.?

Merci :oops: