Formulaire php

ainfographie Messages postés 7 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 3 février 2012 - 2 févr. 2012 à 18:53
ainfographie Messages postés 7 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 3 février 2012 - 3 févr. 2012 à 10:57
Bonjour à tous, je viens vers vous car je désespère. J'ai créé un formulaire de contact, pour mon site, j'aimerais recevoir les infos dans ma boîte mail...mais quand j'essaie de m’envoyer le fameux formulaire je ne reçois aucun mail. J'ai demandé à mon hébergeur s’il supportait le php et oui. Je ne trouve pas le problème. Pouvez vous m'aider s'il vous plait.

Voici mon code contact:


Contactez moi






Civilité :


>
Madame

12 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 févr. 2012 à 19:36
Bonjour,

Certains hébergeurs désactivent la fonction mail, à voir concernant le tien.

Que donne le déroulement, si tu fais des "echo" pour voir par où passe ton code ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
ainfographie Messages postés 7 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 3 février 2012
3 févr. 2012 à 08:36
Bonjour NHenry et merci à toi pour ta réponse, j'ai exposé mon problème à mon hébergeur et j’attends des nouvelles. Et je ne comprend pas ta question, désolée je suis novice. Que veux tu dire par déroulement? Pou infos, mon site est dans li fichier "www" de wamp, et fonctionne (à part bien sur l'envoie des mails). Je ne sais pas si je suis bien claire. merci pour tes futurs réponses.
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
3 févr. 2012 à 09:43
bonjour

j'ai testé ton script ainsi
il fonctionne donc vérifie bien ton hébergeur ...
j'ai remarqué que tu répètes mail() dans la condition et le corps. Si le test est concluant pas la peine de répéter l'action ...

form.php



Contactez moi






Civilité :


>
Madame

0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
3 févr. 2012 à 09:50
ça c'est pas clair

if($_SERVER['HTTP_REFERER'] != 'http://www.blablabla.com/send_email.php')
{
header('Location: http://www.blablabla.com/');
}


remarque mais un truc toujours faux ici c'est peut être ici le bug

if(1 === 2)
{
// header('Location: http://www.blablabla.com/');
}

...

puis si ça fonctionne corrige cette condition

si tu mets
echo $_SERVER['HTTP_REFERER']; en début de cible.php tu veras sa valeur pour pouvoir débugger





Bonne programmation !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ainfographie Messages postés 7 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 3 février 2012
3 févr. 2012 à 10:02
bonjour code57, se que je comprend dans ce que tu me dis, c'est qu'il faut que je remplace if($_SERVER['HTTP_REFERER'] != 'http://www.blablabla.com/send_email.php')
{
header('Location: http://www.blablabla.com/');
}

par :
if(1 === 2)
{
// header('Location: http://www.blablabla.com/');
}



et que je mette : echo $_SERVER['HTTP_REFERER'] en debut du php! 'est bien ça???
Et par contre j'ai fait les modifs que tu m'as cité ci-dessus et voilà ce qu ça donne : Erreur d'envoi de l'e-mail

voilà mon code modifié :
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
3 févr. 2012 à 10:13
essaie ainsi sans cette condition

corrige
$webmaster='wwwwwwwwwwwwwwwwwwwww@free.fr';
par ton addresse ...

<?php
//pour l'instant inutile
//echo $_SERVER['HTTP_REFERER'];
//echo '<hr>';

/* 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 */
    
    
     /*la j'ai desactivé la condition*/
    
    
    /*
    if($_SERVER['HTTP_REFERER'] != 'http://www.blablabla.com/send_email.php')
    {
    header('Location: http://www.blablabla.com/');
    }
    */
   
       
    
    /* On vérifie que tous les champs sont remplis */
    if (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) */
        
        $webmaster='wwwwwwwwwwwwwwwwwwwww@free.fr';
        
        mail($webmaster,'Bonjour','Message reçu');
      
        /* Construction du message */
        $msg  = 'Bonjour,'."\r\n\r\n";
        $msg .= 'Ce mail a été envoyé depuis blablabla.com 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($expediteur,$sujet,$msg,$headers))
        {
            $alert = 'E-mail envoyé avec succès';
            //mail($expediteur, $sujet, $msg, $headers);//j'envoie le mail
            /* 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);
    }
}

echo $alert = isset($alert) ? $alert : null;

?>




Bonne programmation !
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
3 févr. 2012 à 10:16
$_SERVER['HTTP_REFERER'] est l'adresse du formulaire qui pointe sur cible.php

Bonne programmation !
0
ainfographie Messages postés 7 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 3 février 2012
3 févr. 2012 à 10:22
Alors je viens de faire la modif, il me mets "email envoyé avec succès", j'attends donc le mail. Merci,ça marche sauf que je reçois le mail sur une autre adresse mail, celle d'orange, alors que je la veux sur gmail... Je ne comprend pas trop comment il peux m'envoyer ça sur orange alors que l'adresse que 'indique est celle de gmail???? et mon code est le suivant :
<?php
//pour l'instant inutile
//echo $_SERVER['HTTP_REFERER'];
//echo '<hr>';

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


/*la j'ai desactivé la condition*/


/*
if($_SERVER['HTTP_REFERER'] != 'http://www.blablabla.com/send_email.php')
{
header('Location: http://www.blablabla.com/');
}
*/



/* On vérifie que tous les champs sont remplis */
if (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) */

$webmaster='Ainfographie80@gmail.com';

mail($webmaster,'Bonjour','Message reçu');

/* Construction du message */
$msg = 'Bonjour,'."\r\n\r\n";
$msg .= 'Ce mail a été envoyé depuis blablabla.com 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($expediteur,$sujet,$msg,$headers))
{
$alert = 'E-mail envoyé avec succès';
//mail($expediteur, $sujet, $msg, $headers);//j'envoie le mail
/* 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);
}
}

echo $alert = isset($alert) ? $alert : null;

?>
0
ainfographie Messages postés 7 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 3 février 2012
3 févr. 2012 à 10:25
et sur ma boite gmail j'ai
CGI-Mailer cgi-mailer@kundenserver.de

10:18 (Il y a 7 minutes)

à moi
Message reçu

sans message....
0
ainfographie Messages postés 7 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 3 février 2012
3 févr. 2012 à 10:34
Donc en fait si je comprend bien, il fait le truc à l'envers, il envoie le formulaire à celui qui le crée et à moi il m'envoie le fait que le mail soit envoyé... Je veux faire l'inverse, recevoir le mail avec le formulaire...
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
3 févr. 2012 à 10:48
le script fonctionne donc
pour ce qui est de la confusion des adresses mails
expéditeur ...

à toi de voir je te conseil de lire
http://php.net/manual/fr/function.mail.php

ce qui est marqué dans l’entête du mail n'est que ce que tu veux y mettre



Bonne programmation !
0
ainfographie Messages postés 7 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 3 février 2012
3 févr. 2012 à 10:57
merci pour le lien, mais j'ai déjà lu plusieurs tutos et je t’avoue que mon esprit est embrouillé. Mon script étant bon je n'arrive pas à voir mon erreur.
0
Rejoignez-nous