Bonsoir,

quand j'envoie le formulaire rien ne se passe, est ce le bon code svp (un bout de code).

Le bout de code du formulaire de la page index

<?php

session_start();

?>

<form method="POST" action="verification.php">
<p>

<span class="txtform">Titre * :</span>
<input class="f_2" name="f_2" type="radio" value="0">
                        <span class="txtform">Mr </span>
                        <input class="f_2" name="f_2" type="radio" value="1">
                        <span class="txtform">Mme </span>

et celui de la page vérification.php toujours un bout de code

<?php

session_start();

if(!empty($_POST['f_2']))
{
if($_POST['f_2'] == 1)
$f_2 = "Mr";
else
$f_2 = "Mme";
}

$headers = 'From: '.$nom.'<'.$mail.'>'."\r\n";
$headers .= 'Reply-to: <'.$mail.'>'."\r\n";

$to = 'wall@hotmail.com';

?>

Est ce qu'il y a des erreurs de compatibilité entre le formulaire et la vérification? MERCI

19 réponses


Essai comme ceci

if(isset($_POST) && !empty($_POST)){ // on verifie si definie et pas vide
    if($_POST['f2'] == 1){ // si egal 1
        $f2 = "Mr"; //pas de undescore sur les variable
    }else if($_POST['f2'] == 2){ // si egal 2
        $f2 = "Mme"; //pas de undescore sur les variable
    }
}

Ajout un input value="2"

Tu peut aussi mettre un name au bouton ensuite tu fait isset($_POST['namebuton']) a la place de isset($_POST) && !empty($_POST) le bouton sera toujour vide on ne veut pas de contenue dans le bouton donc un isset() suffit, cette méthode est bien quand on veut editer les mots de pass par exemple.

Le session_start() ne ce fait que dans ton script pas besoin de le mettre dans ton html.

tu peut aussi faire ça :

if(session_status() == PHP_SESSION_NONE){//on verifi et demarre les sessions
    session_start();   
}
walimoha
Auteur

Bonjour et merci pour ta réponse voici le code complet mais la page est vide après envoi : la page ne fonctionne pas http error 500

<?php 

session_start();   
}
if(isset($_POST) && !empty($_POST)){ // on verifie si definie et pas vide
    if($_POST['f1'] == 1){ // si egal 1
        $f1 = "Particulier"; //pas de undescore sur les variable
    }else if($_POST['f1'] == 2){ // si egal 2
        $f1 = "Association"; //pas de undescore sur les variable
        }else if($_POST['f1'] == 3){ // si egal 3
        $f1 = "Société"; //pas de undescore sur les variable
    }
}
if(isset($_POST) && !empty($_POST)){ // on verifie si definie et pas vide
    if($_POST['f2'] == 1){ // si egal 1
        $f2 = "Mr"; //pas de undescore sur les variable
    }else if($_POST['f2'] == 2){ // si egal 2
        $f2 = "Mme"; //pas de undescore sur les variable
    }
}

$nom = utf8_decode($_POST['nom']);
$f5 = utf8_decode($_POST['f5']);
$f6 = utf8_decode($_POST['f6']);
$mail = ($_POST['email']);
$subject = utf8_decode($_POST['sujet']);
$message = utf8_decode($_POST['message']);
$headers = 'From: '.$nom.'<'.$mail.'>'."\r\n";
$headers .= 'Reply-to: <'.$mail.'>'."\r\n";

$to = 'wall@hotmail.com';

?>

<?php

if($_POST['captcha']==$_SESSION['captcha']){
mail($to, $subject, $message, $headers);
echo 'Votre message à été envoyé';  

}else{
echo 'Le captcha entré est invalide. <a href="/index.php">Recommencez</a>'; 

}

?>

Merci de vos propositions
Cordialement

Déjà en dessous de session_start(); tu a ça } retire le.

Je vais juste te détailler comment ça fonctionne :

// tu vérifie si un formulaire est envoyez 
if(isset($_POST) && !empty($_POST)){

        //la première condition exemple
        if(empty($_POST['name'])){ // on férifie si ce champ n'est pas vide

                $error = 'Le champ name est obligatoire';

        }if(!empty($_POST['captcha'] != $_SESSION['captcha'])){

                $error = "Le captcha n'est pas valide";

        }if(empty($_POST['captcha'])){

                $error = "Le captcha est obligatoire";

        }if(empty($error)){ // si il n'y a pas d'erreur on peut envoyez le mail
               // mail
               // message flash si tu a cette fonction
               // redirection
               // exit ou die c'est la même chose
        }
}

ça c'est si tu n'a qu'un seul formulaire sur la page si tu en a 2 il faut vérifier avec un nom pour chaque formulaire, c'est une erreur que tu fait sur ta page tu vérifie deux fois $_POST php ne sait pas de quel formulaire tu parle.

exemple :

//form 1 tu met un nom au boutton
if(isset($_POST['bouttonOne']){
        //condition de validation
}

// form 2
if(isset($_POST['bouttonTwo']){
        //condition de validation
}

Voici un fichier captcha.php

<?php
/******
*captcha
******/ 
session_start();
define('URI' , dirname(dirname(__FILE__)));
$_SESSION['captcha'] = mt_rand(1000, 9999);
$img = imagecreate(65,30);
$font = 'police.ttf';

$bg = imagecolorallocate($img,255,255,255);
$textcolor = imagecolorallocate($img, 0,0,0);

imagettftext($img,23,0,3,30, $textcolor, $font,$_SESSION['captcha']);

header('Content-type:image/jpeg');
imagejpeg($img);
imagedestroy($img);

Que tu doi inclure sous forme d'image <img src="views/img/captcha.php" alt=""> et un champ type="text" name="captcha"

walimoha
Auteur

Bonsoir, j'ai déjà mon captcha.php, pas de souci pour cela. Sinon j'ai suivi vos conseils en tout cas quelques uns, j'avance une correction à la fois tout en vérifiant. Le mail est envoyé et c'est une avancée pour moi par contre je ne reçois que le texte du champ message et non la totalité du formulaire envoyé. Ci-joint mon formulaire et mon code vérification. Bien aimable à vos commentaires, cordialement
Formulaire :

<form method="POST" action="verification.php">
<p>
<span class="txterror">Je souhaite adhérer à VO, association 1901, à but non lucratif et d'utilité publique :</span>
<br/><p>
<span class="txtform">Je suis * :</span><br/>
<input checked="checked" class="f1" name="f1" type="radio" value="0" />
<span class="textform"> Particulier : 10€</span>
<input class="f1" name="f1" type="radio" value="1" />
<span class="textform"> Association : 20€</span>
<input class="f1" name="f1" type="radio" value="2" />
<span class="textform"> Société : 40€</span>
<p>
<span class="txtform">Titre * :</span>
<input checked="checked" class="f2" name="f2" type="radio" value="0">
<span class="txtform">Mr </span>
<input class="f2" name="f2" type="radio" value="1">
<span class="txtform">Mme </span>

  <p>

Nom/prénom *:<br />
<input type="text" name="nom" id="nom" placeholder="Votre Nom" />
</p>
Enseigne (sociétés uniquement): <br />
<input name="f5" size="24" style="width:200;        " type="text" value="">
</p>
<p>
Adresse postale * : <br />
            <input name="f6" size="24" style="width:200;       " type="text" value="">
  <p>

Email *: <br />
<input type="email" name="email" id="email" placeholder="Votre Email" />
</p>

<p>
Sujet *:<br />
<input type="text" name="sujet" id="sujet" placeholder="Quel est votre sujet ?" />
</p>

<p>
Message *:<br />
<textarea id="message"  name="message" placeholder="Votre Message" /></textarea>
</p>

<h3>Recopier ce chiffre ?</h3>
<img src="captcha.php" /><br />
<input type="text" name="captcha" style="70px;" /><br />
<p>
Tous les champs avec une * sont obligatoires

<p>
    <input type="submit" value="Envoyez" />
</p>

</form>

et vérification

<?php 

session_start();   

if(isset($_POST['bouttonOne']) && !empty($_POST)){ // on verifie si definie et pas vide
    if($_POST['f1'] == 1){ // si egal 1
        $f1 = "Particulier"; //pas de undescore sur les variable
    }else if($_POST['f1'] == 2){ // si egal 2
        $f1 = "Association"; //pas de undescore sur les variable
        }else if($_POST['f1'] == 3){ // si egal 3
        $f1 = "Société"; //pas de undescore sur les variable

}
}
if(isset($_POST['bouttonTwo']) && !empty($_POST)){
 if($_POST['f2'] == 1){ // si egal 1
        $f2 = "Mr"; //pas de undescore sur les variable
    }else if($_POST['f2'] == 2){ // si egal 2
        $f2 = "Mme"; //pas de undescore sur les variable
    }
}

$nom = utf8_decode($_POST['nom']);
$f5 = utf8_decode($_POST['f5']);
$f6 = utf8_decode($_POST['f6']);
$mail = ($_POST['email']);
$subject = utf8_decode($_POST['sujet']);
$message = utf8_decode($_POST['message']);
$headers = 'From: '.$nom.'<'.$mail.'>'."\r\n";
$headers = 'Reply-to: <'.$mail.'>'."\r\n";

$to = 'wall@hotmail.com';

?>

<?php

if($_POST['captcha']==$_SESSION['captcha']){
mail($to, $subject, $message, $headers);
echo 'Votre message à été envoyé';  

}else{
echo 'Le captcha entré est invalide. <a href="/index.php">Recommencez</a>'; 

}

?>

Quand quelqu'un te montre du code en tant qu'exemple, ne recopies pas bêtement, dans le code de la page verification.php dans ton dernier post, tu fais des conditions sur $_POST['bouttonOne'] et sur $_POST['bouttonTwo'], sauf que tu n'as aucun élément dans ton formulaire qui ait ses deux noms comme valeur, donc le code dans ces deux conditions ne s'exécutera pas.

Le mail est envoyé et c'est une avancée pour moi par contre je ne reçois que le texte du champ message et non la totalité du formulaire envoyé.

C'est tout à fait normal, si tu n'inclues pas les autres valeurs dans la formulation du corps de ton message, soit dans la variable $message dans ce cas, ça ne se fera pas tout seul.
Ce n'est donc pas étonnant si dans le message les valeurs des variables nom, f5, f6 et mail et puis tu devrais remplacer :

$headers = 'From: '.$nom.'<'.$mail.'>'."\r\n";
$headers = 'Reply-to: <'.$mail.'>'."\r\n";

Par :

$headers = 'From: '.$nom.'<'.$mail.'>'."\r\n";
$headers .= 'Reply-to: <'.$mail.'>'."\r\n";

Car dans ton cas présent, ta deuxième variable headers écrase la première.

Bonjour.
Je te conseille vivement de visionner des tutoriels du site et de les expérimenter, surtout que plusieurs incluent le traitement de formulaires et d'envoies de mails.
Le forum sert à aider les personnes qui ont fait des recherches et qui après avoir expérimenté les tutoriels du site n'arrivent toujours pas à faire fonctionner leur code.
Donc, visionnes les différents tutoriels vidéos qui pourront t'aider, spécifiquement dans l'immédiat de la catégorie PHP.

walimoha
Auteur

Salut j'ai avancé un bout et je reviens apres quelques révisions. Le formulaire est envoyé jusqu'à ce que je rentre le bout de code qui vérifie les champs vides et là c'est page blanche et erreur......
J'ai un souci avec les accolades je pense

<?php 

session_start();   

if(isset($_POST['f1']) && !empty($_POST)){ 
    if($_POST['f1'] == 1){ 
        $f1 = "Particulier"; 
    }else if($_POST['f1'] == 2){ 
        $f1 = "Association"; 
        }else if($_POST['f1'] == 3){ 
        $f1 = "Société"; 

}
}
if(isset($_POST['f2']) && !empty($_POST)){
 if($_POST['f2'] == 1){ 
        $f2 = "Mr"; 
    }else if($_POST['f2'] == 2){ 
        $f2 = "Mme"; 
}
}
if(($_POST['nom'] !="") && ($_POST['f3'] !="") && ($_POST['f4'] !="") && ($_POST['f5'] !="") && ($_POST['email'] !="" && ($_POST['sujet'] !="0")) &&
        (isset($_POST['tel']) || isset($_POST['message']) )) {

$headers =$f1."\r\n";
$headers .=$f2."\r\n";
$headers .=$_POST['nom']."\r\n";
$headers .=$_POST['f3']."\r\n";
$headers .=$_POST['f4']."\r\n";
$headers .=$_POST['f5']."\r\n";
$headers .=$_POST['email']."\r\n";
$headers .=$_POST['sujet']."\r\n";
$headers .=$_POST['message']."\r\n";

$to = 'wall@hotmail.com';

?>

<?php

if($_POST['captcha']==$_SESSION['captcha']){
mail($to, $subject, $message, $headers);
echo 'Votre message à été envoyé. <a href="http://vision-originale.org/">Retour à la page d"accueil</a>';   

}else{
echo 'Le captcha entré est invalide. <a href="/index.php">Recommencez</a>'; 

}

?>

Cordialement

Bonjour.
Vu le contexte, je vais te donner un petit conseil.
Au lieu d'utiliser la struture conditionnelle if, elseif, pour f1, tu pourrais utiliser switch, donc par exemple :

if (isset($_POST) && !empty($_POST)) {
    if (isset($_POST['f1'])) {
        switch ($_POST['f1']) {
            case 1:
                $f1 = "Particulier";
                break;
            case 2:
                $f1 = "Association";
                break;
            case 3:
                $f1 = "Société";
                break;
        }
    }
    // suite du code dans la conditions de données postées ...
}

Tu pourrais également utiliser switch pour f2, mais un simple if, else est largement suffisant.
Ensuite, ce n'est pas dans ta variable $headers que tu dois inclure les valeurs postées manquantes dans ton mail, mais plutôt dans ta variable $message.
Autre chose, quel est l'intérêt dé vérifier si sujet à une valeur différente de 0 ?
Un input de type text n'aura jamais comme valeur 0, à moins que l'utilisateur ne saisisse 0 dans l'input.
Si tu veux vérifier si aucune valeur n'a été saisie et que par conséquent $_POST['sujet'] est vide, ce n'est pas comme ça que tu dois t'y prendre.
Pour terminer, si dans ton dernier post tu nous montre tout le code concernant le traitement du formulaire et l'envoi du mail, tu as deux variables dans ta fonction mail qui ne sont pas définies, $message et $subject, de plus que maintenant les headers que tu envoies définis dans le mail ne sont plus valide.
Si tu as un retour d'erreur, si tu ne nous la donnes pas, ça ne fera que nous compliquer la possibilité de t'aider, lorsque vous avez des retours d'erreur, il faut nous en fournir les messages.

walimoha
Auteur

Merci je reviens sur le code qui a fonctionné comme je voulais, c'est à dire que je recevais par mail les données de cette manière :
Association
Mme
Dupont
société...
20, rue du doteur Dupont
lille
wali@hotmail.com
0666731464
sujetttttttttttt essai
bonjour essai 120
mais j'ai les erreurs de page erreur quand un champ n'est pas rempli.
le code qui a fonctionné est le suivant :

<?php
session_start();   

if(isset($_POST['f1']) && !empty($_POST)){ 
    if($_POST['f1'] == 1){ 
        $f1 = "Particulier"; 
    }else if($_POST['f1'] == 2){ 
        $f1 = "Association"; 
        }else if($_POST['f1'] == 3){ 
        $f1 = "Société"; 

}
}
if(isset($_POST['f2']) && !empty($_POST)){
 if($_POST['f2'] == 1){ 
        $f2 = "Mr"; 
    }else if($_POST['f2'] == 2){ 
        $f2 = "Mme"; 
}
}

$headers =$f1."\r\n";
$headers .=$f2."\r\n";
$headers .=$_POST['nom']."\r\n";
$headers .=$_POST['f3']."\r\n";
$headers .=$_POST['f4']."\r\n";
$headers .=$_POST['f5']."\r\n";
$headers .=$_POST['email']."\r\n";
$headers .=$_POST['tel']."\r\n";
$headers .=$_POST['sujet']."\r\n";
$headers .=$_POST['message']."\r\n";

$to = 'wall@hotmail.com';

?>

<?php

if($_POST['captcha']==$_SESSION['captcha']){
mail($to, $subject, $message, $headers);
echo 'Votre message à été envoyé. <a href="http://vision-originale.org/">Retour à la page d"accueil</a>';   

}else{
echo 'Le captcha entré est invalide. <a href="/index.php">Recommencez</a>'; 

}

?>

Quand je rentre ce bout de code de vérification, je n'obtiens rien

if(($_POST['nom'] !="") && ($_POST['f3'] !="") && ($_POST['f4'] !="") && ($_POST['f5'] !="") && ($_POST['email'] !="" && ($_POST['sujet'] !="")) &&
        (isset($_POST['tel']) || isset($_POST['message']) )) {

Merci encore pour votre patience

Il nous serait utile de voir ton code HTML actuel de ton formulaire, car dans celui que nous avons en ce moment, il n'y a aucun input qui se nomme f3, f4 et tel, pourtant par rapport à ce que tu montres du contenu, il y aurait au moins l'input qui se nomme tel.
Donc dans le cas ou il n'y ait pas d'input qui se nomme f3 ni f4, la condition ne sera pas passée, étant donné qu'il faut que tous les inputs définis dans la condition existe.

walimoha
Auteur

ok merci

<?php
session_start();

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>

<body>

<form method="POST" action="verification.php">
<p>
<span class="txterror">Je souhaite adhérer à VO, association 1901, à but non lucratif et d'utilité publique :</span>
<br/><p>
<span class="txtform">Je suis * :</span><br/>
<input class="f1" name="f1" type="radio" value="1" />
<span class="textform"> Particulier : 10€</span>
<input class="f1" name="f1" type="radio" value="2" />
<span class="textform"> Association : 20€</span>
<input class="f1" name="f1" type="radio" value="3" />
<span class="textform"> Société : 40€</span>
<p>
<span class="txtform">Titre * :</span>
<input  class="f2" name="f2" type="radio" value="1">
<span class="txtform">Mr </span>
<input class="f2" name="f2" type="radio" value="2">
<span class="txtform">Mme </span>

  <p>

Nom/prénom *:<br />
<input type="text" name="nom" id="nom" placeholder="Votre Nom" />
</p>
Enseigne (sociétés uniquement): <br />
<input name="f3" size="24" style="width:200;        " type="text" value="">
</p>
<p>
Adresse postale * : <br />
            <input name="f4" size="24" style="width:200;       " type="text" value="">

<p>
Ville * : <br />
            <input name="f5" size="24" style="width:200;       " type="text" value="">
  <p>

Email *: <br />
<input type="email" name="email" id="email" placeholder="Votre Email" />
</p>

Tel portable *: <br />
<input type="tel" name="tel" id="tel" placeholder="Votre n° de portable" />
</p>
<p>
Sujet *:<br />
<input type="text" name="sujet" id="sujet" placeholder="Quel est votre sujet ?" />
</p>

<p>
Message *:<br />
<textarea id="message"  name="message" placeholder="Votre Message" /></textarea>
</p>

<h3>Recopier ce chiffre ?</h3>
<img src="captcha.php" /><br />
<input type="text" name="captcha" style="70px;" /><br />
<p>
Tous les champs avec une * sont obligatoires

<p>
    <input type="submit" value="Envoyez" />
</p>

</form>

</body>
</html>

Ton problème doit se situer au niveau le l'input qui a comme nom f3, car dans le formulaire, tu n'obliges à le compléter que par les sociétés, sauf que dans ta condition il doit être compléter quel que soit la valeur de l'input f1, donc forcément la condition ne sera pas positive dans le cas où la personne se définit en tant que particulier ou association, étant donné quelle n'est pas obligé de renseigner l'input f3.
Il te faut donc modifier les comparatifs concernant cet input dans la condition, par exemple :

if ( ($_POST['nom'] != "") && ($_POST['f1'] == 3 && $_POST['f3'] != "") && ($_POST['f4'] != "") && ($_POST['f5'] != "") && ($_POST['email'] != "" && ($_POST['sujet'] !="")) && (isset($_POST['tel']) || isset($_POST['message']) ) ) {

Bien que ce genre de condition ne me plaise pas trop personnellement, car de cette manière, l'utilisateur ne peut pas savoir où il a pu faire une erreur de remplissage dans le formulaire.
Car dans le cas présent, la seule erreur qui peut être retournée à l'utilisateur, c'est dans le cas où il a fait une erreur pour le captcha.
Tu devrais vraiment faire plus de vérifications concernant la validation des données du formulaire, ce qui permettrait en plus de ne pas avoir de problèmes concernant les données soumises, de faire bénéficier des utilisateurs des erreurs qu'ils auraient pu commetre en renseignant le formulaire.

walimoha
Auteur

Salut à tous me revoila avec le formulaire, j'ai besoin de conseils svp sur ce code de vérification, j'ai une erreur de page quand je fais envoyer le formulaire. Merci d'avance

<?php
session_start();   

if(isset($_POST['f1']) && !empty($_POST)){ 
    if($_POST['f1'] == 1){ 
        $f1 = "Particulier"; 
    }else if($_POST['f1'] == 2){ 
        $f1 = "Association"; 
        }else if($_POST['f1'] == 3){ 
        $f1 = "Société"; 

}
}
if(isset($_POST['f2']) && !empty($_POST)){
 if($_POST['f2'] == 1){ 
        $f2 = "Mr"; 
    }else if($_POST['f2'] == 2){ 
        $f2 = "Mme"; 
}

}
if(isset($_POST['nom']) && isset($_POST['f4']) && isset($_POST['f5']) && isset($_POST['email']) && isset($_POST['tel']) && isset($_POST['sujet']) && isset($_POST['message'])) 
{ 
if(!empty($_POST['nom']) && !empty($_POST['f4']) && !empty($_POST['f5']) && !empty($_POST['email']) && !empty($_POST['tel']) && !empty($_POST['sujet']) && !empty($_POST['message'])) 
{ 
echo '<div> Merci d\'avoir rempli le formulaire! <br> 
Vos informations sont les suivantes: <br> 
Titre: "' .$_POST['f1']. '" <br> 
Sexe: "' .$_POST['f2']. '" <br> 
Nom: "' .$_POST['nom']. '" <br> 
Adresse: "' .$_POST['f4']. '" <br> 
Ville: "' .$_POST['f5']. '" <br> 
Email: "' .$_POST['email']. '" <br> 
Sujet: "' .$_POST['sujet']. '" <br> 
Message: "' .$_POST['message']. '" <br> 
Tel: "' .$_POST['tel']. '" '; 
} 
else 
{ 
echo '<div> Veuillez remplir tous les champs marqués dune d\'astérisque (*) afin de pouvoir continuer'; 
} 
} 
else 
{ 
echo '<div> Les variables n\'existent pas'; 
} 
} 
else { } 

$headers =$f1."\r\n";
$headers .=$f2."\r\n";
$headers .=$_POST['nom']."\r\n";
$headers .=$_POST['f3']."\r\n";
$headers .=$_POST['f4']."\r\n";
$headers .=$_POST['f5']."\r\n";
$headers .=$_POST['email']."\r\n";

Bonjour

Tu as une parenthése en trop et un else vide

else 
{ 
echo '<div> Les variables n\'existent pas'; 
} 
} 
else { }

Penses à bien mettre les message d'erreurs que tu obtiens et à indenté ton code pour nous évités de chercher :)

$headers =$f1."\r\n";
$headers .=$f2."\r\n";
$headers .=$_POST['nom']."\r\n";
$headers .=$_POST['f3']."\r\n";
$headers .=$_POST['f4']."\r\n";
$headers .=$_POST['f5']."\r\n";
$headers .=$_POST['email']."\r\n";

Est-ce que c'est normal que ta variable headers contient autant d'informations ?

walimoha
Auteur

Bonsoir, j'ai corrigé le trop de parenthese et le else. Mais ma page est toujours en erreur : HTTP ERROR 500
Pour le headers c'est normal car c'est tous les champs de mon formulaire que je veux recevoir par mail.
Bonne soirée
Cordialement

Pour le headers c'est normal car c'est tous les champs de mon formulaire que je veux recevoir par mail.

Non, les informations que tu veux inclure dans le mail doivent être dans la variable qui concerne le corps du message et non dans celle qui concerne les headers du mail, mais ça je te l'avais déja dit.

walimoha
Auteur

Bonjour, j'ai fait quelques changements suite à vos réponses et conseils mais j'ai toujours une erreur. La page ne s'affiche pas. Cordialement

<?php
session_start();   

if(isset($_POST['f1']) && !empty($_POST)){ 
    if($_POST['f1'] == 1){ 
        $f1 = "Particulier"; 
    }else if($_POST['f1'] == 2){ 
        $f1 = "Association"; 
        }else if($_POST['f1'] == 3){ 
        $f1 = "Société"; 

}
}
if(isset($_POST['f2']) && !empty($_POST)){
    if($_POST['f2'] == 1){ 
        $f2 = "Mr"; 
     }else if($_POST['f2'] == 2){ 
        $f2 = "Mme"; 
}
}

        if(isset($_POST['f4']) && isset($_POST['f5']) && isset($_POST['email']) && isset($_POST['tel']) && isset($_POST['sujet']) && isset($_POST['message'])) 
{ 
        if(!empty($_POST['f4']) && !empty($_POST['f5']) && !empty($_POST['email']) && !empty($_POST['tel']) && !empty($_POST['sujet']) && !empty($_POST['message'])) 
{ 
echo '<div> Merci d\'avoir rempli le formulaire! <br> 
Vos informations sont les suivantes: <br> 
Titre: "' .$f1. '" <br> 
Sexe: "' .$f2. '" <br> 
Nom: "' .$_POST['nom']. '" <br> 
Adresse: "' .$_POST['f4']. '" <br> 
Ville: "' .$_POST['f5']. '" <br> 
Email: "' .$_POST['email']. '" <br> 
Sujet: "' .$_POST['sujet']. '" <br> 
Message: "' .$_POST['message']. '" <br> 
Tel: "' .$_POST['tel']. '" '; 
} 
    else 
{ 
echo '<div> Veuillez remplir tous les champs marqués d\'une astérisque (*) afin de pouvoir continuer'; 

} 

$nom = utf8_decode($_POST['nom']);
$f5 = utf8_decode($_POST['f5']);
$f6 = utf8_decode($_POST['f6']);
$mail = ($_POST['email']);
$subject = utf8_decode($_POST['sujet']);
$message = utf8_decode($_POST['message']);
$headers = 'From: '.$nom.'<'.$mail.'>'."\r\n";
$headers .= 'Reply-to: <'.$mail.'>'."\r\n";

$to = 'wall@hotmail.com';

?>

<?php

if($_POST['captcha']==$_SESSION['captcha']){
mail($to, $subject, $message, $headers);
echo 'Votre message à été envoyé. <a href="http://vision-originale.org/">Retour à la page d"accueil</a>';   

}else{
echo 'Le captcha entré est invalide. <a href="/index.php">Recommencez</a>'; 
    }

?>

Salut il faut tout lire !!

donc je t'ai fait un truc un peut plus sympa

la je pige rien a ta structure tu te prend la tête pour rien.

Voila le code :

les radio c'est trop chiant a faire donc je préfère les select.

par contre faudra refaire ta stucture d'envoie de mail ce qui a de bien avec le select c'est que tu retourne qu'un resulta pas besoin de trier entre t'est truc : f1, f2, f3

du coup $sex = utf8_decode($_POST['civilite']); et $jesuis = utf8_decode($_POST['jesuis']); automatiquement ce champ vaudra la valeur de l'option.

Ta structure HTML désolé de te le dire n'est pas scementique, faut revoir cette aspect la !! mettre tout tes champs dans des <p> ce n'est pas bon préfère des div et des label avec une class, ou prend bootstrap ça je te laisse le refaire ne reprend pas la même ou fait la mieux.

ensuite quand tu fini l'envoie sans erreur a tois de voir si tu redirige dans ce cas faudra prévoir un flash message histoire de prévenir que ça a bien étais envoyer, et si tu veut stocker en base de donner le formulaire pour garder une trace, je t'ai mis un exemple de requete .

Je t'ai fait une validation pour certain champ a tois de faire le reste.

Ceci est a titre d'exemple tu peut faire autrement avec des radio mais c'est trop de validation différente a prévoir.

Ton problème de page qui ne s'affiche pas est normale tu met un action="verification.php" ce fichier ne te redirige pas donc tu reste sur cette page qui est vide car elle execute du php.

pour régler ce problème soit tu fait une redirection a la fin de l'envoie et suite au erreur soit tu ne met pas d'action et tu reste sur la page courante ce qui a mon sens est mieux par contre il faut toujour bloquer ton script si tu a des erreur de validation.

Verifie aussi ton captcha j'ai pas ton fichier j'ai pas pu le tester neanmoin je te sotck une erreur si il est différent de session.

<?php
//session_start();   

if(isset($_POST) && !empty($_POST)){

    //debug avec var_dump($_POST);
    //die;

    if(isset($_SESSION['captcha']) && !empty($_POST['captcha'] != $_SESSION['captcha'])){

        $error = 'captcha non valide';

    }if(isset($_POST['email']) && !empty($_POST['email'] != filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))){

        $error = 'email non valide';

    }if(!preg_match("#^(particulier|assotiation|societe)$#",$_POST['jesuis'])){

        $error = 'champ non valide';

    }if(!preg_match("#^(homme|femme)$#",$_POST['civilite'])){

        $error = 'champ non valide';

    }if(empty($error)){

        //evoie du mail

        //insert si on a pas d'erreur exemple

        /*$req = $db->prepare("

        INSERT 

        INTO 

            table 

        SET 

            email = ?

        ");*/

        //on execute la requete avec les champ dans l'ordre
        //$req->execute([$_POST['email']]);

        //a la fin du script
        //header('Location:index.php');
        //die;

    }

}
echo isset($error) ? $error : '' ;

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
</head>

<body>

<form method="POST" action="">

    <label for="jesuis">Je suis * : </label>
    <br>
    <select name="jesuis" id="jesuis">

        <option value="particulier" name="particulier">Particulier : 10€</option>
        <option value="association" name="association">Association : 20€</option>
        <option value="societe" name="societe">Société : 40€</option>

    </select>

    <br>
    <br>

    <label for="civilite">Homme / Femme * : </label>
    <br>
    <select name="civilite" id="civilite">

        <option value="homme" name="homme">Homme</option>
        <option value="femme" name="femme">Femme</option>

    </select>

    <br>
    <br>

    <input type="text" name="prenom" id="nom" placeholder="Votre prenom" /> <br> <br>

    <input type="text" name="nom" id="nom" placeholder="Votre Nom" /> <br> <br>

    <input type="text" name="email" id="email" placeholder="Votre Email" /> <br><br>

    Enseigne (sociétés uniquement): <br><br>

    <input name="adresse" placeholder="adresse" type="text" /> <br> <br>

    <input name="ville" placeholder="ville" type="text" /> <br> <br>

    <input name="postal" placeholder="postal" type="text" /> <br> <br>

    <input type="tel" name="tel" id="tel" placeholder="Votre n° de portable" /> <br> <br>

    <input type="text" name="sujet" id="sujet" placeholder="Quel est votre sujet ?" /> <br> <br>

    <textarea id="message"  name="message" placeholder="Votre Message"></textarea>

    <img src="captcha.php" /><br />
    <input type="text" name="captcha" style="70px;" /><br />

    <input type="submit" value="Envoyez" />

</form>

</body>
</html>
walimoha
Auteur

Salut Neecrid, salut à tous, merci d'avoir pris un peu de temps pour me faire avancer. Je vais prendre le temps pas à pas et essayer d'être à la hauteur de tes conseils et je reviens avec un résultat correct, je l'espere. Merci encore.
Cordialement