K-Ola Posté 11 Juin 2010 Posté 11 Juin 2010 Dans mon exemple de traitement contact, il manque des " , essais avec cette nouvelle version: <div id="traitement_contact"> <? $nom = $_POST['nom']; $prenom = $_POST['prenom']; $mail = $_POST['mail']; $tel = $_POST['tel']; $sujet = $_POST['sujet']; $message_internaute = $_POST['message']; ?> <h1>Confirmation des informations</h1> <p><strong>Confirmez-vous l'exactitude des informations suivantes ?</strong></p> <p> <?php echo htmlentities('' . $nom . ' ' . $prenom . ''); ?><br/> <?php echo htmlentities('' . $mail . ''); ?><br/> <?php echo htmlentities('' . $tel . ''); ?><br/><br/> Sujet de votre message : <?php echo htmlentities('' . $sujet . ''); ?><br/><br/> Votre message : <br/> <?php echo htmlentities('' . $message_internaute . ''); ?> </p> <form method="post" action="envoi_contact.php"> <input type="hidden" name="nom" value="<?=$nom?>"> <input type="hidden" name="prenom" value="<?=$prenom?>"> <input type="hidden" name="sujet" value="<?=$sujet?>"> <input type="hidden" name="mail" value="<?=$mail?>"> <input type="hidden" name="tel" value="<?=$tel?>"> <input type="hidden" name="message" value="<?=$message_internaute?>"> <input id="submit" type="submit" value="Ok" /> <input id="submit" type="button" value="Retour" onclick="history.back()"/> </form> </div>
Valtiel Posté 11 Juin 2010 Auteur Posté 11 Juin 2010 Salut, j'ai également apporté quelques modifications du code concernant les pages "traitement_contact" et "envoi_contact". J'ai enlevé les htmlentities() des variables récupérées avec $_POST car ça déformait tous les caractères spéciaux. J'ai également ajouté les " aux endroits que tu m'as indiqué et résultat, une amélioration, je reçois le message complet désormais Par contre, j'ai maintenant des \\\ avant les '. Lors du récapitulatif des informations, l'internaute voit un unique \ avant les ', dans ma boîte mail j'en ai 3. Concernant les autres caractères, aucune erreur.
K-Ola Posté 11 Juin 2010 Posté 11 Juin 2010 Ok c'est déjà pas mal , on avance Alors pour enlever les \ , tu peux utiliser la fonction stripslashes() juste avant l'envoi du mail
Valtiel Posté 11 Juin 2010 Auteur Posté 11 Juin 2010 (modifié) Cela fonctionne, plus d'antislashes désagréables qui se baladent mais par contre, là je me dis que l'informatique est d'un mystère infini... Je ne reçois désormais plus le mail ". C'est décourageant :/. PS : Bon en fait, je ne reçois plus de mail sur l'adresse mail de mon nom de domaine, par contre sur gmail pas de soucis... incompréhensible mais si ce n'est que ça, je m'en contenterais. Par contre, est-ce possible de donner une largeur fixe à une ligne PHP ? Car si j'entre un très long message dans la partie prévue à cet effet, sur la page de traitement le message déborde complètement sur la droite et reste sur une seule et unique ligne. J'ai essayé de mettre cette même ligne de code dans un <p id="message_internaute"></p> avec en CSS width: 700px et même un display: inline-block mais rien n'y fait. Modifié 11 Juin 2010 par Valtiel
K-Ola Posté 11 Juin 2010 Posté 11 Juin 2010 C'est que de la logique. Alors, le problème doit venir de l'endroit ou tu as mis tes stripslashes(). L'idéal, c'est des les mettre avant de refaire un addslashes() (pour ne pas en avoir en double) à la deuxième étape de ton script.
Valtiel Posté 11 Juin 2010 Auteur Posté 11 Juin 2010 Tu voudrais que cela ressemble à ceci ? : <?php echo stripslashes(addslashes(htmlentities('' . $tel . ''))); ?>
K-Ola Posté 11 Juin 2010 Posté 11 Juin 2010 En fait tu pourrais avoir quelque cose comme ça dans traitement_contact: <div id="traitement_contact"> <? $nom = strip_tags($_POST['nom']); $prenom = strip_tags($_POST['prenom']); $mail = strip_tags($_POST['mail']); $tel = strip_tags($_POST['tel']); $sujet = strip_tags($_POST['sujet']); $message_internaute = strip_tags($_POST['message']); ?> <h1>Confirmation des informations</h1> <p><strong>Confirmez-vous l'exactitude des informations suivantes ?</strong></p> <p> <?=stripslashes($nom). ' ' . stripslashes($prenom) . ''; ?><br/> <?=stripslashes($mail) ?><br/> <?=stripslashes($tel) ?><br/><br/> Sujet de votre message : <?=stripslashes($sujet); ?><br/><br/> Votre message : <br/><?=stripslashes($message_internaute); ?> </p> <form method="post" action="envoi_contact.php"> <input type="hidden" name="nom" value="<?=addslashes($nom)?>"> <input type="hidden" name="prenom" value="<?=addslashes($prenom)?>"> <input type="hidden" name="sujet" value="<?=addslashes($sujet)?>"> <input type="hidden" name="mail" value="<?=addslashes($mail)?>"> <input type="hidden" name="tel" value="<?=addslashes($tel)?>"> <input type="hidden" name="message" value="<?=addslashes($message_internaute)?>"> <input id="submit" type="submit" value="Ok" /> <input id="submit" type="button" value="Retour" onclick="history.back()"/> </form> </div> Puis dans envoi_contact: <div id="envoi_contact"> <p>Merci pour votre message, je vous répondrais dans les plus bref délais.</p> <? $nom = stripslashes($_POST['nom']); $prenom = stripslashes($_POST['prenom']); $mail = stripslashes($_POST['mail']); $tel = stripslashes($_POST['tel']); $sujet = stripslashes($_POST['sujet']); $message = stripslashes($_POST['message']); $destinataire = "ton_mail_AT_fai.com"; $expediteur = $mail; $reponse = $expediteur; $titre ='Formulaire de contact - '.$sujet; $message =' Nouveau message de ' . $prenom . ' ' . $nom . ' Tél.: ' . $tel . ' Message: ' . $message; mail($destinataire,$titre,$message,"From: ".$expediteur."\r\nReply-To: ".$reponse); ?> </div>
Valtiel Posté 11 Juin 2010 Auteur Posté 11 Juin 2010 Ok je vais essayer comme ça. Au passage, <?=$variable; ?> vaut-il un <? echo ' . $variable . '; ?> ? Car je me suis rendu compte que nous ne codons pas de la même façon et vu que je suis en plein apprentissage...
K-Ola Posté 11 Juin 2010 Posté 11 Juin 2010 Les "<?=" est une version courte de "echo" donc les deux sont identiques.
Valtiel Posté 11 Juin 2010 Auteur Posté 11 Juin 2010 Ok ok et bien, ta façon de coder est un poil plus complexe je trouve car au niveau après au niveau des ' et " c'est pas très clair. Exemple : <?=stripslashes($nom) . ' ' . stripslashes($prenom) . ''; ?> Je ne comprend pas pourquoi tu n'as pas mis de = sur le deuxième stripslashes() et pourquoi des ' . trainent ici et là... et pourtant ça fonctionne. Pourrais-tu m'éclairer là dessus histoire que je ne copie pas bêtement toutes ces lignes, je doute que ce soit une bonne façon d'apprendre .
K-Ola Posté 12 Juin 2010 Posté 12 Juin 2010 (modifié) Pour reprendre cet exemple, <?= est identique à echo Donc si on remplace, ça donnerait: <? echo stripslashes($nom) . ' ' . stripslashes($prenom); ?> Les '' de fin ne servaient à rien. Les . servent à concaténer les chaînes de caractères. Donc les ' ' , servent juste à faire un espace entre le nom et prénom. Pour les bases du php, tu peux jeter un coup d'œil sur ce site:/>http://www.lephpfacile.com/cours/ Modifié 12 Juin 2010 par K-Ola
Valtiel Posté 12 Juin 2010 Auteur Posté 12 Juin 2010 (modifié) Ok merci pour ces explications. En fait, j'apprends sur le site du zéro pour ma part et ils proposent d'apprendre à coder d'une façon différente de toi, pour ça . Bref, pour le formulaire, tout est ok, hormis des slashes encore mais uniquement au niveau de ma boîte mail mais très sincèrement, cela ne me dérange pas, du moment que c'est pas l'internaute qui s'en mange. Désormais, il me reste à faire la page devis. J'ai commencé à tout refaire et quand j'envoie le tout, les variables se mélangent lorsque je reçois les informations. En gros, à la place du sujet, j'ai le nom de l'internaute par exemple et il manque beaucoup de champs non envoyés mais je pense que c'est dû à la page "traitement_devis" au niveau des lignes "input" qui doivent être erronées. Voici les codes : Page devis : <form method="post" action="traitement_devis.php"> <h1>Devis</h1> <fieldset> <legend>Coordonnées</legend> <p id="civilite"> <label for="civilite">Civilité :</label> <input type="radio" name="civilite" value="Mlle" id="civilite" /> <label for="civilite">Mlle</label> <input type="radio" name="civilite" value="Mme" id="civilite" /> <label for="civilite">Mme</label> <input type="radio" name="civilite" value="Mr" id="civilite" /> <label for="civilite">Mr</label> <img src="images/puce_2.png"/> </p> <p> <label for="nom">Nom</label> : <br /> <input type="text" name="nom" id="nom" /> <img src="images/puce_2.png"/> </p> <p> <label for="nom">Prénom</label> : <br /> <input type="text" name="prenom" id="prenom" /> <img src="images/puce_2.png"/> </p> <p> <label for="statut">Vous êtes ?</label><br /> <select name="statut" id="statut"> <option value="une entreprise">Une entreprise</option> <option value="un organisme public">Un organisme public</option> <option value="une association">Une association</option> <option value="un créateur d'entreprise">Un créateur d'entreprise</option> <option value="autre">Autre</option> </select> <img src="images/puce_2.png"/> </p> <p> <label for="societe">Société :</label><br /> <input type="text" name="societe" id="societe" /> </p> <p> <label for="mail">Adresse e-mail :</label><br /> <input type="text" name="mail" id="mail" /> <img src="images/puce_2.png"/> </p> <p> <label for="tel">Numéro de téléphone :</label><br /> <input type="text" name="tel" id="tel" /> <img src="images/puce_2.png"/> </p> <p id="contact_devis"> <label for="contact">Vous souhaitez être contacté par :</label> <input type="radio" value="téléphone uniquement" name="contact" id="contact" /> <label for="Contact">Téléphone</label> <input type="radio" value="mail uniquement" name="contact" id="contact" /> <label for="Contact">Email</label> <input type="radio" value="téléphone ou par mail" name="contact" id="contact" /> <label for="Contact">Les deux</label> </p> </fieldset> <fieldset> <legend>Création site internet</legend> <p> <label for="activite">Votre activité :</label><br /> <input type="text" name="activite" id="activite" /> </p> <p> <label for="demande">Votre demande :</label><br /> <select name="demande" id="demande"> <option value="Pak Starter">Pack Starter</option> <option value="Pack Basic">Pack Basic</option> <option value="Pack Pro">Pack Pro</option> <option value="Pack Premium">Pack Premium</option> <option value="Pack Sur mesure">Pack Sur mesure</option> <option value="Pack Ecommerce">Pack Ecommerce</option> <option value="Autre">Autre</option> </select> <img src="images/puce_2.png"/> </p> <p> <label for="logo">Pack Logo :</label><br/> <select name="logo" id="logo"> <option value="avec">Avec</option> <option value="sans">Sans</option> </select> <img src="images/puce_2.png"/> </p> <p> <label for="referencement">Pack référencement :</label><br/> <select name="referencement" id="referencement"> <option value="avec">Avec</option> <option value="sans">Sans</option> </select> <img src="images/puce_2.png"/> </p> <p> <label for="forum">Pack forum :</label><br/> <select name="forum" id="forum"> <option value="avec">Avec</option> <option value="sans">Sans</option> </select> <img src="images/puce_2.png"/> </p> <br/><p> <label for="message">Message complémentaire :</label><br /> <textarea name="message" id="message"></textarea> <img src="images/infos_2.png" title="Soyez le plus clair et le plus précis possible dans la rédaction de votre message"> </p> </fieldset> <p id="requis"><img src="images/puce_2.png"/> Requis</p> <p id="submit"> <input type="submit" value="Ok" /> <input type="reset" /> </p> </form> Page traitement_devis : <div id="traitement_devis"> <? $civilite = strip_tags($_POST['civilite']); $nom = strip_tags($_POST['nom']); $prenom = strip_tags($_POST['prenom']); $statut = strip_tags($_POST['statut']); $societe = strip_tags($_POST['societe']); $mail = strip_tags($_POST['mail']); $tel = strip_tags($_POST['tel']); $contact = strip_tags($_POST['contact']); $activite = strip_tags($_POST['activite']); $demande = strip_tags($_POST['demande']); $logo = strip_tags($_POST['logo']); $referencement = strip_tags($_POST['referencement']); $forum = strip_tags($_POST['forum']); $message_internaute = strip_tags($_POST['message']); ?> <h1>Confirmation des informations</h1> <p><strong>Confirmez-vous l'exactitude des informations suivantes ?</strong></p> <fieldset> <legend>Coordonnées</legend> <p> <?=stripslashes($civilite) . ' ' . stripslashes($nom) . ' ' . stripslashes($prenom); ?><br/> <?=stripslashes('Vous êtes ' . $statut . ''); ?><br/> <?=stripslashes($societe); ?><br/> <?=stripslashes($mail); ?><br/> <?=stripslashes($tel); ?><br/> <?=stripslashes('Vous désirez être contacté par ' . $contact . ''); ?> </p> </fieldset> <fieldset> <legend>Création site internet</legend> <p> <?=stripslashes($activite);?><br/> <?=stripslashes('Votre demande concerne : ' . $demande . '');?><br/> <?=stripslashes('Pack logo : ' . $logo . '');?><br/> <?=stripslashes('Pack référencement : ' . $referencement . '');?><br/> <?=stripslashes('Pack forum : ' . $forum . '');?><br/> Votre message : <br/> <?=stripslashes($message_internaute);?> </p> </fieldset> <form method="post" action="envoi_devis.php"> <input type="hidden" name="nom" value="<?=$civilite?>"> <input type="hidden" name="nom" value="<?=$nom?>"> <input type="hidden" name="prenom" value="<?=$prenom?>"> <input type="hidden" name="sujet" value="<?=$statut?>"> <input type="hidden" name="mail" value="<?=$societe?>"> <input type="hidden" name="tel" value="<?=$mail?>"> <input type="hidden" name="message" value="<?=$tel?>"> <input type="hidden" name="nom" value="<?=$contact?>"> <input type="hidden" name="prenom" value="<?=$activite?>"> <input type="hidden" name="sujet" value="<?=$demande?>"> <input type="hidden" name="mail" value="<?=$logo?>"> <input type="hidden" name="tel" value="<?=$referencement?>"> <input type="hidden" name="nom" value="<?=$forum?>"> <input type="hidden" name="message" value="<?=$message_internaute?>"> <input id="submit" type="submit" value="Ok" /> <input id="submit" type="button" value="Retour" onClick="history.back()"/> </form> </div> Page envoi_devis : <div id="envoi_devis"> <p>Merci pour votre message, je vous répondrais dans les plus bref délais.</p> <? $civilite = strip_tags($_POST['civilite']); $nom = strip_tags($_POST['nom']); $prenom = strip_tags($_POST['prenom']); $statut = strip_tags($_POST['statut']); $societe = strip_tags($_POST['societe']); $mail = strip_tags($_POST['mail']); $tel = strip_tags($_POST['tel']); $contact = strip_tags($_POST['contact']); $activite = strip_tags($_POST['activite']); $demande = strip_tags($_POST['demande']); $logo = strip_tags($_POST['logo']); $referencement = strip_tags($_POST['referencement']); $forum = strip_tags($_POST['forum']); $message_internaute = strip_tags($_POST['message']); $destinataire = "contact_AT_webart-creation.fr"; $expediteur = $mail; $reponse = $expediteur; $titre = 'Formulaire de devis - ' . $demande . ''; $message = ' Nouveau message de ' . $civite . ' ' . $prenom . ' ' . $nom . ' Statut : ' . $statut . ' Société : ' . $societe . ' Tél. : ' . $tel . ' Méthode de contact : ' . $contact . ' Activité : ' . $activite . ' Pack Logo : ' . $logo . ' Pack Référencement : ' . $referencement . ' Pack Forum : ' . $forum . ' Message complémentaire : ' . $message_internaute . ''; mail($destinataire,$titre,$message,"From: ".$expediteur."\r\nReply-To: ".$reponse); ?> </div> Ici un exemple pour que tu comprennes mieux le problème. Modifié 12 Juin 2010 par Valtiel
K-Ola Posté 12 Juin 2010 Posté 12 Juin 2010 Relis ta page page traitement_devis , au niveau des champs hidden, il y a un problème.
Valtiel Posté 12 Juin 2010 Auteur Posté 12 Juin 2010 Comment passer pour un aveugle/idiot en une leçon ?! ... Je viens de voir que les champs "name" ne correspondaient pas du tout aux champs "value", trop de PC grille la vue et le cerveau... Navré pour cette bête étourderie, je refais ça et voit si un problème persiste.
Valtiel Posté 12 Juin 2010 Auteur Posté 12 Juin 2010 Bon, il va s'en dire que tout de suite, cela fonctionne beaucoup mieux... désolé de t'avoir fait perdre du temps à lire toutes ces lignes pour rien, à cause d'une grosse étourderie de ma part :s. Donc les deux formulaires fonctionnent, juste des / qui se baladent mais pas grave, ça ne me dérange pas puis avec le temps, je trouverais certainement de moi-même. Cependant, il me reste à coder les "champs requis" et pour se faire, est-ce que je peux faire ça directement dans les pages "traitement" ou dois-je en créer une autre ?
K-Ola Posté 12 Juin 2010 Posté 12 Juin 2010 Il faut que tu le fasse à deux endroits: dans ta page traitement ainsi que dans ta page devis. Pour cela, tu peux utiliser la fonction empty() .
Valtiel Posté 12 Juin 2010 Auteur Posté 12 Juin 2010 Ah ? Je vais me pencher sur les liens que tu m'as proposé au début du sujet et voir si j'arrive à m'en sortir seul. Je te tien au courant.
Valtiel Posté 12 Juin 2010 Auteur Posté 12 Juin 2010 Ah tien j'ai trouvé ceci au passage, ça peut être intéressant au vu des champs qui se colorent : />http://www.paperblog.fr/1682199/php-formulaire-de-contact-avec-champs-obligatoires/ J'ai effectué un essai avec (empty($var)) et sur la page traitement le message s'affiche correctement mais l'internaute peut malgré tout envoyer le formulaire pour le moment.
Valtiel Posté 13 Juin 2010 Auteur Posté 13 Juin 2010 Salut, J'ai tenté avec quelque chose de très simple genre : if (empty($nom)) { echo 'Veuillez indiquer votre nom. <br/>'; } elseif (empty($prenom)) { echo 'Veuillez indiquer votre prénom.<br/>'; exit(); } Mais malheureusement, le "exit ()" stop évidemment la lecture du code qui suit, si bien que la partie du bas du corps de mon site, le footer, etc... ne s'affichent pas. Existe t-il un moyen différent pour vérifier les champs requis ? J'ai pensé à une condition disant que si un champ n'est pas rempli, alors cette DIV ne s'affiche pas, peut-être que ceci pourrait résoudre l'inconvénient du "exit()".
K-Ola Posté 14 Juin 2010 Posté 14 Juin 2010 (modifié) Il y a plus simple: Si le champs est vide Alors erreur=1Fin siSi erreur != 1 Alors Affichage de la divFin si Je te laisses traduire ça en PHP Modifié 14 Juin 2010 par K-Ola
Valtiel Posté 14 Juin 2010 Auteur Posté 14 Juin 2010 Alors pour la traduction français > PHP je dirais : if (empty($var)) { $var2=1; end if; } if $var2!=1 { hidden(#DIV)==FALSE; end if; } Bon évidemment, il s'agit là des cours que j'ai lu il y a quelques semaines que j'applique de mémoire (je me remet au PHP dès que mon site sera terminé). Alors m'sieur, j'ai faux où ? (partout...)
K-Ola Posté 14 Juin 2010 Posté 14 Juin 2010 Plutôt quelque chose du genre: if (empty($var)) { $erreur=1;}if($erreur!=1) { echo "Il n'y a pas d'erreur";}else{ echo "Veuillez remplir les champs obligatoires.";}
Valtiel Posté 15 Juin 2010 Auteur Posté 15 Juin 2010 Hummmm ce code est certes correct mais malgré tout, le reste s'affiche en bas de page, si bien que l'internaute peut continuer sans prendre en compte l'avertissement . Là si je comprend bien, cela met la variable erreur en 1 si une variable requise est vide, et si tel est le cas, un message d'erreur s'affiche, sinon un message s'affiche aussi disant qu'il n'y a pas d'erreur. Mais il me faut faire en sorte que SEUL le message d'erreur s'affiche s'il y en a une sans pour autant stopper complètement le reste du code (exit()) car cela coupe le bas de mon site. Je vais fouiller un peu concernant le type hidden car je pense que c'est la solution à mon problème.
K-Ola Posté 15 Juin 2010 Posté 15 Juin 2010 Il suffit de le vérifier également avant d'afficher ton bouton d'envoi, si l'erreur ne vaut pas un, alors tu l'affiches.
Valtiel Posté 15 Juin 2010 Auteur Posté 15 Juin 2010 Oui c'est ce que j'aimerais faire mais je ne sais pas si c'est possible en PHP car sur le net, je ne trouve des solutions qu'en Javascript et le JS, je n'y ai jamais touché . Donc existe t-il au moins une possibilité d'afficher/cacher une DIV en PHP avec un booléen par exemple ?
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant