PHP question concernant le traitement des formulaires
David
-
Pitet Messages postés 2826 Date d'inscription Statut Membre Dernière intervention -
Pitet Messages postés 2826 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis actuellement une formation sur le php et mysql et il y'a un detail concernant le traitement des formulaires que je ne comprend pas. Prenons un exemple de code où j'ai un formulaire qui demande le prenom et le nom.
if (isset($_POST['prenom']) && isset($_POST['nom'])) {
echo 'Bonjour' . ' ' . $_POST['prenom'] . ' ' . $_POST['nom'];
}
echo '<form method = "post" action = "index.php">
<p>
<table>
<tr>
<td>Prénom</td>
<td> <input type = "text" name = "prenom" /> </td>
</tr>
<tr>
<td>Nom</td>
<td> <input type = "text" name = "nom" /> </td>
</tr>
</table>
<button type = "submit"> Envoyer </button>
<p>
</form>';
Dans ce code on utilise exclusivement une page php ce qui veut dire que toute les balises html pour faire un formulaires sont appelée avec l'instruction echo ce qui nous permet de faire un formulaire sans passer par une page HTML. Il y'a quelque chose que je ne comprend pas concernant les lignes de codes qui ont pour but d'analyser les données que va entrer un utilisateur dans ce formulaire à savoir :
if (isset($_POST['prenom']) && isset($_POST['nom'])) {
echo 'Bonjour' . ' ' . $_POST['prenom'] . ' ' . $_POST['nom'];
}
Pourquoi on place ces lignes de code avant le formulaire qu'on génère grâce à PHP et pas après. Si on aurait choisit d'inclure du code PHP dans du code html, aurait on dû également placer ces deux lignes de code avant le formulaire?
Je vous remercie à l'avance de vos explications en espérant qu'elles soient le plus simple possible.
Configuration: Windows / Chrome 102.0.5005.63
Je suis actuellement une formation sur le php et mysql et il y'a un detail concernant le traitement des formulaires que je ne comprend pas. Prenons un exemple de code où j'ai un formulaire qui demande le prenom et le nom.
if (isset($_POST['prenom']) && isset($_POST['nom'])) {
echo 'Bonjour' . ' ' . $_POST['prenom'] . ' ' . $_POST['nom'];
}
echo '<form method = "post" action = "index.php">
<p>
<table>
<tr>
<td>Prénom</td>
<td> <input type = "text" name = "prenom" /> </td>
</tr>
<tr>
<td>Nom</td>
<td> <input type = "text" name = "nom" /> </td>
</tr>
</table>
<button type = "submit"> Envoyer </button>
<p>
</form>';
Dans ce code on utilise exclusivement une page php ce qui veut dire que toute les balises html pour faire un formulaires sont appelée avec l'instruction echo ce qui nous permet de faire un formulaire sans passer par une page HTML. Il y'a quelque chose que je ne comprend pas concernant les lignes de codes qui ont pour but d'analyser les données que va entrer un utilisateur dans ce formulaire à savoir :
if (isset($_POST['prenom']) && isset($_POST['nom'])) {
echo 'Bonjour' . ' ' . $_POST['prenom'] . ' ' . $_POST['nom'];
}
Pourquoi on place ces lignes de code avant le formulaire qu'on génère grâce à PHP et pas après. Si on aurait choisit d'inclure du code PHP dans du code html, aurait on dû également placer ces deux lignes de code avant le formulaire?
Je vous remercie à l'avance de vos explications en espérant qu'elles soient le plus simple possible.
Configuration: Windows / Chrome 102.0.5005.63
A voir également:
- PHP question concernant le traitement des formulaires
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
- Traitement de texte gratuit - Guide
- Easy php - Télécharger - Divers Web & Internet
- Ce traitement de texte gratuit et léger est parfait pour remplacer Word, même sur un vieux PC - Guide
- Dictionnaire des maladies et traitement - Télécharger - Bureautique
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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
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>
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]
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à .. ...
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.