FORMULAIRE qui cloche en PHP
Résolu/Fermé
Lrt88
Messages postés
930
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
12 août 2018
-
12 févr. 2009 à 22:42
974_Vin's_974 Messages postés 547 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 19 février 2009 - 13 févr. 2009 à 09:05
974_Vin's_974 Messages postés 547 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 19 février 2009 - 13 févr. 2009 à 09:05
A voir également:
- FORMULAIRE qui cloche en PHP
- Formulaire de réclamation facebook - Guide
- Easy php - Télécharger - Divers Web & Internet
- Formulaire instagram compte suspendu - Guide
- Retour a la ligne php ✓ - Forum PHP
- Confirmer le nouvel envoi du formulaire err_cache_miss ✓ - Forum HTML
8 réponses
Salut,
le mode strict est activé sur ton serveur, ca te remonte des erreurs pas forcement importantes mais c'est bien car permet d'être plus rigoureux :)
Tu as raison il faut bien faire un isset, mais dans ce cas la variable "$nom" est definie uniquement dans le bloc "if",
ce qui n'est pas le cas lors du premier affichage du formulaire,il faut donc reprendre les variables POST pour que le formulaire conserve les données lors d'une erreur.
De plus, je ne voit pas l'interet des "mysql_real_escape' ici, je l'ai ai retiré mais tu pourra les remettre,
a condition de vouloir stocker dans une base de données avec une connexion ouvrte a ce moment du script,
donc inutile si tu envoie simplement les données par mail comme dans ton code.
voila ce que cela donne :
bon courage :)
le mode strict est activé sur ton serveur, ca te remonte des erreurs pas forcement importantes mais c'est bien car permet d'être plus rigoureux :)
Tu as raison il faut bien faire un isset, mais dans ce cas la variable "$nom" est definie uniquement dans le bloc "if",
ce qui n'est pas le cas lors du premier affichage du formulaire,il faut donc reprendre les variables POST pour que le formulaire conserve les données lors d'une erreur.
De plus, je ne voit pas l'interet des "mysql_real_escape' ici, je l'ai ai retiré mais tu pourra les remettre,
a condition de vouloir stocker dans une base de données avec une connexion ouvrte a ce moment du script,
donc inutile si tu envoie simplement les données par mail comme dans ton code.
voila ce que cela donne :
<html> <head></head> <body> <?php if($_POST){ //Récupération des données du formulaire---------------------------- $nom = htmlspecialchars($_POST['nom']); $mail = htmlspecialchars($_POST['mail']); $sujet = htmlspecialchars($_POST['sujet']); $message = htmlspecialchars($_POST['message']); //------------------------------------------------------------------ //Gestion des erreurs de saisie------------------------------------- $erreurs = array(); if( empty($nom)) $erreurs[] = "il manque votre nom"; if( empty($mail)) $erreurs[] = "il manque votre adresse email"; if( empty($sujet)) $erreurs[] = "il manque le sujet"; if( empty($message)) $erreurs[] = "il manque votre message"; //------------------------------------------------------------------ if(empty($erreurs)) { $from = $mail; $reply = $from; $to = "fjc@fucam.ac.be"; //Mettez l'email de destination ici //Mise en forme du contenu au format HTML----------------------- $contenu = "message de : ".$nom; $contenu .= "<br /> Message: <br />"; $contenu .= $message; //-------------------------------------------------------------- //Entêtes de formatage de l'email en mode HTML------------------ $headers = 'MIME-Version: 1.0' . "\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n"; $headers .= 'From: '.$from."\n"; $reply = $headers."Reply-to: ".$reply."\n"; //--------------------------------------------------------------- //Déclenchement de l'email et reroutage vers une autre page----- $resultat = mail($to, $sujet, $contenu, $reply); if($resultat) { echo "email envoyé"; } else { echo "Echec de l'envoi de l'email"; } die(); } else { $texte_erreur = implode("<br />",$erreurs); print "<b style='color:red'>".$texte_erreur."</b><br><br>"; } } ?> <form action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data" name="form1" id="form1"> <strong><u> Formulaire de contact par email</u></strong><br/> <label for="nom"> Votre nom: </label><br /><input type="text" name="nom" value="<?php if (isset($_POST['nom'])) print $_POST['nom']; ?>" ><br /> <label for="mail">Votre adresse email : </label><br /><input type="text" name="mail" value="<?php if (isset($_POST['mail'])) print $_POST['mail']; ?>" /><br /> <label for="sujet"> Sujet du message: </label><br /><input type="text" name="sujet" value="<?php if (isset($_POST['sujet'])) print $_POST['sujet']; ?>" /> <label for="message"> Votre message: </label><br /><textarea name="message" rows="10" cols="40"><?php if (isset($_POST['message'])) print $_POST['message']; ?>Votre message ici.</textarea><br /> <input type="submit" value="Envoyer" /> </form> </body> </html>
bon courage :)
974_Vin's_974
Messages postés
547
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
19 février 2009
102
13 févr. 2009 à 06:59
13 févr. 2009 à 06:59
Ca bug à la ligne 80 .. Elle corespond à quoi dans ton code ???
Lrt88
Messages postés
930
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
12 août 2018
267
13 févr. 2009 à 08:49
13 févr. 2009 à 08:49
Les 3 lignes de code qui pause problème sont la 80 (dans la case 1)
La ligne 81 (dans la case 2)
la ligne 82 (dans la case 3)
les voici:
<label for="nom"> Votre nom: </label><br /><input type="text" name="nom" value="<?php if (isset($_POST['nom'])) print $_POST['nom']; ?>" ><br />
<label for="mail">Votre adresse email : </label><br /><input type="text" name="mail" value="<?php if (isset($_POST['mail'])) print $_POST['mail']; ?>" /><br />
<label for="sujet"> Sujet du message: </label><br /><input type="text" name="sujet" value="<?php if (isset($_POST['sujet'])) print $_POST['sujet']; ?>" />
La ligne 81 (dans la case 2)
la ligne 82 (dans la case 3)
les voici:
<label for="nom"> Votre nom: </label><br /><input type="text" name="nom" value="<?php if (isset($_POST['nom'])) print $_POST['nom']; ?>" ><br />
<label for="mail">Votre adresse email : </label><br /><input type="text" name="mail" value="<?php if (isset($_POST['mail'])) print $_POST['mail']; ?>" /><br />
<label for="sujet"> Sujet du message: </label><br /><input type="text" name="sujet" value="<?php if (isset($_POST['sujet'])) print $_POST['sujet']; ?>" />
974_Vin's_974
Messages postés
547
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
19 février 2009
102
13 févr. 2009 à 08:51
13 févr. 2009 à 08:51
Essaye ca, si ca marche pas jte donnerais une otre recette ... Le print il te servai a koi ???
<label for="nom"> Votre nom: </label><br /><input type="text" name="nom" value="<?php if (isset($_POST['nom'])) echo $_POST['nom']; ?>" ><br />
<label for="mail">Votre adresse email : </label><br /><input type="text" name="mail" value="<?php if (isset($_POST['mail'])) echo $_POST['mail']; ?>" /><br />
<label for="sujet"> Sujet du message: </label><br /><input type="text" name="sujet" value="<?php if (isset($_POST['sujet'])) echo $_POST['sujet']; ?>" />
<label for="nom"> Votre nom: </label><br /><input type="text" name="nom" value="<?php if (isset($_POST['nom'])) echo $_POST['nom']; ?>" ><br />
<label for="mail">Votre adresse email : </label><br /><input type="text" name="mail" value="<?php if (isset($_POST['mail'])) echo $_POST['mail']; ?>" /><br />
<label for="sujet"> Sujet du message: </label><br /><input type="text" name="sujet" value="<?php if (isset($_POST['sujet'])) echo $_POST['sujet']; ?>" />
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Lrt88
Messages postés
930
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
12 août 2018
267
13 févr. 2009 à 08:53
13 févr. 2009 à 08:53
oki j'essaie tout de suite,
le print sert quand la personne n'a pas entièrement rempli le questionnaire; l'echo est censé servir à remettre dans les cases ce que la personne a déjà rempli.
le print sert quand la personne n'a pas entièrement rempli le questionnaire; l'echo est censé servir à remettre dans les cases ce que la personne a déjà rempli.
Lrt88
Messages postés
930
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
12 août 2018
267
13 févr. 2009 à 09:00
13 févr. 2009 à 09:00
T'as solution marche ! Grand merci
(ya encore des couilles dans mon formulaires mais ce premier problème est résolu. Pour les autres,je vais d'abord essayer de me débrouiller seul)
(ya encore des couilles dans mon formulaires mais ce premier problème est résolu. Pour les autres,je vais d'abord essayer de me débrouiller seul)
Lrt88
Messages postés
930
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
12 août 2018
267
13 févr. 2009 à 09:02
13 févr. 2009 à 09:02
Oh je viens seulement de remarquer le message de Boost. Merci d'essayer de m'aider, c'est super sympa. Je regarderai si dans ce que tu me proposes me permet de résoudre d'autres problèmes
MERCI A TOUS LES 2
MERCI A TOUS LES 2
974_Vin's_974
Messages postés
547
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
19 février 2009
102
13 févr. 2009 à 09:05
13 févr. 2009 à 09:05
Ok pas d'probleme !!!