Formulaire php

Signaler
Messages postés
7
Date d'inscription
jeudi 2 février 2012
Statut
Membre
Dernière intervention
3 février 2012
-
Messages postés
7
Date d'inscription
jeudi 2 février 2012
Statut
Membre
Dernière intervention
3 février 2012
-
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

Messages postés
14788
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 mai 2021
155
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
Messages postés
7
Date d'inscription
jeudi 2 février 2012
Statut
Membre
Dernière intervention
3 février 2012

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.
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
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

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
ç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 !
Messages postés
7
Date d'inscription
jeudi 2 février 2012
Statut
Membre
Dernière intervention
3 février 2012

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é :
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
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 !
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
$_SERVER['HTTP_REFERER'] est l'adresse du formulaire qui pointe sur cible.php

Bonne programmation !
Messages postés
7
Date d'inscription
jeudi 2 février 2012
Statut
Membre
Dernière intervention
3 février 2012

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;

?>
Messages postés
7
Date d'inscription
jeudi 2 février 2012
Statut
Membre
Dernière intervention
3 février 2012

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....
Messages postés
7
Date d'inscription
jeudi 2 février 2012
Statut
Membre
Dernière intervention
3 février 2012

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...
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
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 !
Messages postés
7
Date d'inscription
jeudi 2 février 2012
Statut
Membre
Dernière intervention
3 février 2012

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.