Besoin de l'aide d'un king en php [urgent]

Résolu
lambert__ch Messages postés 25 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 23 novembre 2006 - 21 nov. 2006 à 15:40
lambert__ch Messages postés 25 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 23 novembre 2006 - 23 nov. 2006 à 10:26
Bonjour tout le monde.

je suis actuellement occupé à faire un site pour l'entreprise d'un pote et je suis confronté à un problème PHP, alors je cache rien moi le php je sais même pas c'est quoi ^^.
En réalité je cherche à faire un formulaire de contact depuis une simple page, et jusqu'ici j'ai réussi à assembler des bribes de codes trouvés un peu partout mais le résultat fonctionne pas (bouuuuh).
Si vous souhaitez le prévisualiser, une version "bêta" est déja en ligne, et vous pourrez juger vous-même du problème en remplissant le formulaire : il dit qu'un erreur est survenue. Il est ici : www.placodesign.be

J'ai relu et relu encore le code de la page mais rien ne m'a semblé anormal (faut dire aussi que j'y connais que dalle) alors si quelqu'un avait l'amabilité de me tirer d'affaire je lui serais très reconnaissant.
Un tout petit détail à surement dû m'échapper, c'est peut-être du au serveur également ça j'en sais rien. En tous cas je mets le code de ma page à disposition des experts qui auraient la gentillesse de m'aider

D'avance un grand merci pour votre attention.
kaRli.

je colle ici le code de ma page php au cas ou quelqu'un pourrait la "corriger" :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn= "#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
if(isset($_POST['submit'])){
 $erreur="";
 // Nettoyage des entrées
 while(list($var,$val)=each($_POST)){
 if(!is_array($val)){
  $$var=strip_tags($val);
 }else{
  while(list($arvar,$arval)=each($val)){
    $$var[$arvar]=strip_tags($arval);
   }
  }
 }
 // Formatage des entrées
 $f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_1)));
 $f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
 $f_3=strip_tags(trim($f_3));
 $f_5=trim(eregi_replace("[^0-9\ +]", "", $f_5));
 $f_6=trim(eregi_replace("[^0-9\ +]", "", $f_6));
 // Verification des champs
 if(strlen($f_1)<2){
  $erreur.="<li>Le champ &laquo; Nom &raquo; est vide ou incomplet.";
  $errf_1=1;
 }
 if(strlen($f_2)<2){
  $erreur.="<li>Le champ &laquo; Prénom &raquo; est vide ou incomplet.";
  $errf_2=1;
 }
 if(strlen($f_3)<2){
  $erreur.="<li>Le champ &laquo; E-mail &raquo; est vide ou incomplet.";
  $errf_3=1;
 }else{
  if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
  [mailto:'@' '@'].
  '[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
  '[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
  $f_3)){
   $erreur.="<li>La syntaxe de votre adresse e-mail n'est pas correcte.";
   $errf_3=1;
  }
 }
 if(strlen($f_4)<2){
  $erreur.="<li>Le champ &laquo; Sujet de la demande &raquo; est vide ou incomplet.";
  $errf_4=1;
 }
 if($erreur==""){
  // Création du message
  $titre="Site - Demande de devis";
  $tete="From:Site@Placodesign.be\n";
  $corps.="Nom : ".$f_1."\n";
  $corps.="Prénom : ".$f_2."\n";
  $corps.="E-mail : ".$f_3."\n";
  $corps.="Sujet de la demande : ".$f_4."\n";
  $corps.="Tél. : ".$f_5."\n";
  $corps.="GSM : ".$f_6."\n";
  if(mail("[mailto:lambert-ch@ateliersdumanoir.be lambert-ch@ateliersdumanoir.be]", $titre, stripslashes($corps), $tete)){
   $ok_mail="true";
  }else{
   $erreur.="<li>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.";
  }
 }
}
?>
<!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>
<TITLE>Demande de devis</TITLE>
<style type="text/css" media="screen"><!--
INPUT { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
SELECT { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
TEXTAREA { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
.txterror { color: white; font-size: 11px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
.txtform { color: white; font-size: 12px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
--></style>
</HEAD>

Devis

<? if($ok_mail =="true"){ ?>
   ----
Le message ci-dessous nous a bien été transmis, et nous vous en remercions.,
  ----
&nbsp;,
  ----
<tt><?echo nl2br(stripslashes($corps));?></tt>,
  ----
&nbsp;,
  ----
Nous allons y donner suite dans les meilleurs délais.
A bientôt.,
 

<? }else{ ?>
<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>
<? if($erreur){ ?>----
&nbsp;ERREUR, votre message n'a pas été transmis, ----
<?echo$erreur?>, <?}?>
----
Les champs marqué d'un * sont obligatoires,
----
Nom* :, ;' name='f_1' value='<?echo stripslashes($f_1);?>' size='24' border='0'>,
----
Prénom* :, ;' name='f_2' value='<?echo stripslashes($f_2);?>' size='24' border='0'>,
----
E-mail* :, ;' name='f_3' value='<?echo stripslashes($f_3);?>' size='24' border='0'>,
----
Sujet de la demande* :, <textarea style='width:360 <?if($errf_4==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_4' rows='6' cols='40'><?echo$f_4?></textarea>,
----
Tél. :, ;' name='f_5' value='<?echo stripslashes($f_5);?>' size='24' border='0'>,
----
GSM :, ;' name='f_6' value='<?echo stripslashes($f_6);?>' size='24' border='0'>,
----
,

</form>
<? } ?>

</HTML>

10 réponses

lambert__ch Messages postés 25 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 23 novembre 2006
23 nov. 2006 à 10:26
Rooooh mdr !!!!!

le petit poit d'interrogation action="?" a tout résolu .....



Vraiment un grand merci pour ton explication et tes conseils, et merci aussi à audayls pour sa version corrigée du code vous m'avez été d'un grand secours !



Dès que vous avez besoin de moi (de préférence en actionscript ou en javascript) n'hésitez pas à me mailer.


Encore merci et bonne continuation
3
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
21 nov. 2006 à 16:50
uhm... la fonction mail() est activée chez ton hébergeur au moins... .. ?

@ tchaoo°

l'homme est un loup pour l'homme... .. .
0
lambert__ch Messages postés 25 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 23 novembre 2006
21 nov. 2006 à 19:30
Tout d'abord merci pour ta réponse.

En fait je m'étais déja posé cette question par rapport à un post que j'avais lu vite-fait sur un forum, alors j'ai été jeter un oeil sur les réglages serveur via le "cpanel" de hosteur mais j'ai rien trouvé qui ressemblait à une quelconque option mail(). Tu saurais pas m'en dire plus car la je suis dans le vague.

Merci d'avance
0
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
22 nov. 2006 à 00:08
Salut,
Voici une version modifié de ton code :




<?php





if (!empty($_SERVER['HTTP_REFERER'])) $_SERVER['HTTP_REFERER'] = explode('?',$_SERVER['HTTP_REFERER']);
echo '<!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=iso-8859-15" />
        <title>Demande de devis</title>
            <style type="text/css" media="screen">
                <!--
                body {
                    background-color: #7A032A;
                }
                input {
                    color: #000;
                    font-size: 11px;
                    font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular;
                    background-color: #EEEEEE;
                }
                select {
                    color: #000;
                    font-size: 11px;
                    font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular;
                    background-color: #EEEEEE;
                }
                textarea {
                    color: #000;
                    font-size: 11px;
                    font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular;
                    background-color: #EEEEEE;
                }
                .txterror {
                    color: white;
                    font-size: 13px;
                    font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular;
                }
                .txtform {
                    color: white;
                    font-size: 12px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular;
                }
                #devis {
                    color: #FF99CC;
                    font-size: 40px;
                    font-family: Geneva, Arial, Helvetica, sans-serif;
                    font-weight: bold;
                }
                -->
            </style>
            <script type="text/Javascript">
                <!--
                    function verif(Form) {
                        if (document.devis.nom.value == "") {
                            alert("Le Champ Nom est obligatoire.");
                            document.devis.nom.focus();
                            return false;
                        }
                        else if (document.devis.prenom.value == "") {
                            alert("Le Champ Prénom est obligatoire.");
                            document.devis.nom.focus();
                            return false;
                        }
                        else if (document.devis.email.value == "") {
                            alert("Le Champ E-Mail est obligatoire.");
                            document.devis.email.focus();
                            return false;
                        }
                        else if (document.devis.demande.value == "") {
                            alert("Le Champ Demande est obligatoire.");
                            document.devis.demande.focus();
                            return false;
                        }
                    }
                -->
            </script>
    </head>
   
       
            Devis
       

';
    if (isset($_POST['submit']) AND $_SERVER['HTTP_REFERER'][0] === 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']) {
        $erreur = 0;
        $message_erreur = '';
       
        if (empty($_POST['nom'])) $erreur = 1;
        elseif (empty($_POST['prenom'])) $erreur = 2;
        elseif (empty($_POST['email'])) $erreur = 3;
        elseif (!preg_match('/^[-a-z0-9\._]+@[-a-z0-9\.]+\.[a-z]{2,4}$/i', $_POST['email'])) $erreur = 4;
        elseif (empty($_POST['demande'])) $erreur = 5;
        else {
            $_POST['nom'] = htmlentities($_POST['nom']);
            $_POST['prenom'] = htmlentities($_POST['prenom']);
            $_POST['email'] = htmlentities($_POST['email']);
            $_POST['demande'] = htmlentities($_POST['demande']);
            $message = 'Nom : '.$_POST['nom']."\n".'Prénom : '.$_POST['prenom']."\n".'Adresse E-Mail : '.$_POST['email']."\n".'Sujet de la demande : '.$_POST['demande']."\n";
            if (isset($_POST['telephone'])) {
                $_POST['telephone'] = htmlentities($_POST['telephone']);
                $message .= 'Telephone : '.$_POST['telephone']."\n";
            }
            else $message .= 'Telephone : (Aucun numéro de téléphone n\'a été indiqué)'."\n";
            if (isset($_POST['gsm'])) {
                $_POST['gsm'] = htmlentities($_POST['gsm']);
                $message .= 'GSM : '.$_POST['telephone']."\n";
            }
            else $message .= 'GSM : (aucun numéro de GSM n\'a été indiqué)'."\n";
            $message = stripslashes($message);
            $headers = 'From: Site@Placodesign.be'."\r\n".'Reply-To: lambert-ch@ateliersdumanoir.be'."\r\n".'Message-ID: <'.time().rand(1,1000).'@'.$_SERVER['SERVER_NAME'].'>'."\r\n".'X-Mailer: PHP/'.phpversion();
            if(mail('lambert-ch@ateliersdumanoir.be', 'Site - Demande de devis', $message, $headers)) echo 'Le message ci-dessous nous a bien été transmis, et nous vous en remercions.';
            else $erreur = 6;
        }
}
if (empty($_POST['submit']) OR isset($erreur)) {
    if (isset($erreur) AND $erreur === 6) echo 'Une erreur est survenue lors de l\'envoi de votre demande. Veuillez réessayer.

';
    echo '
        <form action="',$_SERVER['PHP_SELF'],'" method="post" name="devis" onsubmit="javascript: return verif()">
                            ----

                                            Les champs marqué d\'un * sont obligatoires
                   ,
                    ,
                    ,
               
                ----

                                            Nom* :
                   ,
                                            'nom'])) echo stripslashes($_POST['nom']);
    echo '" size="24" />
                   ,
                                            ';
    if (isset($erreur) AND $erreur === 1) echo 'Ce champ est obligatoire.';
    echo '
                   ,
               
                ----

                                            Prénom* :
                   ,
                                            ;
    if (isset($_POST['prenom'])) echo stripslashes($_POST['prenom']);
    echo '" size="24" />
                   ,
                                            ';
    if (isset($erreur) AND $erreur === 2) echo 'Ce champ est obligatoire.';
    echo '
                   ,
               
                ----

                                            Adresse E-Mail* :
                   ,
                                            ;
    if (isset($_POST['email'])) echo stripslashes($_POST['email']);
    echo '" />
                   ,
                                            ';
    if (isset($erreur) AND $erreur === 3) echo 'Ce champ est obligatoire.';
    elseif (isset($erreur) AND $erreur === 4) echo 'L\'adresse E-Mail indiquée n\'est pas correcte.';
    echo '
                   ,
               
                ----

                                            Sujet de la demande* :
                   ,
                                            <textarea name="demande" rows="6" cols="40">';
    if (isset($_POST['demande'])) echo stripslashes($_POST['demande']);
    echo '</textarea>
                   ,
                                            ';
    if (isset($erreur) AND $erreur === 5) echo 'Ce champ est obligatoire.';
    echo '
                   ,
               
                ----

                                            Téléphone :
                   ,
                                            ;
    if (isset($_POST['telephone'])) echo stripslashes($_POST['telephone']);
    echo '" size="12" />
                   ,
                    ,
               
                ----

                                            GSM :
                   ,
                                            ;
    if (isset($_POST['gsm'])) echo stripslashes($_POST['gsm']);
    echo '" size="12" />
                   ,
                    ,
               
                ----

                    ,
                                           
                   ,
                    ,
               
           

        </form>';
}
    echo '
   
</html>';
?>






For every choice, a consequence (Fable)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lambert__ch Messages postés 25 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 23 novembre 2006
22 nov. 2006 à 10:19
Merci pour ta réponse.

Je viens de tester le code à l'instant, et contre toute attente j'ai encore eu la même erreur de renvoyée par le formulaire : "

Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative."

Si tu es sûr à 100% de l'efficacité de ton code, il se pourrait que ça vienne du serveur ou la fonction mail() n'est pas activée comme on me l'a dit précédemment, mais je trouve pas -via les paramètres d'hosteur-, comment activer cette fonction. Personne ne sait comment faire ?

Merci d'avance
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
22 nov. 2006 à 11:04
Deux solutions (complémentaires)

-1- tu fais un fichier pwet.php dans lequel tu met

<?php phpinfo(); ?>

tu vas dessus et tu regarde à la ligne disable_function (début du second tableau) si mail n'y est pas

-2- tu regarde dans la FAQ de ton hébergeur et éventuellement tu lui envois un mail pour savoir si la fonction est désactivée ou modifiée... .. .

@ tchaOo°

ps : @ [auteurdetail.aspx?ID=547458 audayls]... c'est mieux... plus propre et surtout plus sécurisé... lOoOl... un petit return true; à la fin de la fonction javascript verif() et ce sera tip top... par contre le test sur le referer bien qu'utile n'est pas sûr et risque de planter avec certains utilisateurs qui ne sont pas mal intentionnés mais dont le firewall bloque le referer... .. .

l'homme est un loup pour l'homme... .. .
0
lambert__ch Messages postés 25 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 23 novembre 2006
22 nov. 2006 à 13:47
Je confirme : la fonction mail() est bel et bien activée sur le serveur, tes 2 astuces me l'ont confirmé.
Bon du coup je suis vraiment paumé, même la version du code corrigée aimablement par notre ami
audayls

 ne fonctionne pas, je sais plus ou donner de la tête pour faire fonctionner ce bête formulaire. Personne n'aurait sous la main le code d'un formulaire correct à me filer pour que je l'optimise selon mes besoins ?

En tous cas merci pour tout.
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
22 nov. 2006 à 14:46
Le code de Audayls est fonctionel et correct... je vois pas en quoi changer de script résoudra le problème... quand à l'optimiser si tu n'est pas capable de trouver ce qui ne marche pas je pense que c'est hors sujet... .. .

Met...
 
error_reporting(E_ALL);

au tout début du script et regarde si des erreurs s'affichent... .. .

@ tchaOo°

l'homme est un loup pour l'homme... .. .
0
lambert__ch Messages postés 25 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 23 novembre 2006
22 nov. 2006 à 16:08
lol audayls m'a fait un code terrible, la page a presque pas bougé et tout le code a été corrigé.
toujours est-il qu'il va pas ...
j'ai touché à rien, j'ai fait copier/coller alors si il est correct comme tu dis ou est le problème ???

La page php est ouverte par un javascript popup, est-ce que ça influence ?
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
22 nov. 2006 à 16:13
Uhm... ça ne répond pas à ce que je t'ais demandé dans le post précédant... .. .

A vu de nez tu as changé des chose dans le code qui t'a été donné... c'est domage soit dit en passant là où le code d'Audayls était valide xhtml le tient ne l'est plus... enfin bref... déja met un ? dans l'attribut action de la balise html form... .. .

action="?"

Ensuite fais ce que je t'ais demandé... .. .

@ tchaOo°

l'homme est un loup pour l'homme... .. .
0
Rejoignez-nous