PHP : Problème de formulaire

Résolu
Bonjour,
Je suis en train de réaliser un système permettant l'ajout de commentaires.
En attendant, j'ai préparé un petit formulaire pour permettre aux visiteurs de me faire part de leurs remarques.
Le site est encore sur mon disque dur, mais sera très prochainement en ligne.
Concrètement, voici mon problème :
Lorsque j'envoie le formulaire, la page envoi_contact.php est censée vérifier si tout les champs ( sauf l'email ) sont remplis, puis afficher un message de confirmation/d'erreur, rediriger au bout de quelques secondes, et m'envoyer un e-mail contenant les informations du formulaire si tous les champs sont bien remplis.
Voici le code de mon formulaire ( contact.php ) :

<form action="envoi_contact.php" method="post" >
<span class="Style5">Votre pseudo :</span>
<input name="Pseudo" type="text" size="15" maxlength="15" />
<br />
<br />
<span class="Style5">Votre e-mail : </span>
<input name="adresse_mail" type="text" size="30" maxlength="30" />
<br />
<br />
<span class="Style5">Titre de l'article : </span>
<input name="Titre" type="text" size="20" maxlength="20" />
<span class="Style5">rubrique : </span>
<input name="Rubrique" type="text" size="20" maxlength="20" /><br /><br />

<span class="Style5">Commentaire : </span><br/>
<br />
<textarea name="Contenu" cols="50" rows="8" maxlenght="130"></textarea>
<input name="envoyer" type="submit" value="envoyer" />

</form>

Celui de ma page envoi_contact.php

<title>commentaire</title><?php

//Recuperation des données
$Pseudo= $_REQUEST["Pseudo"];
$adresse_mail= $_REQUEST["adresse_mail"];
$Titre = $_REQUEST["Titre"];
$Rubrique = $_REQUEST["Rubrique"];
$Contenu= nl2br($_REQUEST["Contenu"]);

//Vérification des champs du formulaire
//En cas d'erreur de saisie.
if (empty($Pseudo) or empty($Rubrique) or empty($Titre) or empty($Contenu))
{
echo("<b>Un ou plusieurs des champs est vide. Veuillez recommencer ; vous allez être redirigé dans 5 secondes</b>");
?>
<script language="JavaScript">
setTimeout("window.location='contact.php'",5000); // temps t'attente en millisecondes
</script>
<?
}
//Sinon...
else
{

// Message de confirmation
echo("<b>Merci pour votre commentaire . Je le mettrai en ligne dès que possible.<br> Vous allez maintenant être redirigé </b>");
?>
<script language="JavaScript">
setTimeout("window.location='contact.php'",4000); // temps t'attente en millisecondes
</script>
<?

//Envoi de l'email
$adresse_mailAdmin="monadresse@gmail.com";
$titre="Nouveau Commentaire !!!";
$message="Un nouveau commentaire ! ".$Pseudo $adresse_mail $Titre $Rubrique $Contenu;//les infos
mail($adresse_mailAdmin, $titre, $message);

}

?>


Lorsque j'envoie mon formulaire après l'avoir-ou non- bien rempli, je reçois le message suivant :


Un ou plusieurs des champs est vide. Veuillez recommencer ; vous allez être redirigé dans 5 secondes"); ?> Merci pour votre commentaire . Je le mettrai en ligne dès que possible.
Vous allez maintenant être redirigé "); ?>

Je suis en suite redirigé. Pouvais-vous m'aider ?
Configuration: Windows XP
Firefox 3.0

5 réponses

  1. Salut,
    c'est peut-être and (ou &&) à la place de or
    if (empty($Pseudo) and empty($Rubrique) and empty($Titre) and empty($Contenu))
    1. Heu nan ça change rien...Merci quand même
  2. Personnellement, ça marche bien après l'avoir modifié comme ça :

    <?php

    //Recuperation des données
    $Pseudo= $_REQUEST["Pseudo"];
    $adresse_mail= $_REQUEST["adresse_mail"];
    $Titre = $_REQUEST["Titre"];
    $Rubrique = $_REQUEST["Rubrique"];
    $Contenu= nl2br($_REQUEST["Contenu"]);

    //Vérification des champs du formulaire
    //En cas d'erreur de saisie.
    if (empty($Pseudo) or empty($Rubrique) or empty($Titre) or empty($Contenu))
    {
    echo("<b>Un ou plusieurs des champs est vide. Veuillez recommencer ; vous allez être redirigé dans 5 secondes</b>");
    ?>
    <script type="text/javascript">
    setTimeout("window.location='index.php'",5000); // temps t'attente en millisecondes
    </script>
    <?php
    }
    //Sinon...
    else
    {

    // Message de confirmation
    echo("<b>Merci pour votre commentaire . Je le mettrai en ligne dès que possible.<br> Vous allez maintenant être redirigé </b>");
    ?>
    <script type="text/javascript">
    setTimeout("window.location='index.php'",4000); // temps t'attente en millisecondes
    </script>
    <?php

    //Envoi de l'email
    $adresse_mailAdmin="adresse@gmail.com";
    $titre="Nouveau Commentaire !!!";
    $message="Un nouveau commentaire ! ". $Pseudo . $adresse_mail . $Titre . $Rubrique . $Contenu;//les infos
    mail($adresse_mailAdmin, $titre, $message);

    }

    ?>

    ps : j'ai juste modifié les <? en <?php et j'ai rajouté les points pour la concaténation entre tes variables.
    1. Pas de changement... Marche toujours pas. C'est incompréhensible...Merci quand même Sly34gl3
      J'ai essayé en changeant l'envoi du formulaire de POST en GET. Idem.
      1. Bah personnellement ça marche, sinon en restant dans la méthode post, essaie en remplaçant tes $_REQUEST par $_POST.
        Et essaie plutôt de vérifier si tes variables existent en testant avec if (isset($_POST['variable'])).
      2. @Utilisateur anonymeHeu...J'ai fait le code suivant :

        <?php

        //Recuperation des données
        $Pseudo= $_POST["Pseudo"];

        //Si existe
        if (isset($_POST['Pseudo']));
        echo("OK");

        ?>

        C'est bien comme ça qui fallait le présenter ?
        En tout cas rien ne s'affiche, j'arrive sur une page blanche. Je dois en déduire que les variables n'arrivent pas à la page voulue ? Comment est-ce possible ?
    2. Pourrais-tu m'envoyer ton msn par MP? Ca serait plus simple.
      1. Dis moi si tu me l'as envoyé car certaines fois je ne reçois rien...
    3. heu oui oui je l'ai envoyée...Je vais recommencer
      1. Toujours rien reçu... Bon à la limite poste ici ton adresse puis supprime là.
      2. tu arrive bien a afficher tes variables = $pseudo // $_REQUEST['pseudo'] // $_POST['pseudo']

        avec l'instruction echo ??