Besoin d'aide pour PHP

  • Créateur du sujet Créateur du sujet Glaw
  • Date de début Date de début

Glaw

Membre confirmé
18 Juin 2007
21
0
Bonjour alors voila j'ai ce code : et je ne vois pas ou est le problème. Merci de votre aide

<?php
echo('<html>')
echo('<head>','</head>')
echo('<body>')


// DEBUT Fonction de contrôle du mail PHP-UNIX
function check_mail($champ6)
{
if
((preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $champ6))
||
(preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$champ6)) )
{
$host = explode('@', $champ6);

if(checkdnsrr($host[1].'.', 'MX') ) return true;
if(checkdnsrr($host[1].'.', 'A') ) return true;
if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
}
return false;
}
// FIN Fonction de contrôle du mail
$MailTo = "[email protected]"; //adresse à laquelle sera envoyé le contenu du formulaire
$MailSubject = $champ7 ; //texte qui va figurer dans le champ "sujet" du email
$MailHeader = $champ6; //adresse email qui va figurer dans le champ "expéditeur" du email et qui peut être remplacé par la variable "$champx" ("$champ3").

/* Les routines suivantes permettent à chacune des variables de prendre la valeur des champs du formulaire et de les stocker ensuite dans la variable globale MailBody qui constituera le corps du message */

$Envoi = 1; //initialisation de la variable envoi à 1

if ($champ1 == "")
{ //nom du champ1
echo("Vous n'avez pas complété le champ 1.<br>"); //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "Nom : $champ1\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($champ2 == "")
{
echo("Vous n'avez pas complété le champ 2.<br>");
$Envoi = 0;
}
else
{
$MailBody .= "Prénom : $champ2\n";
}
if ($champ3 == "")
{
echo("Vous n'avez pas complété le champ 3.<br>");
$Envoi = 0;
}
else
{
$MailBody .= "Adresse : $champ3\n";
}
if($champ4 == "")
{
echo("Vous n'avez pas complété le champ 4.<br>");
$Envoi = 0;
}
else
{
$Mailbody .= "Téléphone : $champ4\n";
}
if($champ5 == "")
{
echo("Vous n'avez pas complété le champ 5.<br>");
}
else
{
$MailBody .= "Téléphone Mobile : $champ5\n";
}
if ($champ6 == "")
{
echo("Vous n'avez pas complété le champ 6.<br>");
$Envoi = 0;
}
else
{
if (check_mail($champ6))
{
$MailBody .= "Mail : $champ6\n";
}
else
{
echo("L'adresse e-mail du champ 6 n'est pas valide<br>");
$Envoi = 0;
}
$MailBody .="Votre demande de renseignement porte sur : ";

$items = 3; //initialisation du nombre d'items possibles

for ($i = 1; $i <= $items; $i++) //boucle sur le nombre d'items
{
$MailBody .= "$champ7[$i], "; //stockage des items choisis dans la variable MailBody
}
if ($Envoi == 0) echo("<p> </p><p> </p><p align=\"center\"><a href=\"c_outils/c_formulaire.html\"><strong>Retour</strong></a></p>");

if ($champ8 == "")
{
echo("Vous n'avez pas complété le champ 8.<br>");
$Envoi = 0;
}
else
{
$MailBody .= "Commentaire : $champ8\n";
}

//Envoi du message

if ($Envoi == 1) //vérification que la variable envoi est bien à 1
{
mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message
echo("<p>Votre message a bien été envoyé.<br>Merci de vos commentaires.");
echo("<p> </p><p> </p><p align=\"center\"><a href=\"formulaire.html\"><strong>Retour</strong></a></p>"); //affichage d'un message de confirmation.
}
echo('</body>')
echo('</html>')
?>
 
Si j'étais toi, je mettrai quand même un point-virgule après chaque echo...

PS: J'aime pas cette façon trop raccourcie de coder, on dirait que tu avais un train à prendre...

Voila ton code: il passe sur PHP5

Bloc de code:
<?php

echo '<html>';
echo '<head>';
echo '</head>';
echo '<body>';


// DEBUT Fonction de contrôle du mail PHP-UNIX
function check_mail($champ6)
{
    if((preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $champ6)) || (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$champ6)))
    {
      $host = explode('@', $champ6);
      if(checkdnsrr($host[1].'.', 'MX'))
        return true;
      if(checkdnsrr($host[1].'.', 'A'))
        return true;
      if(checkdnsrr($host[1].'.', 'CNAME'))
        return true;
    }
    else
    {
        return false;
    }
}


// FIN Fonction de contrôle du mail
$MailTo = "[email protected]"; //adresse à laquelle sera envoyé le contenu du formulaire
$MailSubject = $champ7; //texte qui va figurer dans le champ "sujet" du email
$MailHeader = $champ6; //adresse email qui va figurer dans le champ "expéditeur" du email et qui peut être remplacé par la variable "$champx" ("$champ3").

/* Les routines suivantes permettent à chacune des variables de prendre la valeur des champs du formulaire et de les stocker ensuite dans la variable globale MailBody qui constituera le corps du message */

$Envoi = 1; //initialisation de la variable envoi à 1

if ($champ1 == "")
{ //nom du champ1
    echo "Vous n'avez pas complété le champ 1.<br />"; //message qui s'affiche si le visiteur n'a pas rempli ce champ
    $Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else
{
    $MailBody .= "Nom : $champ1\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}

if($champ2 == "")
{
    echo "Vous n'avez pas complété le champ 2.<br />";
    $Envoi = 0;
}
else
{
    $MailBody .= "Prénom : $champ2\n";
}

if($champ3 == "")
{
    echo "Vous n'avez pas complété le champ 3.<br />";
    $Envoi = 0;
}
else
{
    $MailBody .= "Adresse : $champ3\n";
}

if($champ4 == "")
{
    echo "Vous n'avez pas complété le champ 4.<br />";
    $Envoi = 0;
}
else
{
    $Mailbody .= "Téléphone : $champ4\n";
}

if($champ5 == "")
{
    echo "Vous n'avez pas complété le champ 5.<br />";
}
else
{
    $MailBody .= "Téléphone Mobile : $champ5\n";
}

if($champ6 == "")
{
    echo "Vous n'avez pas complété le champ 6.<br />";
    $Envoi = 0;
}
else
{
    
    if(check_mail($champ6))
    {
        $MailBody .= "Mail : $champ6\n";
    }
    else
    {
        echo "L'adresse e-mail du champ 6 n'est pas valide<br />";
        $Envoi = 0;
    }
    

    $MailBody .="Votre demande de renseignement porte sur : ";
    $items = 3; //initialisation du nombre d'items possibles

    for ($i = 1; $i <= $items; $i++) //boucle sur le nombre d'items
    {
        $MailBody .= "$champ7[$i], "; //stockage des items choisis dans la variable MailBody
    }
    
    if ($Envoi == 0)
        echo "<p align=\"center\"><a href=\"c_outils/c_formulaire.html\"><strong>Retour</strong></a></p>";

    if ($champ8 == "")
    {
        echo "Vous n'avez pas complété le champ 8.<br />";
        $Envoi = 0;
    }
    else
    {
        $MailBody .= "Commentaire : $champ8\n";
    }

//Envoi du message
    if ($Envoi == 1) //vérification que la variable envoi est bien à 1
    {
        mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message
        echo "<p>Votre message a bien été envoyé.<br>Merci de vos commentaires.";
        echo "<p align=\"center\"><a href=\"formulaire.html\"><strong>Retour</strong></a></p>"; //affichage d'un message de confirmation.
    }
echo '</body>';
echo '</html>';
?>
 
c'est exactement pareil ca ne change rien. Quel est le problème ?

Si quelqu'un veut bien m'aider je peut lui envoyer mes deux pages pour voir ce qui ne va pas ?

Merci de m'aider svp c'est très important.
 
J'ai ce message d'erreur :



Parse error: parse error in p:\easyphp1-8\www\site\formulaire\nadform.php3 on line 136

et la ligne 136 c'est la fin du code donc je ne sais pas.

Quel est le problème ?
 
merci ca marche. mais j'ai encore un problème maintenant il me mette :

Notice: Undefined variable: champ6 in p:\easyphp1-8\www\site\formulaire\nadform.php on line 32

Notice: Undefined variable: champ1 in p:\easyphp1-8\www\site\formulaire\nadform.php on line 38
Vous n'avez pas complété le champ 1.

Notice: Undefined variable: champ2 in p:\easyphp1-8\www\site\formulaire\nadform.php on line 48
Vous n'avez pas complété le champ 2.

.....

Pour tout le formulaire pourtant je le complète.
 
Je peux t'envoyer mes pages par mail que tu m'aide stp j'en es marre ca fait 8h je suis sur ce code..

Répond stp merci
 
Alors personne ne veut m'aider ?

Si quelqu'un est intéresser je lui envoi mes 2pages par mail et il pourra me dire ce qui cloche dans mon code.

Merci
 
Je pense avoir trouver, faut-il que je déclare mes variables avant et que je les initialise a 0?


Mais comment faire pour quel soit remplis par une auitre page?



Merci de répondre
 
En fait en PHP3 on pouvait acc&#233;der au variable passer via un formulaire directement par $nomvar.

Maintenant il faut utiliser le tableau $_POST ou $_GET (selon la valeur de l'attribut method de la balise d'ouverture du formulaire en question).

$_POST['champ6'] par exemple.



PS : on dit "merci d'avance pour vos r&#233;ponse" c'est plus polie d&#233;j&#224; que "merci de r&#233;pondre", qui est une obligation, ou presque...
 
Donc si je met $_post sur mes champ ils vont se remplir par rapport a ce que je met dans l'autre page ?


Merci pour vos réponse.
 
ok je pense que c'est bon.


Maintenant parce que les problème n'arrivent jamais seul qu'est ce qui ne va pas dans ce code :

if($champ4 == $_POST['champ4'])
{
echo "Vous n'avez pas complété le champ 4.<br />";
$Envoi = 0;
}
else
{
$Mailbody .= "Téléphone : $champ4\n";
}

Et aussi dans :

if($champ6 == $_POST['champ6'])
{
echo "Vous n'avez pas complété le champ 6.<br />";
$Envoi = 0;
}
else
{

if(check_mail($_POST[champ6]))
{
$MailBody .= "Mail : $champ6\n";
}
else
{
echo "L'adresse e-mail du champ 6 n'est pas valide<br />";
$Envoi = 0;
}
}


Et pour finir dans :

$host = explode('@', $champ6);
if(checkdnsrr($host[1].'.', 'MX'))
return true;

Merci pour vos réponses.
 
Donc si je met $_post sur mes champ ils vont se remplir par rapport a ce que je met dans l'autre page ?


Merci pour vos r&#233;ponse.
En PHP, les variables sont sensibles &#224; la casse (tu connais vraiment un peu de PHP ?) donc ce n'est pas $_post mais bien $_POST.

Je ne vois pas trop ce que tu veux faire, ce que tu appel "mes champ"s c'est les variables $champ1, $champ6... ?
Si oui je suppose que dans le formulaire il y a les name et les id qui sont "champ1", "champ2"...
Donc tu peux lire les valeurs de ces champs dans le tableau $_POST : $_POST['champ1'] par exemple.


EDIT : j'ai manger entre temps il n'y avait pas encore les deux pr&#233;c&#233;dente r&#233;ponse.
Le lien de gloup gloup et le tuto du site du z&#233;ro dont je t'ai parl&#233;, il est bien foutu.
Bloc de code:
if($champ4 == $_POST['champ4'])
Tu veux tester quoi ? que contient la variable $champ4 ?
 
C'est tout simple je veux dire si la variable $champ1 est nulle alors afficher "vous n'avez pas complété le champ1"

Sinon afficher champ1. Voila

Merci pour vos réponses
 
C'est tout simple je veux dire si la variable $champ1 est nulle alors afficher "vous n'avez pas compl&#233;t&#233; le champ1"

Sinon afficher champ1. Voila

Merci pour vos r&#233;ponses
Bloc de code:
if (!empty(trim($_POST['champ1'])) {}
&#231;a test si la variable est vide (ne contient rien), m&#234;me pas des espaces.
 
if (!empty(trim($_POST['champ1']))

ca ne marche pas il me dit :

Parse error: parse error, expecting `T_VARIABLE' or `'$'' in p:\easyphp1-8\www\site\formulaire\nadform.php on line 41

Pourquoi ?

Merci