cs_JackNUMBER
Messages postés233Date d'inscriptionjeudi 30 septembre 2004StatutMembreDernière intervention26 juin 2011
-
5 janv. 2009 à 23:17
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 2012
-
6 janv. 2009 à 02:03
bonjour à tous !
alors voila je débute dans le PHP, j'ai fait un peu les bases de données et là je fais un peu de formulaire.
j'ai un petit soucis avec une fonction "corriger".
je vous explique :
- un formulaire est remplit par l'internaute (disont le sujet ($sujet) et le message($message))
- quand il clic sur "envoyer" cela ouvre une autre page php où il a le récapitulatif de son envoi (pas encore envoyé) avec 2 boutons : "envoyer" ou "corriger"
- si il clic sur "envoyer" ça envoi
- si il clic sur "corriger" ça revient à la page d'avant mais ça me l'envoi aussi !
et c'est ça mon problème !
je n'arrive pas à trouver pourquoi.
voilà le script :
;this.form.submit();" value="Envoyer">
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 6 janv. 2009 à 02:03
Salut,
Oula !!! y a une grosse faute là.
Tu mélanges PHP et Javascript.
Au cas où ce soit nécessaire :
- javascript = code exécuté sur la machine du visiteur
- PHP = code exécuté sur le serveur
Ce qui se passe lorsque tu fais ça :
;this.form.submit();" value="Envoyer">
(Admettons que la page qui est appelée pour confirmation ("autre page php") se nomme confirm.php)
Côté serveur (donc avant l'envoi au visiteur) :
PHP "interprète" le code PHP (<?php ... ?>) qu'il trouve dans confirm.php
Il "tombe" sur <?php mail([...]);?>
> c'est du code PHP > il envoie directement le mail
Le serveur envoie la page "interprétée" au visiteur
Il a alors un input qui ressemble à ça :
=> ce qui forcement ne fonctionnera pas, puisque le mail a déjà été envoyé
Ce qu'il faut que tu fasses dans confirm.php :
Tu affiches ton récapitulatif
Tu recrées un formulaire qui pointe par exemple sur validation.php
si le visiteur cliques sur "corriger" => page précédente
si le visiteur cliques sur "confirmer" => envoi du formulaire
... et dans validation.php
if ([contrôle que les données reçues sont correctes]) {
mail([...]);
}
// suivant ce que tu souhaites faire tu peux afficher un "votre message a bien été envoyé" ou rediriger le visiteur sur une autre page grâce aux headers
header("Location:[autre page]);