j'ai un petit souci avec mes test if et switch

Eléphant du PHP | 101 Messages

04 déc. 2005, 18:51

voila j'ai un probleme

tout d'abord voila mon script
<?php

if(isset($_POST)) {

switch ($_POST)	{

case $_POST['nom'] == NULL:
echo "<TD>Le champ nom est vide !</TD>";
break;

case $_POST['adresse_email'] == NULL:
echo "<TD>Le champ adresse e-mail est vide !</TD>";
break;

case $_POST['sujet'] == NULL:
echo "<TD>Le champ sujet est vide !</TD>";
break;

case $_POST['message'] == NULL:
echo "<TD>Le champ message est vide !</TD>";
break;


	}
 
	$to = "[email protected]";
    $subject = $_POST['sujet'];
    $message = $_POST['message'];
    $headers = "From: ".$_POST['adresse_email'] . "\r\n" .
    "Reply-To:" .$_POST['adresse_email'] . "\r\n" .
     "X-Mailer: PHP/" . phpversion();
     //mail($to, $subject, $message, $headers);
	 echo "<TD><span class='ok'>Votre message a bien été envoyer.</span></TD>";
	 echo "</TR></table>"; 
	 
}
?>
alors voila mon mail est coméme envoyer quand je clic sur envoyer alors que les champs ne sont pas rempli


par exemple je clic sur envoyer ca me met "Le champs ... est vide Votre message a bien été envoyer."

c'est bizar je narive pas a comprendre ce qui ce passe.

Mammouth du PHP | 19672 Messages

04 déc. 2005, 18:58

Logique : et l'utilisation du switch dans ce cas n'est pas approprié. Proposition de modification:
<?php
if(isset($_POST))
{
    $erreur = 0;
    if($_POST['nom'] == NULL)
    {
        echo "<TD>Le champ nom est vide !</TD>";
        $erreur++;
    }
    if($_POST['adresse_email'] == NULL)
    {
        echo "<TD>Le champ adresse e-mail est vide !</TD>";
        $erreur++;
    }
    if($_POST['sujet'] == NULL)
    {
        echo "<TD>Le champ sujet est vide !</TD>";
        $erreur++;
    }
    if($_POST['message'] == NULL)
    {
        echo "<TD>Le champ message est vide !</TD>";
        $erreur++;
    }
    if($erreur == 0)
    {
        $to = "[email protected]";
        $subject = $_POST['sujet'];
        $message = $_POST['message'];
        $headers = "From: ".$_POST['adresse_email'] . "\r\n" .
        "Reply-To:" .$_POST['adresse_email'] . "\r\n" .
        "X-Mailer: PHP/" . phpversion();
        //mail($to, $subject, $message, $headers);
    }
    echo "<TD><span class='ok'>Votre message a bien été envoyer.</span></TD>";
    echo "</TR></table>";
}
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 383 Messages

04 déc. 2005, 18:58

c'est normal, dans ton code a aucun moment tu ne lui dit de ne pas envoyer le mail si une des conditions du switch n'est pas rempli. essaie comme ca : au debut de ton code, tu met une variable a 1, par exemple :
$correct =1;
ensuite dans ton switch, pour chacun des cas tu rajoutes :
$correct = 0;
et a la fin :
if($correct)
{
    //envoi du message
}

Eléphant du PHP | 101 Messages

04 déc. 2005, 19:11

Merci beaucoup pour votre aide et vos conseils

ca marche impecable

:D