Formulaire - Gros Soucis pour récuperer les données !

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 : Formulaire - Gros Soucis pour récuperer les données !

par Aureusms » 30 janv. 2009, 17:18

Le boundary est une frontière pour constitué l'email. Généralement on le créé avec un md5(texte-aléatoire)) histoire qu'il soit rarement retrouvé dans ce même email.
Aussi tu as souvent une structure des emails de la sorte :
  • from, to, ... liste des coordonnées expéditeurs, destinataires
    Boundary
    message en texte
    boundary
    message en HTML
    boundary
    pièce jointe 1
    boundary
    pièce jointe 2
    ...
Donc dans ton exemple, si tu reste en texte, il n'est pas nécessaire de mettre le dernier boundary mais cela gâche en rien l'email...

Pour ton problème, dans ton exemple ajoute simplement un \n pour sauter une ligne
$message_txt .="Taille : $taille \n\n"; 

par yank » 30 janv. 2009, 10:30

Je pense que $message n'est pas vide lors de la première ligne. Et si tu met $meesage_text avant $message ?
$message_txt = "" . $boundary . "\n"; 
    $message_txt .="Civilite : $genre \n";
    $message_txt .="Nom : $nom \n";
    $message_txt .="Prenom : $prenom \n";
    $message_txt .="Adresse : $adresse \n";
    $message_txt .="Telephone : $tel \n";
    $message_txt .="Email : $email_expediteur \n";
    $message_txt .="Devis ou Commande : $choice \n";
    $message_txt .="Modele : $modele \n";
    $message_txt .="Quantite : $quantite \n";
    $message_txt .="Taille : $taille \n";
    $message_txt .= $message; 
    $message_txt .= "" . $boundary . "\n";     
    
    if (@mail($email_webmaster,$_POST["nom"],$message_txt,$entete)){ 
Salut,

Merci effectivement ça fonctionne.

Voila le bout de code au final :
    $message_txt .="Civilite : $genre \n";
    $message_txt .="Nom : $nom \n";
    $message_txt .="Prenom : $prenom \n";
    $message_txt .="Adresse : $adresse \n";
    $message_txt .="Telephone : $tel \n";
    $message_txt .="Email : $email_expediteur \n";
    $message_txt .="Devis ou Commande : $choice \n";
    $message_txt .="Modele : $modele \n";
    $message_txt .="Quantite : $quantite \n";
    $message_txt .="Taille : $taille \n";
    $message_txt .="Message : $message \n";
    
    if (@mail($email_webmaster,$_POST["nom"],$message_txt,$entete)){ 
Je dirais que la c'est presque parfait pour ma part :D

Je me demande juste si c'est possible de faire un saut de ligne entre les coordonnées et le "message" dans le mail, mais la je cherche la pti bête :lol:

Sinon, à quoi servait ceci :
    $message_txt .= "" . $boundary . "\n"; 
Puisque je les avait mis 2 fois mais au final je les retire et tout fonctionne quand même, en gros ça n'avait pas d'intérêt à être la ?

Merci :wink:

par Aureusms » 29 janv. 2009, 20:38

Je pense que $message n'est pas vide lors de la première ligne. Et si tu met $meesage_text avant $message ?
$message_txt = "" . $boundary . "\n"; 
    $message_txt .="Civilite : $genre \n";
    $message_txt .="Nom : $nom \n";
    $message_txt .="Prenom : $prenom \n";
    $message_txt .="Adresse : $adresse \n";
    $message_txt .="Telephone : $tel \n";
    $message_txt .="Email : $email_expediteur \n";
    $message_txt .="Devis ou Commande : $choice \n";
    $message_txt .="Modele : $modele \n";
    $message_txt .="Quantite : $quantite \n";
    $message_txt .="Taille : $taille \n";
    $message_txt .= $message; 
    $message_txt .= "" . $boundary . "\n";     
    
    if (@mail($email_webmaster,$_POST["nom"],$message_txt,$entete)){ 

par yank » 29 janv. 2009, 15:10

Salut,

Alors en mixant (la dernière partie de php) j'ai réussi à faire en sorte que tout fonctionne ^^

Voila ce que je reçois dans ma boite mail :
Hello,

Ceci est un test ^^

Civilite : monsieur
Nom : Mon nom
Prenom : Mon prénom
Adresse : Mon adresse
Telephone : 0600000000
Email : [email protected]
Devis ou Commande : devis
Modele : Modèle 200
Quantite : 3
Taille : m
Je le reçois en mode "texte simple" j'ai laissé de côté le mode "html" parce que ça n'est pas vraiment concluant [confus]

Par contre il a y encore un truc que je ne pige pas, pourquoi le contenu de ma case "message" se retrouve au dessus de toutes les autres données ... je n'arrive pas à trouver la solution

Voila la portion de code incriminée !
<?php
}
else {		
		// le formulaire a été soumis sans erreur, on envoie le mail
        $entete = "From: ".$email_expediteur." <".$email_expediteur.">\n";
		
	$message .= "" . $boundary . "\n"; 
	$message_txt .="Civilite : $genre \n";
	$message_txt .="Nom : $nom \n";
	$message_txt .="Prenom : $prenom \n";
	$message_txt .="Adresse : $adresse \n";
	$message_txt .="Telephone : $tel \n";
	$message_txt .="Email : $email_expediteur \n";
	$message_txt .="Devis ou Commande : $choice \n";
	$message_txt .="Modele : $modele \n";
	$message_txt .="Quantite : $quantite \n";
	$message_txt .="Taille : $taille \n";
	$message .= "" . $boundary . "\n"; 	
	$message .= $message_txt; 
	
	
        if (@mail($email_webmaster,$_POST["nom"],$message,$entete)){
		
// mail envoyé
                echo "<p>Votre message a été envoyé.<br/>\n";
                echo "<a href=\"" . $_SERVER["PHP_SELF"] . "?page=mail\">Envoyer un autre message...</p></a>\n";
        }
        else {
// erreur lors de l'envoi du mail
                echo "<p><strong>Un problème s'est produit lors de l'envoi du message.</strong></p>\n";
                echo "<a href=\"" . $_SERVER["PHP_SELF"] . "?page=mail\"><p>Envoyer un autre message...</p></a>\n";
        }
}
?>
Vous savez comment faire ? :P [/php]

par zeus » 28 janv. 2009, 21:51

La documentation te donnera toutes les réponses que tu peux rechercher : http://fr2.php.net/print_r

Regarde particulièrement les exemples ;)

par remy42 » 28 janv. 2009, 21:02

bonjour, cool que ton pb soit résolu

Une question a quoi sert

<pre> 
<?php print_r ($_POST); ?> 
</pre>
J'ai vu ca plus haut dans le sujet et a quelque endroit sur le forum alors je pose la question ici pour pas polluer le forum

merci d'avance

par yank » 28 janv. 2009, 17:29

Je te conseille de lire ceci : http://www.vulgarisation-informatique.com/mail.php

Tu pourras recevoir un mail tout beau ;)
:D

par charabia » 28 janv. 2009, 17:27

Je te conseille de lire ceci : http://www.vulgarisation-informatique.com/mail.php

Tu pourras recevoir un mail tout beau ;)

par yank » 28 janv. 2009, 17:13

J'ai réussi à tout recevoir en ajoutant ça dans la dernière portion de mon code php :
<?php
}
else {
		
		// le formulaire a été soumis sans erreur, on envoie le mail

        $entete = "From: ".$email_expediteur." <".$email_expediteur.">\n";

		$entete .= "Reply-to : $email_webmaster <$email_webmaster>\n";

		$entete .= "$genre\n";
		$entete .= "$nom\n";
        $entete .= "$prenom\n";
		$entete .= "$adresse\n";
		$entete .= "$tel\n";
		$entete .= "$email_expediteur\n";	
		$entete .= "$choice\n";
		$entete .= "$modele\n";
		$entete .= "$quantite\n";
		$entete .= "$taille\n";
	
		$message = "$message\n";
	
        if (@mail($email_webmaster,$_POST["nom"],$message,$entete)){
		
// mail envoyé
                echo "<p>Votre message a été envoyé.<br/>\n";
                echo "<a href=\"" . $_SERVER["PHP_SELF"] . "?page=mail\">Envoyer un autre message...</p></a>\n";
        }
        else {
// erreur lors de l'envoi du mail
                echo "<p><strong>Un problème s'est produit lors de l'envoi du message.</strong></p>\n";
                echo "<a href=\"" . $_SERVER["PHP_SELF"] . "?page=mail\"><p>Envoyer un autre message...</p></a>\n";
        }
}
?>
C'est cool !:D

Vous voyez des erreurs ?

Bon les données reçus dans la messagerie s'affiche un peu à la barbare mais c'est mieux que rien ...

par Aureusms » 28 janv. 2009, 16:52

Si tu mets un
<pre>
<?php print_r ($_POST); ?>
</pre>
Tu obtiens quoi ?

par charabia » 28 janv. 2009, 16:30

Je n'ai pas lu tout le code mais en parcourant rapidement il ne me semble pas avoir vu la donnée "titre" que tu tentes de récupérer.

Formulaire - Gros Soucis pour récuperer les données !

par yank » 28 janv. 2009, 14:19

Voila, mon formulaire fonctionnait "parfaitement" jusqu'au moment ou je le teste et je m'aperçois que lors de l'envoi, et bien je ne reçois que le contenu du "message" et rien d'autres ... donc en gros il ne me sert à rien !

Je cherche comment faire mais ce n'est pas si simple ... si quelqu'un veut bien me filer un pti coup de pouce ! :)

En gros evidemment j'aimerais recevoir les données de toutes les cases ... et pas seulement le contenu du message.

Voici mon code :

<?php

// Dans la ligne qui suit l'adresse email à laquelle les messages devront être envoyés

$email_webmaster = "[email protected]";

// === traitement des données du formulaire ============================================================

if (isset($_POST["envoyer"])){

// le formulaire a été soumis

        $etat = "erreur";

// Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur

// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---

		if (isset($_POST["nom"])) {

                 $_POST["nom"]=trim(stripslashes($_POST["nom"]));

        }

		if (isset($_POST["prenom"])) {

                 $_POST["prenom"]=trim(stripslashes($_POST["prenom"]));

        }

		if (isset($_POST["adresse"])) {

                 $_POST["adresse"]=trim(stripslashes($_POST["adresse"]));

        }

		if (isset($_POST["tel"])) {

                 $_POST["tel"]=trim(stripslashes($_POST["tel"]));

        }

        if (isset($_POST["email_expediteur"])) {

                 $_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"]));

        }

        if (isset($_POST["message"])) {

                 $_POST["message"]=trim(stripslashes($_POST["message"]));

        }

        // --- test de la validité des champs saisis ---

       

		if (empty($_POST["nom"])) {

// le nom est vide

                 $erreur="Saisissez votre nom...";

        }

		elseif (empty($_POST["prenom"])) {

// le prenom est vide

                 $erreur="Saisissez votre prénom...";

        }

		elseif (empty($_POST["adresse"])) {

// l'adresse est vide

                 $erreur="Saisissez votre adresse...";

        }

		elseif (empty($_POST["tel"])) {

// il manque le tel de l'expéditeur

                 $erreur="Saisissez votre numéro de téléphone...";

        }

		elseif (!eregi("[0-9]",$_POST["tel"])){   

// le tel n'est pas valide

                 $erreur="Votre numéro de téléphone n'est pas valide...";

        }

		elseif (empty($_POST["email_expediteur"])) {

// il manque l'email de l'expéditeur

                 $erreur="Saisissez votre adresse email...";

        }

        elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"])){

// l'adresse e-mail n'est pas valide

                 $erreur="Votre adresse e-mail n'est pas valide...";

        }

		elseif (empty($_POST["message"])) {

// le message est vide

                 $erreur="Saisissez votre message...";

        }

        else {

// --- tous les champs sont correctement remplis: on pourra envoyer le mail ---

                 $etat="ok";

        }

}

else {

// --- le formulaire n'a pas été soumis ---

           $etat="attente";

}

// === fin de traitement des données du formulaire =======================================================

?>

<h2>Formulaire E-mail</h2>

<p>Contactez moi en remplissant le formulaire* ci-dessous pour m'envoyer vos demande de devis ou vos commandes</p>

<?php

if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur

         if ($etat=="erreur"){

//le formulaire a été soumis avec une erreur

                         echo "<p><strong>".$erreur."</strong></p>\n";

// afficher le message d'erreur

         }

?>

<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>?page=mail">



<div class="form1">

<fieldset>



<p>

<label for="mr"><input type="radio" name="genre" value="monsieur" id="monsieur" />Mr</label>

<label for="mme"><input type="radio" name="genre" value="madame" id="madame" />Mme</label>

<label for="mlle"><input type="radio" name="genre" value="mademoiselle" id="mademoiselle" />Mlle</label>

</p>



<p>

<label for="nom">Nom : </label><span style="color: #cc0000;">*</span><br />

<input type="text" size="20" maxlength="50" name="nom" id="nom" value="<?php

if (!empty($_POST["nom"])) {

// le titre du message a été saisi: le réafficher

echo htmlspecialchars($_POST["nom"],ENT_QUOTES);

}

?>" />

</p>



<p>

<label for="prenom">Prénom : </label><span style="color: #cc0000;">*</span><br />

<input type="text" size="20" maxlength="50" name="prenom" id="prenom" value="<?php

if (!empty($_POST["prenom"])) {

// le titre du message a été saisi: le réafficher

echo htmlspecialchars($_POST["prenom"],ENT_QUOTES);

}

?>" />

</p>



<p>

<label for="adresse">Adresse : </label><span style="color: #cc0000;">*</span><br />

<input type="text" size="20" maxlength="125" name="adresse" id="adresse" value="<?php

if (!empty($_POST["adresse"])) {

// le titre du message a été saisi: le réafficher

echo htmlspecialchars($_POST["adresse"],ENT_QUOTES);

}

?>" />

</p>



<p>

<label for="tel">Téléphone : </label><span style="color: #cc0000;">*</span><br />

<input type="text" size="20" maxlength="50" name="tel" id="tel" value="<?php

if (!empty($_POST["tel"])) {

// le titre du message a été saisi: le réafficher

echo htmlspecialchars($_POST["tel"],ENT_QUOTES);

}

?>" />

</p>



<p>

<label for="email_expediteur">Votre mail : </label><span style="color: #cc0000;">*</span><br />

<input type="text" size="20" maxlength="50" name="email_expediteur" id="email_expediteur" value="<?php

if (!empty($_POST["email_expediteur"])) {

// l'adresse email de l'expéditeur a été saisie: la réafficher

echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);

}

?>" />

</p>



</fieldset>



</div>



<div class="form2">



<fieldset>



<p>

<label for="devis"><input type="radio" name="choice" value="devis" id="devis" />Devis</label>

<label for="commande"><input type="radio" name="choice" value="commande" id="commande" />Commande</label>

</p>



<p><label for="modele">Modèle :</label><br />

<input name="modele" type="text" size="20" maxlength="50" />

</p>



<p><label for="quantite">Quantité :</label><br />

<select name="quantite">

<option value="choix" selected="selected">Choisissez la quantité</option>

<option value="1">1</option>

<option value="2">2</option>

<option value="3">3</option>

<option value="4">4</option>

<option value="5">5</option>

<option value="5">6</option>

<option value="5">7</option>

<option value="5">8</option>

<option value="5">9</option>

<option value="5">10</option>

</select>

</p>



<p><label for="taille">Taille :</label><br />

<select name="taille">

<option value="choix" selected="selected">Choisissez une taille</option>

<option value="s">S</option>

<option value="m">M</option>

<option value="l">L</option>

<option value="xl">XL</option>

<option value="xxl">XXL</option>

<option value="xxxl">XXXL</option>

</select>

</p>



<p>

<label for="message">Message : </label><span style="color: #cc0000;">*</span><br />

<textarea name="message" id="message" cols="30" rows="3"><?php

if (isset($_POST["message"])) {

// le message a été saisi: le réafficher

echo htmlspecialchars($_POST["message"],ENT_QUOTES);

}

?>

</textarea>

</p>



</fieldset></div>



<p><div class="envoyer"><input type="hidden" name="envoyer" value="envoyer" /><input type="image" name="envoyer" src="visuels/images/envoyer.png" width="105" height="45" alt="Validation du formulaire" value="envoyer" />

<span style="visibility: hidden;"><input type="submit" value="envoyer" title="Validation du formulaire" /></span></div></p></form>



<?php

}

else {

// le formulaire a été soumis sans erreur, on envoie le mail

        $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";

        $entete .= "MIME-Version: 1.0";

        if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete)){

// mail envoyé

                echo "<p>Votre message a été envoyé.<br/>\n";

                echo "<a href=\"" . $_SERVER["PHP_SELF"] . "?page=mail\">Envoyer un autre message...</p></a>\n";

        }

        else {

// erreur lors de l'envoi du mail

                echo "<p><strong>Un problème s'est produit lors de l'envoi du message.</strong></p>\n";

                echo "<a href=\"" . $_SERVER["PHP_SELF"] . "?page=mail\"><p>Envoyer un autre message...</p></a>\n";

        }

}

?>

Ps : je pense que mon problème se situe dans la dernière portion de code php tout en bas ..., j'ai déjà essayé pas mal de solutions mais je n'y parviens pas ...

Merci à vous !