Je suis en train de créer mon site internet mais je sèche sur une de ses fonctionnalités. J'ai créé rapidement mon html pour le formulaire de contact mais je ne sais pas quoi mettre pour la partie php.
Pour cela, votre aide me serai volontier.
En attendant une réponse favorable, je vous remercie d'avance
En fait, je suis vraiment une quiche en php. J'ai commencé un morceau de code mais je sais pas si il est bon. Je ne sais pas quoi mettre pour compléter mon code php.
Merci de colorer votre code à l'aide du bouton Code
Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: php;">Votre code ici</pre>.
Merci de modifier votre message d'origine en fonction.
Manque de recherche
La question que vous posez est très fréquente, cela démontre un manque de recherche évident. Internet et ce forum fourmillent de ressources répondant à votre besoin.
Je vous invite à effectuer de vraies recherches qui sont à la base d'un bon apprentissage…
Je vous réexpose mon problème : j'ai créer un code PHP pour faire fonctionner mon formulaire de contact, qui lui doit m'envoyer un mail provenant d'un client de mon site. Cependant, lorsque je le teste sur un serveur local (avec Xampp), je trouve tout en bas de la page une multitude d'erreur. Ayant fait des recherches les concernant, je ne trouve pas réponse à mon problème.
Je vous remercie infiniment de vos futures réponses
Erreurs que je vois :
Notice: Undefined variable: name in C:\xampp\htdocs\STIMMO\test.php on line 138
Notice: Undefined variable: mail in C:\xampp\htdocs\STIMMO\test.php on line 138
Notice: Undefined variable: name in C:\xampp\htdocs\STIMMO\test.php on line 138
Notice: Undefined variable: mail in C:\xampp\htdocs\STIMMO\test.php on line 138
Notice: Undefined variable: nom in C:\xampp\htdocs\STIMMO\test.php on line 140
Notice: Undefined variable: prenom in C:\xampp\htdocs\STIMMO\test.php on line 141
Notice: Undefined variable: mail in C:\xampp\htdocs\STIMMO\test.php on line 142
Notice: Undefined variable: objet in C:\xampp\htdocs\STIMMO\test.php on line 143
Notice: Undefined variable: message in C:\xampp\htdocs\STIMMO\test.php on line 144
Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\STIMMO\test.php on line 148 Une erreur s'est produite
Donc en gros tous tes if(isset(... sont faux : quel est le formulaire qui va avec ?
Mais il y a une logique ? Tu testes si la variable POST existe ? Mais il n'y a pas de else donc tu ne fais que déplacer une notice: undefined index x sur $_POST['x'] vers une notice: undefined variable x.
Pourquoi tu réaffectes ta variable à ... la même variable ?
Pourquoi on trouve $name et puis, tout d'un coup $nom qui sort de nulle part ?
Il y a toujours les mêmes failles via $name et des $mail.
Supprime ton adresse mail.
En deux semaines de temps, tu as lu le moindre cours PHP ?
Sérieux, faut faire un effort autant pour respecter les règles du forum où tu postes que te documenter un minimum : c'est du PHP/HTML de base.
name="nom" pour $_POST['name']
Je suppose que le formulaire et le script sont un seul et même fichier/script donc quand tu arrives dessus, faute de tester correctement l'existence de ces variables (cf mon précédent post), ben, tu te retrouves avec plein de notices puisque les variables POST n'existent pas encore.
if (isset($_POST['nom'])) { $name = $_POST['nom']; }
if (isset($_POST['prenom'])) { $prenom = $_POST['prenom']; }
if (isset($_POST['mail'])) { $mail = $_POST['mail']; }
if (isset($_POST['objet'])) { $objet = $_POST['objet']; }
if (isset($_POST['message'])) { $message = $_POST['message']; }
Que tu dois faire. Parce qu'au final, si tes variables POST n'existent pas, et elles n'existeront pas avant d'avoir soumis le formulaire (ie quand tu affiches le formulaire pour le remplir vu que ton script fait les deux : l'afficher et le traiter) or ton code (l'envoi du mail et tout ce qui y est relatif) sera tout de même exécuté puisqu'il ne dépend actuellement d'aucune condition. Dit autrement, en l'état, quand tu arrives sur ton formulaire, tu cherches tout de même à envoyer un email avec des variables que tu n'as pas encore et n'existent pas. Ne crois-tu pas que c'est un problème ? Et c'est ce que tu observes par les erreurs notice: undefined variable
Tu dois faire :
if (isset($_POST['nom'], $_POST['message'], $_POST['prenom'], $_POST['mail'], $_POST['objet'])) {
Et qui viendrait englober le reste de ton code PHP.
Ensuite, tu crées des variables intermédiaires si tu veux mais ce n'est pas nécessaire, tu peux directement utiliser $_POST['x'], pas besoin de faire $x = $_POST['x'] (et on va éviter de lui parler d'extract s'il vous plait)
Restera à valider ou au moins "filtrer" le formulaire, histoire d'éviter que l'on t'injecte des entêtes.
qu'y a t-il comme alternative à un if? si la condition est vrais tu rentres dans le if, mais si elle est fausse comment l'écrirais tu?
Autre chose, pour ne pas te perdes si tu as $_POST['nom'] place la valeur de cette variable dans $nom. Soit tu utilises des noms de variable en français soit en anglais mais pas les deux (fait toi un document avec une convention de nommage pour ton projet. )
EDIT : Je viens de faire les modifications que vous m'aviez dis de faire, mais quand je teste mon formulaire, en faisant "envoyer", je retombe sur "error 404 ....". D'où vient le problème ?
C'est la première fois que tu l'évoques, non ? Avec quelle URL ? C'est ta page Accueil.html qui n'existe pas lorsque tu fais ta redirection ? (redirection qui n'est pas censée fonctionner en plus avec du code HTML avant)
Tes variables $nom & cie, tu dois les créer sinon les remplacer par $_POST['nom'] & cie parce qu'elles n'existent pas là ... As-tu lu le cours php/mysql d'ici, partie formulaires ?
Et oui, tu a raison, je n'ai pas mis dans le même dossier mon formulaire de contact et ma redirection (ma page d'accueil). Et je n'ai pas trop compris ce que tu ma conseiller de faire
Merci d'avance
EDIT :Quand je teste mon formulaire, et que je fais "envoyer", je retombe sur "objet non trouver" et "error 404"
> je n'ai pas mis dans le même dossier mon formulaire de contact et ma redirection (ma page d'accueil)
Ben fais-le ou corrige ton chemin en conséquence sur ta redirection sinon forcément, ça ne peut que finir en 404 ...
Si tu mets le fichier sur D:\ tu ne vas pas lui dire qu'il est sur C:\, comment veux-tu qu'il le trouve ? C'est pareil là.
Je te l'ai déjà dit aussi mais ton usage de la fonction mail ne correspond strictement à rien. Lis sa documentation, elle est là, compare tes arguments à ses paramètres. $nom en objet ? $mail en message ? $body pour entêtes ? $headers comme paramètres pour le MTA ?
J'ai dit de remplacer $nom par $_POST['nom'], $prenom par $_POST['prenom'] et ainsi de suite puisque ces variables $nom, $prenom, etc n'existent pas, ce que tu ne devrais pas manquer par des notice: undefined variable.
Tu es franchement de mauvaise volonté, un des pires jamais croisé ici (si ce n'est pas le pire), tu ne tiens compte de rien, je suis sûr que tu n'as pas lu la moindre doc ni tuto, tu attends juste qu'on te corrige tout de A à Z, si encore c'est ton code à la base (et j'en doute vu les $HTTP_POST_VARS que j'ai vu sur tes doublons). Tu as du bol déjà que ce sujet soit allé jusque là, bien d'autres ont été fermés pour moins que ça pour manque de recherches ...
Bon courage aux suivants ...
> Attention à la fonction header() juste après un echo va faire planter le script.
Je lui ai déjà dit (il y avait surtout le HTML avant, de toute façon, cet echo, il ne sera jamais vu donc il ne sert à rien) :
> redirection qui n'est pas censée fonctionner en plus avec du code HTML avant
Mais comme tout le reste, si tu ne lui corriges pas, il ne le fera jamais ! Et puis bon, si elle fonctionne tout de même en local grâce à un output_buffering, il ne verra même pas l'intérêt de faire la correction, il ne considérera pas la question.
Attention à la fonction headers() juste après un echo va faire planter le script.
Merci de signaler votre sujet résolu, cela nous évite des pages de lecture inutile pour arriver au bout de 15 réponses sur la dernière qui dit "merci problème résolut!"
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli