Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2454 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP : Fonction mail à problème ?] Oui oui, j'ai un problème...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP : Fonction mail à problème ?] Oui oui, j'ai un problème...

n°694720
backdafuck​up
Back to da old skool
Posté le 07-04-2004 à 15:38:48  profilanswer
 

Tout d'abord bonjour... Pfiou, ca faisait longtemps que j'étais pas venu ici (normal, je faisais plus de prog...). Mais maintenant, je fais de nouveau de la prog, et là j'ai un problème (et le gérant de ma société qui me met des coups de pieds au... enfin, on m'a compris).
 
Bref, après avoir arpenté les manuels et faq php, fait consulté mon code par un pote, je ne trouve pas la solution. Je ne suis pas un champion, donc il se peut qu'une erreur pourrie se soit glissée dans mon code...
 
J'explique la situation.
Tout se passe sur le site "xxx" (adresse cachée parce que pb résolu) dans la page "Nous contacter". Si certains veulent tester, indiquez le dans "requete" (c'est pas de la pub hein, c'est un vrai problème...).
 
Cette page contient un formulaire et du code php (avec une base de données mysql derrière, bien évidemment).
Certains champs sont rendus obligatoires, pour des raisons commerciales, grâce à :  
 

Code :
  1. if ($champ == "" )
  2. {
  3.    header("location: ./blabla.php?param1=$truc&param2=$troc" );
  4. }


 
En théorie, lorsque le formulaire est envoyé, le serveur examine les champs obligatoires, s'il en trouve un vide, il retourne à la même page et fait passer en paramètre les données précédemment saisies (méthode détournée parce que le javascript history.go(-1) ne marchait pas, je ne sais pas pourquoi).
 
Le seul problème est qu'il y a dans le code la fonction mail().
Cette fonction mail ne devrait fonctionner que si tous les champs sont correctement remplis (aucun oubli). Mais, comble du comble, le mail est envoyé meme s'il manque un champ (sauf le champ email evidemment...).  
J'ai essayé toutes sortes de vérifications. Si je met la fonction mail() dans un if{} avec les conditions qu'il faut pour que ca ne marche pas, ben ca marche quand meme... Alors à moins que mon serveur ne soit possédé par le démon, je l'explique pas...
Note : hébergement OVH.
 
Voici le code (avec certaines parties masquées, mais c'est normal hein) :  
 

Code :
  1. <?php
  2. if ($passage=="1" )
  3. {
  4. //connexion à la base de données
  5. $login="..";
  6. $mdp="..";
  7. $serveur="..";
  8. $base="..";
  9. mysql_connect($serveur,$login,$mdp);
  10. if (mysql_errno() != 0)
  11. {
  12.  header("location: ./Contact.php?message=serveur&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  13. }
  14. mysql_select_db($base);
  15. if (mysql_errno() != 0)
  16. {
  17.  header("location: ./Contact.php?message=base&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  18. }
  19. /* Vérification des champs : J'ai testé, chaque oubli est détecté*/
  20. if ($nom == "" )
  21. {
  22.  header("location: ./Contact.php?message=nom&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  23. }
  24. if ($prenom == "" )
  25. {
  26.  header("location: ./Contact.php?message=prenom&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  27. }
  28. if ($societe == "" )
  29. {
  30.  header("location: ./Contact.php?message=societe&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  31. }
  32. if ($adresse == "" )
  33. {
  34.  header("location: ./Contact.php?message=adresse&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  35. }
  36. if ($codepostal == "" )
  37. {
  38.  header("location: ./Contact.php?message=codepostal&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  39. }
  40. if ($ville == "" )
  41. {
  42.  header("location: ./Contact.php?message=ville&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  43. }
  44. if ($telephone == "" )
  45. {
  46.  header("location: ./Contact.php?message=telephone&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  47. }
  48. if ($email == "" )
  49. {
  50.  header("location: ./Contact.php?message=email&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  51. }
  52. if ($requete == "" )
  53. {
  54.  header("location: ./Contact.php?message=requete&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  55. }
  56. /*Requete d'insertion : L'insertion ne marche que si un seul champ a été oublié. Si on en oublie un, qu'on rerempli et qu'on renvoie, ca fait une erreur d'insertion (testé pas par moi) */
  57. $requete_insert="insert into formulaire values ('$titre','$nom','$prenom','$fonction','$activite','$societe','$adresse','$codepostal','$ville','$telephone','$fax','$email','$website','$requete','$demande','$connexion')";
  58. $result_insert=mysql_query($requete_insert);
  59. //et on enleve les slashs
  60. $nom = stripslashes($nom);
  61. $prenom = stripslashes($prenom);
  62. $societe = stripslashes($societe);
  63. $ville = stripslashes($ville);
  64. $requete = stripslashes($requete);
  65. $adresse = stripslashes($adresse);
  66. //traitement d'erreurs
  67. if (mysql_errno() != 0)
  68. {
  69.  header("location: ./Contact.php?message=insert&passage=0&nom=$nom&prenom=$prenom&societe=$societe&fonction=$fonction&activite=$activite&adresse=$adresse&codepostal=$codepostal&ville=$ville&telephone=$telephone&fax=$fax&titre=$titre&demande=$demande&requete=$requete&website=$website&email=$email&connexion=$connexion" );
  70. }
  71.         //Voila le passage mail.
  72. /* Deux mails sont envoyés, un pour moi et un de confirmation pour la personne qui s'inscrit. */
  73. $destinataire="xxx@xxx.xx";
  74. $titremessage="Formulaire";
  75. $contenu="Expéditeur : $titre $prenom $nom
  76. Société : $societe
  77. Fonction : $fonction
  78. Activité : $activité
  79. Adresse : $adresse
  80.    $codepostal $ville
  81. Téléphone : $telephone
  82. Fax : $fax
  83. Email : $email
  84. Site Web : $website
  85. requete : $requete\n
  86. Connexion Internet : $connexion\n";
  87. if ($demande == "interesse" )
  88. {
  89.  $contenu .= "\nEst interesse par un rendez-vous.";
  90. }
  91. else
  92. {
  93.  $contenu .= "\nSouhaite recevoir une documentation.";
  94. }
  95. //fonction mail : ca c'était le mail qui m'était destiné, et il est envoyé ci-dessous
  96.        
  97.         mail($destinataire,$titremessage,$contenu);
  98. /* Mail numéro 2, destiné au client */
  99. $destinataireconfirm = $email;
  100. $titremessageconfirm = "xxxx - Votre inscription est un succès !";
  101. $contenuconfirm="  Bonjour,
  102. Merci d'avoir visité notre site et laissé vos coordonnées.
  103. Ces coordonnées ont été correctement transmises à nos services, et nous répondrons rapidement à votre demande.
  104. Nous avons pris soin de vous rappeler ci-dessous les informations que vous avez saisies. Merci de les vérifier,
  105. et, le cas échant de nous envoyer un e-mail à l'adresse suivante contact@xxx.xx (avec les informations à corriger),
  106. afin que nous rectifions ces informations immédiatement. Merci, et à très bientôt. \n
  107. Expéditeur : $titre $prenom $nom
  108. Société : $societe
  109. Fonction : $fonction
  110. Activité : $activité
  111. Adresse : $adresse
  112.    $codepostal $ville
  113. Téléphone : $telephone
  114. Fax : $fax
  115. Email : $email
  116. Site Web : $website
  117. requete : $requete
  118. Connexion Internet : $connexion
  119. \n
  120.  -------, Webmaster pour xxxxxxx.";
  121. //fonction mail de confirmation(à activer si nécessaire)
  122. mail($destinataireconfirm,$titremessageconfirm,$contenuconfirm);
  123. $passage="0";
  124. ?>
  125. <script language="javascript">
  126. alert("Le formulaire a été correctement rempli et transmis.\nVous allez recevoir un e-mail de confirmation. Merci." );
  127. location.href="./main.php";
  128. </script>
  129. <?
  130. }
  131. else
  132. {
  133. $passage="0";
  134. switch($message)
  135. {
  136.  case "nom":
  137.  ?>
  138.  <script language="javascript">
  139.  alert("Vous n'avez pas rempli le champ nom." );
  140.  </script>
  141.  <?
  142.  break;
  143.  case "prenom":
  144.  ?>
  145.  <script language="javascript">
  146.  alert("Vous n'avez pas rempli le champ prénom." );
  147.  </script>
  148.  <?
  149.  break;
  150.  case "societe":
  151.  ?>
  152.  <script language="javascript">
  153.  alert("Vous n'avez pas rempli le champ société." );
  154.  </script>
  155.  <?
  156.  break;
  157.  case "adresse":
  158.  ?>
  159.  <script language="javascript">
  160.  alert("Vous n'avez pas rempli le champ adresse." );
  161.  </script>
  162.  <?
  163.  break;
  164.  case "codepostal":
  165.  ?>
  166.  <script language="javascript">
  167.  alert("Vous n'avez pas rempli le champ code postal." );
  168.  </script>
  169.  <?
  170.  break;
  171.  case "ville":
  172.  ?>
  173.  <script language="javascript">
  174.  alert("Vous n'avez pas rempli le champ ville." );
  175.  </script>
  176.  <?
  177.  break;
  178.  case "telephone":
  179.  ?>
  180.  <script language="javascript">
  181.  alert("Vous n'avez pas rempli le champ téléphone." );
  182.  </script>
  183.  <?
  184.  break;
  185.  case "email":
  186.  ?>
  187.  <script language="javascript">
  188.  alert("Vous n'avez pas donné votre adresse e-mail." );
  189.  </script>
  190.  <?
  191.  break;
  192.  case "requete":
  193.  ?>
  194.  <script language="javascript">
  195.  alert("Vous n'avez pas rempli le champ concernant votre requete." );
  196.  </script>
  197.  <?
  198.  break;
  199.  case "insert":
  200.  ?>
  201.  <script language="javascript">
  202.  alert("Une erreur est survenue (N°01 : Requete invalide).\n Merci de recommencer." );
  203.  </script>
  204.  <?
  205.  break;
  206.  case "base":
  207.  ?>
  208.  <script language="javascript">
  209.  alert("Une erreur est survenue (N°02 : Erreur de séléction de base).\n Merci de recommencer." );
  210.  </script>
  211.  <?
  212.  break;
  213.  case "serveur":
  214.  ?>
  215.  <script language="javascript">
  216.  alert("Une erreur est survenue (N°03 : Le serveur ne répond pas).\n Merci de recommencer." );
  217.  </script>
  218.  <?
  219.  break;
  220. }
  221. }
  222. ?>
  223. // Voila... je comprends pas... Merci de votre aide ;)


Message édité par backdafuckup le 12-04-2004 à 18:26:28
mood
Publicité
Posté le 07-04-2004 à 15:38:48  profilanswer
 

n°694763
Freekill
Electron libre…
Posté le 07-04-2004 à 16:12:05  profilanswer
 

Utiliser un header() n'est pas suffisant pour arrêter l'exécution du script en cas d'erreur?

n°694881
backdafuck​up
Back to da old skool
Posté le 07-04-2004 à 17:27:13  profilanswer
 

Freekill a écrit :

Utiliser un header() n'est pas suffisant pour arrêter l'exécution du script en cas d'erreur?


C'est un script inclus dans la page html...
 
Alors comment faire ?
 
Comment arrêter l'envoi des mails ?
Je vais quand meme pas faire un goto !!! (c'est maaaaaal)...

n°694894
Freekill
Electron libre…
Posté le 07-04-2004 à 17:40:43  profilanswer
 

die() ou exit() ?

n°694905
backdafuck​up
Back to da old skool
Posté le 07-04-2004 à 17:47:18  profilanswer
 

Freekill a écrit :

die() ou exit() ?


 
ok, je vais regarder l'utilisation de ces fonctions... merci

n°694918
backdafuck​up
Back to da old skool
Posté le 07-04-2004 à 17:55:16  profilanswer
 

La question que je me pose c'est :  
 
Dans un fichier html contenant plusieurs balises <? ?>, si je place exit() (ou die(), ce qui est pareil), le but va-t-il être la sortie de la balise en cours ?
 
genre :  
 

Code :
  1. <?php
  2. mysql_connect($truc,$troc,$trac);
  3. mysql_select_db($trucmuche);
  4. if( $variable == "0" )
  5. {
  6.     header("location: ./page2.php?var1=$ouah&var2=$ouahouah" );
  7. }
  8. else
  9. {
  10.    exit();
  11. }
  12. ?>
  13. <html>
  14. <head>
  15. <title></title>
  16. </head>
  17. <body>
  18. <form action=... method=post>
  19. <input type= text name=.. value=<? echo $var1 ?>>
  20. <input type=hidden name=variable>
  21. <input type=submit etc etc>
  22. </form>
  23. </body>
  24. </html>
  25. ?>


 
Quel sera l'effet du exit() ?
(J'arrive pas à trouver ca de manière explicite dans les manuels).
exit() va t il tout de même permettre l'execution du code html (ca, ca parait logique) et le reste du code php (balises echo $var1) ?
 
Merci.

n°694934
Freekill
Electron libre…
Posté le 07-04-2004 à 18:01:20  profilanswer
 

Ce n'est pas bien dur à tester?
 

Code :
  1. tutu
  2. <?php
  3. die();
  4. ?>
  5. toto


 
Ce qui est avant s'affiche, ce qui est après non.
 
Quand le serveur tombe sur un die(), il arrête tout, c'est logique? ( pour plus de sécurité tu peux aussi remplacer le contenu html par des echo() )

n°694946
backdafuck​up
Back to da old skool
Posté le 07-04-2004 à 18:06:21  profilanswer
 

Donc si je fais
 

Code :
  1. <?
  2. if {$champ1=="" )
  3. {
  4.    header("location: ./blabla.php" );
  5.    exit();
  6. }
  7. ?>
  8. code html


 
Il va revenir à la page indiquée par le header, mais n'executera pas l'html qu'il y a après ?

n°694954
Freekill
Electron libre…
Posté le 07-04-2004 à 18:09:26  profilanswer
 

Exact, mais je trouve que ça serait quand même plus propre de mettre ton code html dans un else{} avec echo.  

n°694961
backdafuck​up
Back to da old skool
Posté le 07-04-2004 à 18:12:06  profilanswer
 

Freekill a écrit :

Exact, mais je trouve que ça serait quand même plus propre de mettre ton code html dans un else{} avec echo.  
 


C'est sur, mais je t'avoue que j'ai une flemme immense de mettre tout ça en echo  [:violito]  [:gunblade] .  
Je vais tester cette fonction tout à l'heure (besoin de recharges de tabac  [:aras qui rit] )
 
Merci en tout cas de m'avoir aidé. [:tekways]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP : Fonction mail à problème ?] Oui oui, j'ai un problème...

 

Sujets relatifs
Php et bdd Access distantepasser 1 variable PHP à javascript sans utiliser echo ou autre?
php_xslt - C est quoi?petit probleme impulsionnelle SVP !
Quel est le port par default du serveur apache dans easy phpUpload de fichier (probleme résolu :D)
Cherche solution globale pour un problème de script[PHP] Liste des variables globales.
[PHP] Probleme avec la fonction mail() -- Help me !!![PHP] probleme avec la fonction mail
Plus de sujets relatifs à : [PHP : Fonction mail à problème ?] Oui oui, j'ai un problème...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR