lagombe
Messages postés45Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention19 mars 2008
-
30 août 2005 à 17:13
stevo77
Messages postés43Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention17 juillet 2007
-
1 sept. 2005 à 11:35
Bonsoir à tous,
Malgré mes recherches, je n'ai pas trouvé grand chose dans les
précédents sujets... donc désolé si je suis redondant... j'ai un
formulaire que je poste (style <form name="form"
action="pagesuivante.php" method="post"> avec un petit bouton
submit)... et j'aimerais pouvoir envoyer un mail contenant des infos de
ce formulaire mais de façon transparente pour l'utilisateur en même
temps que les données s'enregistrent dans la base mysql... avant de
revenir finalement sur ma page "pagesuivante.php"...
stevo77
Messages postés43Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention17 juillet 2007 30 août 2005 à 17:45
Bon, ca aurais ete pas mal de voir la source de ton prog pour les exemples mais bon, c'est pas grave.
//code a mettre au debut du fichier pagesuivante.php
//on va dire qu'on a:
$info1 = $_POST['champs1']; //contenue du premier champs du formulaire
$info2 = $_POST['champs2']; //...
$info2 = $_POST['champs2']; //...
//je reste succinct, apres tu peux faire quelque choseplus poussé
//sauvegarde des parametres dans la bd mysql
$CONNEXION=mysql_connect("nom serveur (generalement localhost)","login de connection a la bd","mot de passe");
mysql_select_db("nom de ta bd");
mysql_query("UPDATE INTO nom_table VALUES('".$info1."','".$info2."','".$info3."')");
//fin de sauvegarde
//envoi du mail
mail("destinataire@hote.TLD","sujet mail","message du mail avec les données\ninfo1: ".$info1."\ninfo2: ".$info2."\ninfo3: ".$info3); //attention, certains hebergeurs deactivent la fonction mail
//fin envoi mail
//a la suite, tu met le contenue normal de la page pagesuivante.php
Le probleme avec cette solution, c'est que si l'utilisateur actualise
la page, ca va reenvoyer le mail et re ecrire les données dans la bd,
donc modifie ton formulaire comme ceci:
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 30 août 2005 à 17:51
ton code est bof, il manque des isset() pour savoir si les variables
existent par exemple, ensuite tu n'as pas mis de mysql_close() après le
mysql_query(), attention aux magic_quotes et aux caractères
spéciaux (faille de sql injection probable dans ton cas), etc...
stevo77
Messages postés43Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention17 juillet 2007 31 août 2005 à 09:49
@Anthomicro: j'ai dit que c'était du basic de chez basic, il faut le
retravailler, mettre des verif, validation de saisie... casie
obligatoire sur un formulaire etant donnée que l'internaute peut entrer
ce qu'il veux.
+1 pour l'idée de FhX d'utiliser des session afin d'éviter les envoi multiple.
stevo77
Messages postés43Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention17 juillet 2007 31 août 2005 à 16:46
Bah en fait si ca marche si tu vien de la page de formulaire, c'est
juste le cas du p'ti malin qui rentre l'adresse dans la barre de
navigation que tu gere pas
//code a mettre au debut du fichier pagesuivante.php
//on va dire qu'on a:
$info1 = $_POST['champs1']; //contenue du premier champs du formulaire
$info2 = $_POST['champs2']; //...
$info2 = $_POST['champs2']; //...
//je reste succinct, apres tu peux faire quelque choseplus poussé
//sauvegarde des parametres dans la bd mysql
$CONNEXION=mysql_connect("nom serveur (generalement localhost)","login de connection a la bd","mot de passe");
mysql_select_db("nom de ta bd");
if( !mysql_query("UPDATE INTO nom_table VALUES('".$info1."','".$info2."','".$info3."')") )
{// cas ou il y a eu une erreure lors de l'écriture dans la bd
if( file_exists("log.txt") )
{
$fp = fopen("log.txt","a");
fputs($fp, "erreure lors de l'écriture dans la base de donnée :
info1=".$info1." | info2=".$info2." | info3=".$info3); // on écrit le détail de l'erreure dans le fichier de log
fclose($fp);
}
}
//fin de sauvegarde
@mysql_close($CONNEXION);
//envoi du mail
if(!mail("destinataire@hote.TLD","sujet mail","message du mail avec les données\ninfo1: ".$info1."\ninfo2: ".$info2."\ninfo3: ".$info3) ) //attention, certains hebergeurs deactivent la fonction mail
{//si l'envoi du mail n'a pas marché, on écrie dans le log
if( file_exists("log.txt") )
{
$fp = fopen("log.txt","a");
fputs($fp,
"erreure lors de l'écriture dans la base de donnée : info1=".$info1." |
info2=".$info2." | info3=".$info3); // on écrit le détail de l'erreure dans le fichier de log
fclose($fp);
}
}
//fin envoi mail
}
else
echo "message d'erreure"; //tu
met le message que tu veux, généralement, si ça arrive là c'est qu'il
est pas passé par le formulaire donc un petit
"<script>location.href='nompdetapageavecleformulaire.php'</script>"
//a la suite, tu met le contenue normal de la page pagesuivante.php
}
else
{
//si le gars arrive là c'est
qu'il a réactualisé, donc tu fait ce que tu veux avec lui (message
d'alerte, message disant pas de réactualisation...
}
//a la suite, comme d'hab, ta page normal
?>
Je rappel les dernières indication:
<?php unset($_SESSION['compteur']); ?> sur la page ou il y a le formulaire
créer un fichier log.txt dans le meme repertoire que tes pages. En
allant voir ce fichier de temps en temps (et en le vidant après) tu
pourra voir si t'a eu des problemes dans des envoi ou écriture (très
pratique )