envoi mail par formualire de contact (feuille php)

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 : envoi mail par formualire de contact (feuille php)

Re: envoi mail par formualire de contact (feuille php)

par moogli » 09 mars 2011, 01:24

pas de echo ou print ? c'est donc normal !


@+

Re: envoi mail par formualire de contact (feuille php)

par romain6545 » 09 mars 2011, 00:47

salut,

oui, ça m'envoie bien sur ma page .php, seulement celle-ci reste totalement vide.

j'ai refait mon fichier php plus simplement, mais toujours pareil: une page blanche s'affiche
<?php

/* Récupération des valeurs des champs du formulaire */
if (get_magic_quotes_gpc())
{
    $expediteur = stripslashes($_POST['email']); 
} 
else
{  
    $expediteur = $_POST['email']; 
}

/* Destinataire (votre adresse e-mail) */
$to = '[email protected]';
 
/* Construction du message */
$msg  = 'Bonjour,'."\r\n\r\n";
$msg .= 'E-mail pour la newsletter :'."\r\n";
$msg .= '***************************'."\r\n";
$msg .= $expediteur."\r\n";
$msg .= '***************************'."\r\n";
 
/* En-têtes de l'e-mail */
$headers = 'From: '.$expediteur.' <'.$expediteur.'>'."\r\n\r\n";
 
/* Envoi de l'e-mail */
mail($to, $msg, $headers);


/* verif si vide */ 
if (empty($expediteur))
{  
    $alert = 'Votre E-mail doit être renseignés';
} 
else
{  
    /* envoi de l'e-mail */
}   

/* On affiche l'erreur s'il y en a une */ 
if (!empty($alert))
{
    echo $alert;
}


/* Récupération des valeurs des champs du formulaire */
if (get_magic_quotes_gpc())
{   
    $expediteur = stripslashes(trim($_POST['email'])); 
} 
else
{  
    $expediteur = trim($_POST['email']); 
}


/* 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';   

/* On vérifie que le format de l'e-mail est correct */ 
if (!preg_match($regex_mail, $expediteur))
{  
    $alert = 'L adresse '.$expediteur.' n est pas valide'; 
} 
else
{  
    /* envoi de l'e-mail */
}


?>

Re: envoi mail par formualire de contact (feuille php)

par moogli » 08 mars 2011, 18:12

salut,

est ce que tu "arrive" bien sur le fichier newsletter.php ?

est ce que mail retourne true / false ?
etc

donne plus d'infos :)

@+

Re: envoi mail par formualire de contact (feuille php)

par romain6545 » 08 mars 2011, 08:43

Bonjour,

merci de ta réponse. Mais je pense que tu me parle de l'envoi d'une newsletter là, alors que moi je tente de faire un formulaire de contac avec seulement un champs mail pour ensuite envoyer des mails.

en html j'ai mis ça:
<form id="contact" method="post" action="php/newsletter.php">
		  	<label for="email">Recevez les promotions par e-mail:</label><input type="text" id="email" name="email" tabindex="2" value="Votre E-mail" onFocus="javascript:this.value=''" /> 
			<input type="submit" name="envoi" value="Envoi" />
			</form>
Mais mon php ne m'envoie pas le mail sur ma boite

Re: envoi mail par formualire de contact (feuille php)

par ZoiDrums » 07 mars 2011, 13:26

Déjà je dirai que ton envoi de mail n'a pas assez de paramètres...

Pour plus de clarté, ne positionne pas l'adresse du destinataire dans la variable $expediteur mais plutot dans la variable $to; ton adresse mail sera en revanche dans le header du mail.

$headers = 'From: TON NOM <[email protected]>'."\r\n";

ensuite la fonction mail() sera appelé comme ceci : mail($to, $subject, $msg, $headers);

Re: envoi mail par formualire de contact (feuille php)

par romain6545 » 07 mars 2011, 13:09

Bonjour,

je suis donc allé sur le site et ai suivit les conseils mais ça ne marche toujours pas.

voilà mon code, voyez vous qqchose qui bug? merci
<?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())
    {
      $expediteur	= stripslashes(trim($_POST['email']));
    }
    else
    {
      $expediteur	= trim($_POST['email']);
    }
    
    /* 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.site.com/')
    {
      header('Location: http://www.site.com/');
    }
    /* On vérifie que tous les champs sont remplis */
    elseif (empty($expediteur))
    {
      $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))
    {
        $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 = 'mon adresse mail';
      
        /* Construction du message */
        $msg  = 'Bonjour,'."\r\n\r\n";
        $msg .= 'Mail pour newsletter :'."\r\n";
        $msg .= '***************************'."\r\n";
        $msg .= $expediteur."\r\n";
        $msg .= '***************************'."\r\n";
        
        /* En-têtes de l'e-mail */
        $headers = 'From: '.$expediteur.' <'.$expediteur.'>'."\r\n\r\n";
        
        /* Envoi de l'e-mail */
        if (mail($expediteur))
        {
            $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);
    }
}
?>

Re: envoi mail par formualire de contact (feuille php)

par romain6545 » 20 févr. 2011, 21:33

Cool merci beaucoup!

Re: envoi mail par formualire de contact (feuille php)

par xTG » 20 févr. 2011, 21:28

Tu ne trouveras pas plus complet que cela : http://a-pellegrini.developpez.com/tutoriels/php/mail/

Je suis tombé sur moultes "tutoriaux" en cherchant, mais jamais il ne me viendrait à l'idée de les conseiller... (dont celui que tu as lu)
C'est là qu'on se rend compte que beaucoup de personnes pensent aider en rédigeant des tutoriaux sur des domaines qu'ils ne maîtrisent aucunement. :/

Re: envoi mail par formualire de contact (feuille php)

par romain6545 » 20 févr. 2011, 20:57

Où puis-je trouver un tuto bien fait qui explique cela?

Re: envoi mail par formualire de contact (feuille php)

par xTG » 20 févr. 2011, 17:46

Pourquoi ne pas plutôt partir d'un exemple de la documentation de la fonction mail() ?
Car il est certain que c'est parfois utopique de prendre des scripts qu'on ne comprend pas pour les modifier.

envoi mail par formualire de contact (feuille php)

par romain6545 » 20 févr. 2011, 16:57

Bonjour,

voilà je voudrais mettre en place un petit formulaire demandant seulement l'email (pour après envoyer des newsletter)
seulement j'ai récupéré le script pour un formulaire normal et vu que je suis une bille enphp je n'arrive pas à le customiser.

si vous pouviezme donner un petit coup de pouce ça serait très sympa! Merci d'avance

Voilà mon code:

Code : Tout sélectionner

<?php /* ******************************************************************************************** CONFIGURATION ******************************************************************************************** */ // destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule $destinataire = '[email protected]'; // copie ? (envoie une copie au visiteur) $copie = 'oui'; // 'oui' ou 'non' // Messages de confirmation du mail $message_envoye = "<p> Votre message a bien été envoyé</p> <p><a href=\"../index.html\"> Retour au site</a>.</p>"; $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP. <p><a href=\"../index.html\"> Retour au site</a>.</p>"; // Messages d'erreur du formulaire $message_erreur_formulaire = "Vous devez d'abord <a href=\"../index.html\">envoyer le formulaire</a>."; $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur."; /* ******************************************************************************************** FIN DE LA CONFIGURATION ******************************************************************************************** */ // on teste si le formulaire a été soumis if (!isset($_POST['envoi'])) { // formulaire non envoyé echo '<p>'.$message_erreur_formulaire.'</p>'."\n"; } else { /* * cette fonction sert à nettoyer et enregistrer un texte */ function Rec($text) { $text = trim($text); // delete white spaces after & before text if (1 === get_magic_quotes_gpc()) { $stripslashes = create_function('$txt', 'return stripslashes($txt);'); } else { $stripslashes = create_function('$txt', 'return $txt;'); } // magic quotes ? $text = $stripslashes($text); $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well $text = nl2br($text); return $text; }; /* * Cette fonction sert à vérifier la syntaxe d'un email */ function IsEmail($email) { $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$"; return (eregi($pattern,$email)) ? true : false; }; // formulaire envoyé, on récupère tous les champs. $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; $email = (isset($_POST['email'])) ? Rec($_POST['email']) : ''; $objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : ''; $message = (isset($_POST['message'])) ? Rec($_POST['message']) : ''; // On va vérifier les variables et l'email ... $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré if (($nom != '') && ($email != '') && ($objet != '') && ($message != '')) { // les 4 variables sont remplies, on génère puis envoie le mail $headers = 'From: '.$nom.' <'.$email.'>' . "\r\n"; // envoyer une copie au visiteur ? if ($copie == 'oui') { $cible = $destinataire.','.$email; } else { $cible = $destinataire; }; // Remplacement de certains caractères spéciaux $message = str_replace("'","'",$message); $message = str_replace("&#8217;","'",$message); $message = str_replace(""",'"',$message); $message = str_replace('<br>','',$message); $message = str_replace('<br />','',$message); $message = str_replace("<","<",$message); $message = str_replace(">",">",$message); $message = str_replace("&","&",$message); // Envoi du mail if (mail($cible, $objet, $message, $headers)) { echo '<p>'.$message_envoye.'</p>'."\n"; } else { echo '<p>'.$message_non_envoye.'</p>'."\n"; }; } else { // une des 3 variables (ou plus) est vide ... echo '<p>'.$message_formulaire_invalide.' <a href="../index.html">Retour au formulaire</a></p>'."\n"; }; }; // fin du if (!isset($_POST['envoi'])) ?>