Page 1 sur 2

problème formulaire / mail

Posté : 21 mai 2011, 18:01
par marjo
Bonjour !
Je viens sur ce forum car j'ai besoin d'aide.
je suis en train de créer mon premier site en html/css pour esperer rentrer en formation bientot (on m'a demander ça comme un test)
On ne m'à pas demander d'utiliser le PHP mais j'en ai besoin pour créer mon formulaire de contact. celui ci est finit mais je n'arrive pas à faire en sorte que lorsque l'on clique sur "soumettre" cela envoie sur mon mail.

voici mon code html au niveau de mon formulaire :

Code : Tout sélectionner

<div id="contact"><!--CORPS--> <p class="formulaire"> <form method="post" action="traitement.php"> <p><select name="pays" id="pays" tabindex="10"> <option value="M.">M.</option> <option value="Mme">Mme</option> <option value="Mlle">Melle</option> </select></p> <p><label for="Nom">Nom :</label><br /> <input type="text" name="Nom" tabindex="20" /></p> <p><label for="Prenom">Prenom :</label><br /> <input type="text" name="Prenom" tabindex="30" /></p> <p><label for="Mail">Mail :</label><br /> <input type="text" name="Mail" tabindex="40"/></p> <p><label for="message">Votre Message :</label><br /> <textarea type="text" name="message" tabindex="50"></textarea></p> <input type="submit" /> </form> </p> </div>
et voici mon code php :

Code : Tout sélectionner

<?php $TO = "[email protected]"; $h = "From: " . $TO; $message = ""; while (list($key, $val) = each($HTTP_POST_VARS)) { $message .= "$key : $val\n"; } mail($TO, $subject, $message, $h); Header("Location: http://<contact.html>"); ?>
Merci d'avance pour votre aide et votre réponse rapide.
c'est assez urgent.

mille merci.
marjo.

Re: problème formulaire / mail

Posté : 21 mai 2011, 18:15
par xTG
Pas besoin de PHP pour envoyer un email.
Un formulaire peut prendre en paramètre action un mailto:email

Re: problème formulaire / mail

Posté : 21 mai 2011, 18:21
par marjo
sur le site du zéro ils disent pourtant que cela n'est pas possible et j'ai lu sur un forum que la fonction "mailto" ne marchez pas vraiment.
est-ce vrai ? si non comment et ou la met on ?
merci !

Re: problème formulaire / mail

Posté : 21 mai 2011, 19:46
par marjo
Re !
je viens d'essayer ton système avec "mailto"
ce n'est pas ça que je veut moi je veut que les champs de mon formulaire : "M., Mme, Melle" / "nom" / "prenom" / "mail" / "message"
et lorsqu'on clique sur "soumettre" je veut que le tout soit envoyé sur mon mail.

car le mailto ne fait que ouvrir une boîte de mail genre "outlook" et ne rapporte pas les donné du formulaire.

merci pour votre réponse ;)

Re: problème formulaire / mail

Posté : 22 mai 2011, 10:08
par xTG
Un formulaire en mailto rappatrie bien les données du formulaire dans le mail.
Mais cela ne permet pas de faire de mise en forme.

Essayes de rajouter un \r\n à la fin de ta variable d'header du mail.
Et enlèves le header("Location pour voir s'il n'y a pas d'erreur PHP.
Puis testes le retour de la fonction mail() pour vérifier que l'email est bien transmis à ton serveur SMTP.

Re: problème formulaire / mail

Posté : 22 mai 2011, 13:05
par marjorie laforest
Un formulaire en mailto rappatrie bien les données du formulaire dans le mail.
Mais cela ne permet pas de faire de mise en forme.

Essayes de rajouter un \r\n à la fin de ta variable d'header du mail.
Et enlèves le header("Location pour voir s'il n'y a pas d'erreur PHP.
Puis testes le retour de la fonction mail() pour vérifier que l'email est bien transmis à ton serveur SMTP.

merci mais je n'ai pas compris ce que tu entend par le "r"
mais en faite pour je ne veut pas que la boite mail "outlook" s'ouvre je veut juste que lorsque le visiteur clique sur "soumettre" ça s'envoie directement à mon mail.

merci de me noter le php exacte que je devrais avoir car je n'y connais rien en php.
merci d'avance.
marjo

Re: problème formulaire / mail

Posté : 22 mai 2011, 20:07
par xTG
Je parlais d'essayer ceci :
$h  = "From: $TO\r\n";

Re: problème formulaire / mail

Posté : 22 mai 2011, 20:08
par Skw33d
Tiens un petit tutoriel que j'ai suivi quand j'ai commencé à faire du PHP :

http://www.grafikart.fr/tutoriels/formulaire-php-21

Tout y est expliqué pour faire ce que tu recherches.

Re: problème formulaire / mail

Posté : 23 mai 2011, 12:56
par marjo
SKW33D,

merci pour le tuto,
j'ai essayer mais hélas ça ne marche pas. peut tu me dire si je me suis trompé dans le code ? c'est possible car je ne voyait pas très bien les signes utilisé sur la vidéo, l'image est un peu flou malheureusement
<?php

if(isset($_POST) && isset($_POST['civilite']) && isset($_POST['nom'] && isset($_POST['prenom'] && isset($_POST['mail'] && isset($_POST['message'])) {
	extract ($_POST);
	if (!empty(&civilite) && !empty(&nom) && !empty(&prenom) && !empty(&mail) !empty(&message)) {
		$message=str_replace("\'",'","'",$message);
		$destinataire="[email protected]";
		$sujet="Formulaire de contact";
		$msg="Un nouveau message est arrivé \n
		Civilite : $civilite \n
		Nom : $nom \n
		Prenom : $prenom \n
		Mail : $mail \n
		Message : $message";
		$entete="From: $nom $prenom \n Reply-to: $mail";
		mail($destinataire, $sujet, $msg, $entete);
		echo "Le mail a bien été envoyé."
    }
    else{
    	 echo "Vous n'avez pas rempli tout les champs";
    }
}
?>

Re: problème formulaire / mail

Posté : 23 mai 2011, 12:59
par xTG
Quand je vois le code que tu nous ponds...
J'ai qu'un site qui me vient à l'esprit pour t'aider : http://phpdebutant.org/article118.php (lire tous les articles)

Re: problème formulaire / mail

Posté : 23 mai 2011, 13:30
par marjo
heu... j'ai rien pondue j'ai juste recopier ce qui avait dans le tuto.
je n'ai pas le temps d'apprendre le php à vrai dire je doit finir mon site demain ou mercredi au plus tard
je voudrais juste qu'on me donne le bon code. merci d'avance ;)

Re: problème formulaire / mail

Posté : 23 mai 2011, 13:31
par marjo
j'ai pour hebergeur voila.net
peut-être qu'il ne prennent pas en charge le php ? je ne sais pas ...
voici mon site pour que vous puissiez voir http://marjorie.laforest.voila.net/

Re: problème formulaire / mail

Posté : 24 mai 2011, 00:03
par moogli
salut,

Si tu souhaite que l'on te fasse le code, ce n'est pas le bon forum, il y en a un pour les demandes de code tout cuit.

ce que tu souhaite faire est assez simple, le dernier code fournit montre que tu ne respecte même pas la syntaxe des variables, ce qui fait que ton code ne risque pas de fonctionner.

@+

Re: problème formulaire / mail

Posté : 24 mai 2011, 10:47
par Jenn
Je suis dans le même cas que toi, as-tu trouvé une solution ? merci

Re: problème formulaire / mail

Posté : 24 mai 2011, 16:29
par Invité
salut,

Si tu souhaite que l'on te fasse le code, ce n'est pas le bon forum, il y en a un pour les demandes de code tout cuit.

ce que tu souhaite faire est assez simple, le dernier code fournit montre que tu ne respecte même pas la syntaxe des variables, ce qui fait que ton code ne risque pas de fonctionner.

@+
le dernier code fournit est un copier coller d'un code trouvé sur le net tout comme celui ci :
est-il bon ? car il ne fonctionne pas chez moi.
et puis même si on me donne pas le code "tout cuit" comme tu dit, la moindre des choses serait de me dire "la c'est pas bon parce que .... tu devrais essayer ça : ...."

parce que là les mots "syntaxe des variables" c'est du chinois pour moi.

jenn',
n'ont pas de solution pour le moment.
 
<?php
/* Si le formulaire est envoyé alors on fait les traitements */
if (isset($_POST['envoye']))
{
    /* Récupération des valeurs des champs du formulaire */
    if (get_magic_quotes_gpc())
    {
      $civilite		= stripslashes(trim($_POST['civilite']));
      $nom	     	= stripslashes(trim($_POST['nom']));
      $expediteur	= stripslashes(trim($_POST['email']));
      $sujet		= stripslashes(trim($_POST['sujet']));
      $message		= stripslashes(trim($_POST['message']));
    }
    else
    {
      $civilite		= trim($_POST['civilite']);
      $nom		    = trim($_POST['nom']);
      $expediteur	= trim($_POST['email']);
      $sujet		= trim($_POST['sujet']);
      $message		= trim($_POST['message']);
    }
    
    /* Expression régulière permettant de vérifier si le 
    * format d'une adresse e-mail est correct */
    $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
    
    /* Expression régulière permettant de vérifier qu'aucun 
    * en-tête n'est inséré dans nos champs */
    $regex_head = '/[\n\r]/';
    
    /* Si le formulaire n'est pas posté de notre site on renvoie 
    * vers la page d'accueil */
    if($_SERVER['HTTP_REFERER'] != 'http://www.marjorie.laforest.voila.net/traitement.php')
    {
      header('Location: http://marjorie.laforest.voila.net/');
    }
    /* On vérifie que tous les champs sont remplis */
    elseif (empty($civilite) 
           || empty($nom) 
           || empty($expediteur) 
           || empty($sujet) 
           || empty($message))
    {
      $alert = 'Tous les champs doivent être renseignés';
    }
    /* On vérifie que le format de l'e-mail est correct */
    elseif (!preg_match($regex_mail, $expediteur))
    {
      $alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
    }
    /* On vérifie qu'il n'y a aucun header dans les champs */
    elseif (preg_match($regex_head, $expediteur) 
            || preg_match($regex_head, $nom) 
            || preg_match($regex_head, $sujet))
    {
        $alert = 'En-têtes interdites dans les champs du formulaire';
    }
    /* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
    elseif (!isset($_COOKIE['sent']))
    {
        /* Destinataire (votre adresse e-mail) */
        $to = '[email protected]';
      
        /* Construction du message */
        $msg  = 'Bonjour,'."\r\n\r\n";
        $msg .= 'Ce mail a été envoyé depuis marjorie.laforest.voila.net par '.$civilite.' '.$nom."\r\n\r\n";
        $msg .= 'Voici le message qui vous est adressé :'."\r\n";
        $msg .= '***************************'."\r\n";
        $msg .= $message."\r\n";
        $msg .= '***************************'."\r\n";
        
        /* En-têtes de l'e-mail */
        $headers = 'From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
        
        /* Envoi de l'e-mail */
        if (mail($to, $sujet, $msg, $headers))
        {
            $alert = 'E-mail envoyé avec succès';
            
            /* On créé un cookie de courte durée (ici 120 secondes) pour éviter de 
            * renvoyer un mail en rafraichissant la page */
            setcookie("sent", "1", time() + 120);
            
            /* On détruit la variable $_POST */
            unset($_POST);
        }
        else
        {
            $alert = 'Erreur d\'envoi de l\'e-mail';
        }
          
    }
    /* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
    else
    {
        unset($_POST);
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="fr">
<head>
    <title>Contactez moi</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
 
<?php
if (!empty($alert))
{
    echo '<p style="color:red">'.$alert.'</p>';
}
?>
 
<form action="index.php" method="post">
    <p>
        <label for="civilite">Civilite :</label>
        <select id="civilite" name="civilite">
            <option 
                value="mr"
                <?php 
                    if (!isset($_POST['civilite']) || $_POST['civilite'] == 'mr')
                    {
                        echo ' selected="selected"';
                    }
                ?>
            >
                Monsieur
            </option>
            <option 
                value="mme"
                <?php 
                    if (isset($_POST['civilite']) && $_POST['civilite'] == 'mme')
                    {
                        echo ' selected="selected"';
                    }
                ?>
            >
                Madame
            </option>
            <option 
                value="mlle"
                <?php 
                    if (isset($_POST['civilite']) && $_POST['civilite'] == 'mlle')
                    {
                        echo ' selected="selected"';
                    }
                ?>
            >
                Mademoiselle
            </option>
        </select>
    </p>
    <p>
        <label for="nom">Nom/Prenom :</label>
        <input type="text" id="nom" name="nom" 
        	value="<?php echo (isset($_POST['nom'])) ? $nom : '' ?>" 
        />
    </p>
    <p>
        <label for="email">E-mail :</label>
        <input type="text" id="email" name="email" 
        	value="<?php echo (isset($_POST['email'])) ? $expediteur : '' ?>"
        />
    </p>
    <p>
        <label for="sujet">Sujet :</label>
        <input type="text" id="sujet" name="sujet" 
        	value="<?php echo (isset($_POST['sujet'])) ? $sujet : '' ?>"
        />
    </p>
    <p>
        <label for="message">Message :</label>
        <textarea id="message" name="message" cols="40" rows="4">
			<?php echo (isset($_POST['message'])) ? $message : '' ?>
        </textarea>
    </p>
    <p>
        <input type="submit" name="envoye" value="Envoyer" />
    </p>
</form>
 
</body>
</html>