PHP et formulaires. Formulaire d'envoi de données en PHP (POST, GET)

L'un des avantages de PHP est la façon dont il fonctionne avec les formulaires HTML. L'essentiel ici est que chaque élément du formulaire devienne automatiquement disponible pour vos programmes PHP. Pour des informations détaillées Pour plus d'informations sur l'utilisation des formulaires en PHP, lisez la section. Voici un exemple de formulaire HTML :

Exemple n°1 Formulaire HTML le plus simple

Votre nom:

Votre âge:

Il n'y a rien de spécial dans ce formulaire. Il s'agit d'un formulaire HTML standard sans balises spéciales. Lorsque l'utilisateur remplit le formulaire et clique sur le bouton Soumettre, la page action.php sera appelée. Ce fichier pourrait ressembler à quelque chose comme :

Exemple #2 Afficher les données du formulaire

Bonjour, .
Pour vousannées.

Exemple de sortie de ce programme :

Bonjour Sergueï. Vous avez 30 ans.

Si vous ne tenez pas compte des morceaux de code avec htmlspecialchars() Et (int), le principe de fonctionnement de ce code doit être simple et compréhensible. htmlspecialchars() Garantit que les caractères HTML « spéciaux » sont correctement codés afin qu’aucun code HTML ou Javascript malveillant ne soit inséré dans votre page. Le champ d'âge, dont nous savons qu'il doit être un nombre, peut simplement être converti en entier, qui supprimera automatiquement les caractères indésirables. PHP peut également le faire automatiquement en utilisant l'extension de filtre. Les variables $_POST["name"] et $_POST["age"] sont automatiquement définies pour vous par PHP. Auparavant, nous utilisions la variable superglobale $_SERVER, mais ici nous utilisons également la variable superglobale $_POST, qui contient toutes les données POST. remarquerez que méthode d'envoi(méthode) de notre formulaire est POST. Si nous utilisions la méthode OBTENIR, alors nos informations de formulaire seraient dans la variable superglobale $_GET . Vous pouvez également utiliser la variable $_REQUEST si la source de données n'a pas d'importance. Cette variable contient un mélange OBTENIR des données,POST,COOKIE.

il y a 15 ans

Selon la spécification HTTP, vous devez utiliser la méthode POST lorsque vous utilisez le formulaire pour modifier l'état de quelque chose du côté du serveur. Par exemple, si une page dispose d'un formulaire permettant aux utilisateurs d'ajouter leurs propres commentaires, comme celui-ci page ici, le formulaire doit utiliser POST. Si vous cliquez sur "Recharger" ou "Actualiser" sur une page que vous avez atteinte via un POST, c'est presque toujours une erreur - vous ne devriez pas publier deux fois le même commentaire - c'est pourquoi ces pages ne sont ni mises en signet ni mises en cache.

Vous devez utiliser la méthode GET lorsque votre formulaire récupère quelque chose du serveur et ne change rien. Par exemple, le formulaire d'un moteur de recherche doit utiliser GET, car la recherche sur un site Web ne doit rien changer qui puisse intéresser le client, et la mise en signet ou la mise en cache des résultats d'une requête d'un moteur de recherche est tout aussi utile que la mise en signet ou la mise en cache. une page HTML statique.

il y a 1 an

A préciser :

POST n'est pas plus sécurisé que GET.

Les raisons de choisir GET ou POST impliquent divers facteurs tels que l'intention de la requête (est-ce que vous « soumettez » des informations ?), la taille de la requête (il y a des limites à la longueur d'une URL et les paramètres GET sont envoyés). l'URL), et avec quelle facilité vous veux le Action à partager – Par exemple, les recherches Google sont GET, car elles facilitent la copie et le partage de la requête de recherche avec quelqu'un d'autre simplement en partageant l'URL.

La sécurité n'est ici qu'une considération en raison du fait qu'un GET est plus facile à partager qu'un POST. Exemple : vous ne souhaitez pas qu'un mot de passe soit envoyé par GET, car l'utilisateur pourrait partager l'URL résultante et exposer par inadvertance son mot de passe.

Cependant, un GET et un POST sont tout aussi faciles à intercepter par une personne malveillante bien placée si vous ne déployez pas TLS/SSL pour protéger la connexion réseau elle-même.

Tous les formulaires envoyés via HTTP (généralement le port 80) ne sont pas sécurisés et aujourd'hui (2017), il n'y a pas beaucoup de bonnes raisons pour qu'un site Web public n'utilise pas HTTPS (qui est essentiellement HTTP + Transport Layer Security).

En prime, si vous utilisez TLS, vous minimisez le risque que vos utilisateurs reçoivent du code (AD) injecté dans votre trafic qui n'y a pas été mis par vous.

Ce n’est un secret pour personne : le moyen le plus courant d’interagir entre une page HTML et un site Web est un formulaire. Le formulaire (c'est-à-dire l'élément HTML formé par la balise form) est également utilisé par les services de messagerie gratuits, magasins d'électronique et bien d'autres types de sites.

Le traitement de formulaires simples à l’aide de PHP est simple. Cependant, il arrive parfois qu'il soit nécessaire de traiter un formulaire contenant plusieurs champs du même type, malgré le fait que leur nombre peut varier dans une large mesure et que leur nombre n'est pas connu à l'avance. Dans de tels cas, PHP prévoit de traiter des champs du même type comme un tableau de valeurs.

Examinons de plus près les options pour différents types des champs.

Champs de texte

Dans cet article, les champs de texte font référence aux éléments créés par des balises d'entrée avec une valeur de paramètre de type text et une balise textarea. Il est plus simple d'organiser le traitement d'un formulaire composé de plusieurs de ces champs. La liste ci-dessous montre le balisage HTML pour un tel formulaire.






Comme vous pouvez le voir sur la liste, les noms des éléments du formulaire, du point de vue PHP, sont des éléments de tableau. Par conséquent, le script PHP qui traitera ce formulaire traitera tous les nombreux champs de texte de ce formulaire comme un seul tableau. À éléments individuels vous pouvez accéder par index ou énumérer à l'aide de la liste et de chaque commande, comme dans l'exemple suivant.

n"; ?>

Commutateurs

Dans cet article, les cases à cocher sont des éléments créés dans les balises d'entrée avec le paramètre type défini sur checkbox . Le formulaire d'utilisation d'un nombre variable de «switches» est construit exactement de la même manière. Notez que le choix de la valeur spécifique du bouton radio (c'est-à-dire la valeur de la propriété value) n'est pas important. Un exemple est présenté dans la liste ci-dessous :






Cependant, le traitement d'un tel formulaire diffère du traitement décrit pour les champs de texte. Dans ce cas, il est nécessaire de déterminer si un visiteur du site a activé tel ou tel interrupteur. Si activé, alors l'élément de tableau correspondant existe ; sinon, alors il est manquant. La liste suivante est un exemple de script PHP qui imprime les boutons radio activés :

Boutons radio

Avant de décrire le traitement des boutons radio, il est nécessaire de rappeler leur fonctionnement. L'essence des boutons radio (éléments créés par des balises d'entrée avec la valeur du paramètre de type égale à radio ) est qu'en sélectionnant un bouton, l'utilisateur désélectionne automatiquement un autre bouton du même ensemble. Les boutons sont combinés dans un ensemble très simplement : tous les boutons de l'ensemble portent le même nom.

Mais les valeurs (c'est-à-dire les paramètres de valeur) des boutons de l'ensemble sont différentes. Et la valeur du bouton sélectionné avec le nom de l'ensemble sera envoyée au site. Tout comme pour les champs de texte et les boutons radio, les noms des ensembles de boutons radio doivent être formatés comme des noms d'éléments de tableau en PHP. Un exemple d’un tel formulaire est donné dans la liste suivante :

// premier jeu de boutons
// deuxième jeu de boutons
// troisième jeu de boutons

Le traitement des boutons radio combine les idées d'utilisation des champs de texte et des boutons radio dans le traitement. Si l'auteur de la page html n'a pas défini de valeur par défaut et que l'utilisateur n'a pas sélectionné un bouton spécifique dans l'ensemble des boutons radio, alors cet élément ne sera pas dans le tableau (comme pour les boutons radio).

Si le bouton est sélectionné, alors l'élément de tableau correspondant contiendra sa valeur (comme pour les champs de texte). Vous trouverez ci-dessous un exemple de liste qui traite un formulaire avec plusieurs ensembles de boutons radio.

n"; ?>

Ainsi, il n’y a rien de compliqué dans le traitement de formes complexes.

Les formulaires HTML sont des éléments d'interface complexes. Ils comprennent divers éléments fonctionnels: champs de saisie Et