PHP question concernant le traitement des formulaires
Fermé
David
-
11 juin 2022 à 17:41
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 13 juin 2022 à 12:06
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 13 juin 2022 à 12:06
A voir également:
- PHP question concernant le traitement des formulaires
- Easy php - Télécharger - Divers Web & Internet
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
- Colis en traitement sur le site logistique de destination - Forum Consommation & Internet
- Formulaire de contact le bon coin introuvable ✓ - Forum Réseaux sociaux
- Retour a la ligne php ✓ - Forum PHP
4 réponses
yg_be
Messages postés
23236
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 octobre 2024
Ambassadeur
1 539
11 juin 2022 à 18:21
11 juin 2022 à 18:21
bonjour,
Je suppose que ta page s'appelle index.php.
On place ces lignes de code avant le formulaire parce qu'on souhaite que le texte "bonjour" soit affiché au dessus du formulaire.
As-tu partagé le contenu complet de ta page? Le contenu complet aidera à répondre à ta seconde question.
Merci, quand tu partages ici du code, d'utiliser les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Je suppose que ta page s'appelle index.php.
On place ces lignes de code avant le formulaire parce qu'on souhaite que le texte "bonjour" soit affiché au dessus du formulaire.
As-tu partagé le contenu complet de ta page? Le contenu complet aidera à répondre à ta seconde question.
Merci, quand tu partages ici du code, d'utiliser les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
jordane45
Messages postés
38241
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 septembre 2024
4 689
12 juin 2022 à 20:52
12 juin 2022 à 20:52
Sans necessairement séparer dans des fichiers différents... on essaiera quand même de séparer le "traitement" du formulaire .. du reste du code html de la page.
Cela permet de s'y retrouver plus facilement par la suite.
En gros, un script à peu près correcte, se structure comme ceci..
Cela permet de s'y retrouver plus facilement par la suite.
En gros, un script à peu près correcte, se structure comme ceci..
<?php // Traitement de formulaire, initialisation de variables .. requêtes SQL ... //... ?> <!Doctype html> <html> <head> .. </head> <body> <!-- Ici ton code html --> <?php // éventuellement un peu de php // par exemple, l'affichage du formulaire ou le nom et prénom envoyé par celui-ci ?> <!-- encore du html éventuellement... --> <!-- et en fin de document.. --> <!-- Ici le Javascript --> <script> //... </script> </body> </html>
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
524
13 juin 2022 à 12:06
13 juin 2022 à 12:06
Bonjour,
On recommande de toujours effectuer le traitement du formulaire avant l'affichage du formulaire ou n'importe quel contenu notamment pour les redirections HTTP via PHP.
Dès qu'on fait une requête POST (via l'envoi d'un formulaire), la bonne pratique serait d'effectuer une redirection GET à la fin de cette requête (principe post-redirect-get) pour éviter le message du navigateur si on rafraichi la page après l'envoi du formulaire.
Or pour faire des redirections HTTP via la fonction php header(), aucun contenu ne doit être envoyé au client via echo ou des lignes html avant la redirection avec header().
On recommande de toujours effectuer le traitement du formulaire avant l'affichage du formulaire ou n'importe quel contenu notamment pour les redirections HTTP via PHP.
Dès qu'on fait une requête POST (via l'envoi d'un formulaire), la bonne pratique serait d'effectuer une redirection GET à la fin de cette requête (principe post-redirect-get) pour éviter le message du navigateur si on rafraichi la page après l'envoi du formulaire.
Or pour faire des redirections HTTP via la fonction php header(), aucun contenu ne doit être envoyé au client via echo ou des lignes html avant la redirection avec header().
Salut, ne pas confondre le formulaire en lui même(HTML) qui est la manière d'envoyer les données vers son traitement en PHP.
En(méthode) POST c'est vers une autre page que celle qui contient le formulaire.
Séparer le traitement(la réception de ce qui est envoyé par le formulaire) de leur traitement devrais être votre première étape.
Ensuite un langage serveur comme PHP(préprocesseur) fonctionne avant que la page HTML existe, echo va donc servir à écrire les contenus et balises HTML dynamiquement.
page formulaire ---> envoi en POST --->réception page PHP(une autre page) ---> traitement des données reçues ---> résultat du traitement(ex: récupérer des données sur la base de données) = création/inclusion des contenus dynamiques dans une page(une autre) en écrivant HTML via echo 'mon HTML est avec '.$mesVariablesPHP
Si vous séparer en 3 pages vous comprendrez mieux le principe. C'est aussi nettement mieux à tout point de vue de faire cette séparation car: les 3 pages peuvent être utilisées/réutilisées indépendamment l'une de l'autre, il est plus facile de trouver une erreur si on sait dans quelle partie elle se trouve plutôt que si tout est mélangé, plus facile à lire et comprendre quand on revient sur le code ou que quelqu'un d'autre doit intervenir dessus.
Donc faites cette séparation au lieu d'amalgamer plusieurs parties différentes qui n'ont pas à l'être.
ps: ce que vous décrivez correspond plutôt à la méthode GET qui va envoyer les données à la même page, cette méthode est à éviter car les données envoyées ne sont pas sécurisées(écrites dans l'URL de la page) donc peu fiable et facilement source de problème(exemple un enregistrement dans une base de données à partir de données envoyées en GET n'importe qui pourra changer le contenu de l'URL pour provoquer une erreur ou flinguer la base de données voire pire).
Plus de détails par là:
[xxx__urlsupprimeeparlamoderaion__xxxx]
En(méthode) POST c'est vers une autre page que celle qui contient le formulaire.
Séparer le traitement(la réception de ce qui est envoyé par le formulaire) de leur traitement devrais être votre première étape.
Ensuite un langage serveur comme PHP(préprocesseur) fonctionne avant que la page HTML existe, echo va donc servir à écrire les contenus et balises HTML dynamiquement.
page formulaire ---> envoi en POST --->réception page PHP(une autre page) ---> traitement des données reçues ---> résultat du traitement(ex: récupérer des données sur la base de données) = création/inclusion des contenus dynamiques dans une page(une autre) en écrivant HTML via echo 'mon HTML est avec '.$mesVariablesPHP
Si vous séparer en 3 pages vous comprendrez mieux le principe. C'est aussi nettement mieux à tout point de vue de faire cette séparation car: les 3 pages peuvent être utilisées/réutilisées indépendamment l'une de l'autre, il est plus facile de trouver une erreur si on sait dans quelle partie elle se trouve plutôt que si tout est mélangé, plus facile à lire et comprendre quand on revient sur le code ou que quelqu'un d'autre doit intervenir dessus.
Donc faites cette séparation au lieu d'amalgamer plusieurs parties différentes qui n'ont pas à l'être.
ps: ce que vous décrivez correspond plutôt à la méthode GET qui va envoyer les données à la même page, cette méthode est à éviter car les données envoyées ne sont pas sécurisées(écrites dans l'URL de la page) donc peu fiable et facilement source de problème(exemple un enregistrement dans une base de données à partir de données envoyées en GET n'importe qui pourra changer le contenu de l'URL pour provoquer une erreur ou flinguer la base de données voire pire).
Plus de détails par là:
[xxx__urlsupprimeeparlamoderaion__xxxx]
jordane45
Messages postés
38241
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 septembre 2024
4 689
12 juin 2022 à 20:21
12 juin 2022 à 20:21
En(méthode) POST c'est vers une autre page que celle qui contient le formulaire.
page formulaire ---> envoi en POST --->réception page PHP(une autre page) -
N'importe quoi ....
Rien n'empêche de faire le traitement sur la même page que celle contenant le formulaire...
faites cette séparation au lieu d'amalgamer plusieurs parties différentes qui n'ont pas à l'être.
du grand n'importe quoi ...
ps: ce que vous décrivez correspond plutôt à la méthode GET qui va envoyer les données à la même page,
L'apothéose du n'importe quoi ...
GET ET POST sont des protocoles de transmissions de données.
Le get, via l'URL
Le post, via les en-têtes HTTP ...
Ca n'indique en rien si c'est sur la même page ou une autre...
cette méthode est à éviter car les données envoyées ne sont pas sécurisées(écrites dans l'URL de la page) donc peu fiable et facilement source de problème(exemple un enregistrement dans une base de données à partir de données envoyées en GET n'importe qui pourra changer le contenu de l'URL pour provoquer une erreur ou flinguer la base de données voire pire).
Sûrement dans les années 2000 ... mais aujourd'hui, lorsque le code est bien fait ( et en utilisant les requêtes préparées..) il n'y plus possibilité de faire des injections sql..
En plus.. si tu regardes bien son code.. c'est bien la méthode POST qu'il utilise déjà .. ...
yg_be
Messages postés
23236
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 octobre 2024
1 539
>
jordane45
Messages postés
38241
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 septembre 2024
12 juin 2022 à 20:33
12 juin 2022 à 20:33
Et l'utilisation de POST n'empêche pas l'utilisateur de bidouiller les données. Même avec POST, il faut se méfier des données reçues.
David
>
yg_be
Messages postés
23236
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 octobre 2024
Modifié le 12 juin 2022 à 20:45
Modifié le 12 juin 2022 à 20:45
Tout à fait mais j'ai bien précisé que c'est de l'apprentissage et du coup cet extrait de code que j'ai publié est très loin d'être optimisé. J'aurai pu éventuellement inclure par exemple la fonction htmlspecialchars() ou montrer un exemple un poil plus complet et interessant. Je suis rester volontairement très simple parce que je voulais avant tout comprendre pourquoi des lignes de code de vérification php étaient placée avant le dit formulaire.
yg_be
Messages postés
23236
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 octobre 2024
1 539
>
David
12 juin 2022 à 20:51
12 juin 2022 à 20:51
As-tu compris que c'était afin d'afficher le texte "bonjour" au dessus du formulaire?
As-tu essayé de le mettre après?
As-tu essayé de le mettre après?
David
>
yg_be
Messages postés
23236
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 octobre 2024
12 juin 2022 à 20:55
12 juin 2022 à 20:55
Ok maintenant supposons qu'il n'ya pas de message bonjour, qu'on a juste un formulaire où on peut mettre son nom et prenom. Le résultat est le même: les instructions de vérifications sont apparemment placée avant...