Envoyer un formulaire sans passer par le mail ?

Envoyer un formulaire sans passer par le mail ? - HTML/CSS - Programmation

Marsh Posté le 25-05-2007 à 14:16:48    

Salut,
 
Je fais un petit site sans prétention dans lequel j'aimerai bien qu'il soit possible d'envoyer quelques infos, donc j'ai pensé faire un formulaire HTML, le hic c'est que pour envoyer les données, ca se fait pas "directement" comme partout sur le WEB, non, ca ouvre le client mail, etc, en fait ca fait envoyer un mail... :ange:  
 
Pas pratique du tout ça, comment on fait pour envoyer directement les infos sans déclencher l'ouverture du client mail ? (je crois que dans  "method=" il faut mettre autre chose que "mailto:..." mais bon je connait pas trop les cgi...)
 
Vous pourriez m'aider ??
 
 :jap:  :jap:  :jap:

Reply

Marsh Posté le 25-05-2007 à 14:16:48   

Reply

Marsh Posté le 25-05-2007 à 14:47:08    

il fatu mettre l'adresse d'un script cote serveur ( en php , asp, perl , .... )  
 

Reply

Marsh Posté le 25-05-2007 à 14:55:34    

Dans method tu peux mettre post ou get et dans action tu met le nom de la page vers laquelle tu envoi tes données (ex: ma_page.php)

Reply

Marsh Posté le 25-05-2007 à 18:15:42    

Ok, j'ai fait un script en PHP, par contre j'arrive pas à rediriger une fois qu'il y a eu un clic sur "Envoyer".
Comment on redirige vers une page en PHP ?

Reply

Marsh Posté le 25-05-2007 à 20:24:37    

dans le action
 
form action="tonscript.php"


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 26-05-2007 à 00:54:12    

J'ai un probleme: je reçois les champs sans leur valeur, par exemple:
 
champ1:
champ2:
 
alors que j'ai rempli champ1 et champ2 dans le formulaire...
 
J'utilise ce code la:
 

Code :
  1. # <HTML>
  2. # <HEAD>
  3. # <TITLE>E-Mail Formulaire</TITLE>
  4. # </HEAD>
  5. # <BODY>
  6. # <FORM method="POST" action="envoi.php">
  7. # <P>Votre noom:<br>
  8. # <INPUT type="text" name="nom" size=30>
  9. # </p>
  10. # <P>Votre adresse E-Mail:<br>
  11. # <INPUT type="text" name="email" size=30>
  12. # </p>
  13. # <P>Message:<br>
  14. # <textarea name="message" cols=30 rows=5></textarea>
  15. # </p><INPUT type="submit" value="Envoyer">
  16. # </FORM>
  17. # </BODY>
  18. # </HTML>
  19. #
  20. # //La seconde page ex.:envoi.php
  21. #
  22. # <?php
  23. # //Pour définir chaque input du formulaire, ajouter le signe de dollar devant
  24. #
  25. # $msg = "Nom:\t$nom\n";
  26. # $msg .= "E-Mail:\t$email\n";
  27. # $msg .= "Message:\t$message\n\n";
  28. # //Pourait continuer ainsi jusqu'à la fin du formulaire
  29. #
  30. # $recipient = "tonCourriel@mail.com";
  31. # $subject = "Formulaire";
  32. #
  33. # $mailheaders = "From: Mon test de formulaire<> \n";
  34. # $mailheaders .= "Reply-To: $email\n\n";
  35. #
  36. # mail($recipient, $subject, $msg, $mailheaders);
  37. #
  38. # echo "<HTML><HEAD>";
  39. # echo "<TITLE>Formulaire envoyer!</TITLE></HEAD><BODY>";
  40. # echo "<H1 align=center>Merci, $nom </H1>";
  41. # echo "<P align=center>";
  42. # echo "Votre formulaire à bien été envoyé !</P>";
  43. # echo "</BODY></HTML>";
  44. #
  45. # ?>

Reply

Marsh Posté le 26-05-2007 à 10:51:52    

remplace $nom par $_GET['nom']


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 26-05-2007 à 12:46:11    

Ok ça marche maintenant merci.

Reply

Marsh Posté le 27-05-2007 à 17:46:53    

Si l'hebergeur n'autorise pas la fonction mail(), on fait comment pour remplacer par "email()" ??

Reply

Marsh Posté le 27-05-2007 à 18:18:44    

crois-tu vraiment pouvoir contourner le problème ainsi ?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 27-05-2007 à 18:18:44   

Reply

Marsh Posté le 28-05-2007 à 00:43:03    

Oui c'est ce qui était expliqué quelque part, que certains hebergeur desactivaient "mail()" qui permet le spam, contre "email()" qui necessite une adresse expéditeur...
 
Mais vu le merdier, je vais me pencher sur une autre option, peut-on par exemple écrire dans un fichier certaines données (au lieu de les mailer).
Comme ca j'ai juste à rapatrier de temps en temps ce fichier là...

Reply

Marsh Posté le 28-05-2007 à 09:57:18    

C'est même conseillé si tu n'as aucune protection sur ton formulaire (pour éviter ce genre d'utilisation http://www.phpsecure.info/v2/artic [...] Inject.php )
 
A l'arrache, tu peux regarder du côté de http://fr.php.net/manual/fr/ref.filesystem.php (fopen, etc) en pensant à protéger également les données que tu y écris vu que tu vas les relire sur ton navigateur. :D
D'une part les risques sont faibles qu'une attaque réussisse de cette manière mais d'autre part tu es connecté en tant qu'admin: les conséquences d'une attaque réussie seraient plus lourdes pour ton site que lorsqu'il sert de "simple" relais à spam (avec un relais à spam, c'est l'hébergeur qui est avant tout concerné)


Message édité par phosphoreloaded le 28-05-2007 à 09:59:30
Reply

Marsh Posté le 29-05-2007 à 01:13:13    

Y a plus simple tu fais un form_mail.php!
 
tu créés un nouveau fichier dans ton bloc-notes
 
tu copies colles ce code :
 

Citation :

<?php
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn="#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
if(isset($_POST['submit'])){
 $erreur="";
 // Nettoyage des entrées
 while(list($var,$val)=each($_POST)){
 if(!is_array($val)){
  $$var=strip_tags($val);
 }else{
  while(list($arvar,$arval)=each($val)){
    $$var[$arvar]=strip_tags($arval);
   }
  }
 }
 // Formatage des entrées
 $f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_1)));
 $f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
 $f_3=strip_tags(trim($f_3));
 // Verification des champs
 if(strlen($f_1)<2){
  $erreur.="<li><span class='txterror'>Le champ « Prénom » est vide ou incomplet.</span>";
  $errf_1=1;
 }
 if(strlen($f_2)<2){
  $erreur.="<li><span class='txterror'>Le champ « Nom » est vide ou incomplet.</span>";
  $errf_2=1;
 }
 if(strlen($f_3)<2){
  $erreur.="<li><span class='txterror'>Le champ « Email » est vide ou incomplet.</span>";
  $errf_3=1;
 }else{
  if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
  '@'.
  '[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
  '[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
  $f_3)){
   $erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
   $errf_3=1;
  }
 }
 if(strlen($f_4)<2){
  $erreur.="<li><span class='txterror'>Le champ « Message » est vide ou incomplet.</span>";
  $errf_4=1;
 }
 if($erreur=="" ){
  // Création du message
  $titre="Message de votre site internet";
  $tete="From:www.monnomdedomaine.fr\n";//Indique l'url de ton site
  $corps.="Prénom : ".$f_1."\n";
  $corps.="Nom : ".$f_2."\n";
  $corps.="Email : ".$f_3."\n";
  $corps.="Message : ".$f_4."\n";
  if(mail("monemail@monnomdedomaine.fr", $titre, stripslashes($corps), $tete)){//indique ton adresse email à la place
   $ok_mail="true";
  }else{
   $erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
  }
 }
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Le titre de ta Page</title>
<style type="text/css" media="screen"><!--Là en dessous tu changes ce qui va pas, les couleurs surtout etc.
body {
 background-color: #7A7CA0;
}
INPUT { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
SELECT { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
TEXTAREA { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
.txterror { color: black; font-size: 11px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
.txtform { color: white; font-size: 12px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
--></style>
</head>
 
<body>
<? if($ok_mail=="true" ){ ?>
 <table width='100%' border='0' cellspacing='1' cellpadding='1'>
  <tr><td><span class='txtform'>Le message ci-dessous nous a bien été transmis, et nous vous en remercions.</span></td></tr>
  <tr><td> </td></tr>
  <tr><td><tt><?echo nl2br(stripslashes($corps));?></tt></td></tr>
  <tr><td> </td></tr>
  <tr><td><span class='txtform'>Nous allons y donner suite dans les meilleurs délais.<br>A bientôt.</span></td></tr>
 </table>
<? }else{ ?>
<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>
<table width='100%' border='0' cellspacing='1' cellpadding='1'>
<? if($erreur){ ?>
 <tr>
  <td colspan='2' bgcolor='red'>
   <span class='txterror'>
    <font color='white'>
     <b> ERREUR, votre message n'a pas été transmis</b>
    </font>
   </span>
  </td>
 </tr>
 <tr>
  <td colspan='2'>
   <ul><?echo$erreur?></ul>
  </td>
 </tr>
<?}?>
 
 <tr>
  <td align='right' width='30%'>
   <span class='txtform'>Prénom* :</span>
  </td>
  <td>
   <input type='text' style='width:200 <?if($errf_1==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_1' value='<?echo stripslashes($f_1);?>' size='24' border='0'>
  </td>
 </tr>
 <tr>
  <td align='right' width='30%'>
   <span class='txtform'>Nom* :</span>
  </td>
  <td>
   <input type='text' style='width:200 <?if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_2' value='<?echo stripslashes($f_2);?>' size='24' border='0'>
  </td>
 </tr>
 <tr>
  <td align='right' width='30%'>
   <span class='txtform'>Email* :</span>
  </td>
  <td>
   <input type='text' style='width:200 <?if($errf_3==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_3' value='<?echo stripslashes($f_3);?>' size='24' border='0'>
  </td>
 </tr>
 <tr>
  <td align='right' width='30%'>
   <span class='txtform'>Message* :</span>
  </td>
  <td>
   <textarea style='width:360 <?if($errf_4==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_4' rows='6' cols='40'><?echo$f_4?></textarea>
  </td>
 </tr>
 <tr>
  <td align='right' width='30%'></td>
  <td><input type='submit' name='submit' value='Envoyer' border='0'></td>
 </tr>
</table>
</form>
 
<? } ?>
</body>
</html>


 
Tout ce qui est en gras tu le changes et remplaces par tes données.
 
Tu enregistres en nom de ce que tu veux, mets en form_mail.php si tu veux!
 
Puis dans ta page index.html ou php tu mets un lien contact avec ton script php ,soit :
 

Citation :

   <!-- DEBUT DU SCRIPT --><a href="" onClick="window.open('http://www.monnomdedomaine.fr/form_mail.php','contact_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=1, copyhistory=0, menuBar=0, width=500, height=250');return(false)" class="contact" title="Contact"><span>contact</span></a><!-- FIN DU SCRIPT -->
 A mettre dans la balise qui contien ton texte CONTACT (paragraphe, tableau,, bloc...)


 
 
Tout ce qui est en gras tu le changes et remplaces par tes données.
 
Bien sur tu adaptes à ta page et ton design hein, changes les couleurs surtout si tu veux!
 
En fait ton visiteur quand il cliquera sur contact, il tombera sur une mini fenétre avec formulaire assez jolie, et quand il validera son email il aura un message comme qui c'est bien envoyé et que tu répondras etc. Il a plus qu'à fermer cette mini fenétre et il retombe sur ton site.


Message édité par stravoguine le 29-05-2007 à 01:20:24
Reply

Marsh Posté le 29-05-2007 à 13:49:36    

Olalalalala le code source :( C'est une catastrophe nucléaire

Reply

Marsh Posté le 29-05-2007 à 14:01:02    

Corriges le si tu as le temps. Pas parfait mais fonctionne impeccablement.

Reply

Marsh Posté le 29-05-2007 à 14:02:36    

Trop de choses à corriger ;)

Reply

Marsh Posté le 30-07-2007 à 09:04:51    

FlorentG a écrit :

Trop de choses à corriger ;)


Aurais-tu un bon exemple de code propre ?
 
Avec différents champs ainsi qu'une liste déroulante.
 
:jap:


---------------
Vidéo Concorde Air France | www.kiva.org
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed