Formulaire de sortie de données html php. Le formulaire le plus simple pour envoyer des données par e-mail en utilisant HTML et PHP

Pour organiser le transfert des données vers le serveur à l'aide d'un formulaire, vous devrez mettre en place un formulaire HTML dans lequel les visiteurs du site entreront leurs informations et un code PHP dont le but est d'accepter et de traiter les données reçues sur le serveur.

Formulaire de soumission HTML

Le formulaire sur la page est formé par des balises

...
, à l'intérieur duquel sont placées des balises de champ pour la saisie d'informations textuelles, des balises pour des composants spéciaux (par exemple, une zone de liste déroulante), des balises pour un champ de sélection et le téléchargement de fichier .

* Pour HTML5, il est également possible de placer des balises de champ de formulaire non pas à l'intérieur des balises de formulaire, mais n'importe où sur la page. En même temps, pour chacun de ces champs, l'attribut "form" doit être spécifié afin de déterminer avec quelle forme de soumission il doit interagir.

Ainsi, la soumission de formulaire la plus simple peut contenir le code suivant :


Une valeur:
Valeur B :

Les éléments de formulaire et leurs paramètres :

action="monformulaire.php"– l'attribut "action" détermine quel fichier php traitera les données envoyées. Dans cet exemple, les données seront envoyées dans le fichier "myform.php" situé dans le même répertoire que la page du formulaire. Si cet attribut n'est pas spécifié explicitement, les données du formulaire seront envoyées à l'adresse de la page du formulaire lui-même.

méthode="poster"– le paramètre method définit la méthode de transfert de données POST ou GET. Plus d'informations à ce sujet dans l'article "Différences entre les méthodes POST et GET" . Si vous ne spécifiez pas explicitement l'attribut, la méthode GET sera utilisée par défaut.

Texte "Valeur A :" Et "Valeur B :" ajouté uniquement à des fins de conception et de compréhensibilité du formulaire pour l'utilisateur. Il n'est pas nécessaire de l'ajouter pour le transfert de données, mais pour que l'utilisateur comprenne ce qu'il faut saisir, cela vaut la peine de le préciser.

Mots clés sont utilisés pour former divers contrôles de formulaire.

type="texte"– l'attribut "type" définit le type du champ. Selon le type spécifié, le apparenceélément et son objectif. La valeur de l'attribut "text" spécifie que l'élément sera affiché dans le navigateur sous la forme d'un champ de texte d'une seule ligne dans lequel l'utilisateur peut saisir sa chaîne.

nom="données1"– l'attribut "name" indique le nom, ou plutôt l'index des données du tableau reçu par le serveur. Il s'agit d'un paramètre obligatoire, par lequel dans le gestionnaire php, il sera alors possible d'accéder à la valeur passée. Le nom peut être choisi arbitrairement, cependant, il est plus pratique lorsque cette valeur a une signification claire.

type="soumettre"- étiqueter avec cette valeur du paramètre "type" sera affiché sur la page sous forme de bouton. En fait, vous pouvez vous passer d'un bouton sur le formulaire. Si, par exemple, il y a des champs de texte dans le formulaire, l'envoi peut se faire en appuyant simplement sur "Entrée" sur le clavier. Mais avoir un bouton rend le formulaire plus clair.

valeur="Soumettre" !}– dans ce cas (pour type="submit"), il définit uniquement la légende du bouton. Pour type="text", par exemple, ce sera le texte qui sera affiché dans le champ texte.

En conséquence, sur la page, ce code ressemblera à ceci :

En cliquant sur le bouton, les données seront envoyées à la page spécifiée, et si elle existe et fonctionne correctement, les données seront traitées.

Traitement des données soumises par formulaire HTML en PHP

Les données envoyées de la manière décrite sont placées dans les tableaux superglobaux $_POST, $_GET et $_REQUEST. $_POST ou $_GET contiendra des données en fonction de la méthode envoyée. $_REQUEST contient des données soumises par l'une des méthodes spécifiées.

$_POST, $_GET et $_REQUEST sont des tableaux associatifs dont les champs d'index correspondent aux attributs "name" des balises . Ainsi, pour travailler avec des données dans le fichier myform.php, vous pouvez affecter les valeurs des éléments d'un tel tableau à des variables en spécifiant le nom du champ comme index :

// pour la méthode GET
$a = $_GET[ "données1" ] ;
$b = $_GET[ "données2"] ;

// pour la méthode POST
$a = $_POST[ "données1" ] ;
$b = $_POST[ "données2"] ;

// avec n'importe quelle méthode
$a = $_REQUEST[ "données1" ] ;
$b = $_REQUEST[ "données2"] ;

Vérification du remplissage des champs du formulaire

Parfois, lors de la réception de données, vous devez vérifier si l'utilisateur a soumis un formulaire vide. Vous pouvez utiliser la fonction vide pour cela.

si (vide ($_REQUEST["data1" ])) (
écho "Le champ n'est pas rempli";
} autre(
écho "Le champ était rempli";
$a = $_REQUEST[ "données1" ] ;
}

Généralement cette solution est suffisante. Si vous devez saisir du texte, il sera clair s'il est saisi ou non. Cependant, si l'utilisateur entre intentionnellement zéro pour le calcul, la fonction vide indiquera qu'il n'y a pas de valeur. Par conséquent, pour de telles situations, il est préférable d'utiliser la fonction isset. Il vérifiera explicitement si la valeur est définie ou non.

if (isset ($_REQUEST["data1" ])) (
écho "Le champ était rempli";
$a = $_REQUEST[ "données1" ] ;
} autre(
écho "Le champ n'est pas rempli";
}

L'une des tâches les plus courantes dans la pratique est la mise en œuvre d'un formulaire de rétroaction. Tobish écrit son code HTML, le stylise en CSS, Création PHP un script qui traiterait les données reçues de l'utilisateur et les enverrait à notre courrier, en écrivant un script JS qui vérifierait le formulaire pour l'adéquation des données d'entrée, en protégeant notre progéniture du spam afin que notre boîte aux lettres ne s'effondre pas des attaques de bot .

Tous les points ci-dessus seront pris en compte dans notre examen et commentés en détail.

Commençons donc à créer un formulaire de commentaires :

HTML

Tout d'abord, nous écrivons du code HTML, il définit les champs que l'utilisateur va remplir. Ils seront développés dans le futur. Le code du formulaire ressemble à ceci :

< form method= "post" action= "mail.php" > < div class = "left" > < label for = "name" >Nom: < input maxlength= "30" type= "text" name= "name" /> < label for = "phone" >Téléphone: < input maxlength= "30" type= "text" name= "phone" /> < label for = "mail" >E-mail: < input maxlength= "30" type= "text" name= "mail" /> < div class = "right" > < label for = "message" >Message: < textarea rows= "7" cols= "50" name= "message" > < input type= "submit" value= "Envoyer" />

Et visuellement ça ressemble à ça maintenant :

Je suis d'accord, jusqu'ici tout est moche et rien n'est clair, mais nous venons de commencer.

Considérez le code ci-dessus en détail :

  • < form method= "post" action= "mail.php" > …


    Pour créer un formulaire, vous devez utiliser la balise form. C'est lui qui détermine le début et la fin du formulaire pour l'interpréteur de code. Comme toute balise, elle possède tout un ensemble d'attributs, mais il n'y en a que deux requis pour que le formulaire fonctionne, il s'agit de la méthode (la méthode d'envoi d'une requête au serveur, la publication est généralement utilisée pour les formulaires) et de l'action (indique le chemin vers le fichier du gestionnaire de formulaire, à savoir dans ce fichier contiendra un script PHP, qui nous enverra ensuite les valeurs saisies par l'utilisateur par mail, dans notre cas on voit que ce fichier s'appelle mail.php et il se trouve dans le même répertoire de site que la page que nous considérons).
  • < input maxlength= "30" type= "text" name= "name" />


    Ensuite, nous avons des entrées. Ce sont en fait les champs de formulaire eux-mêmes dans lesquels les utilisateurs saisiront les informations dont nous avons besoin (type = "texte" indique qu'il s'agira de texte). L'attribut maxlength spécifie le nombre de caractères que l'utilisateur peut entrer dans le champ de formulaire donné. L'attribut le plus important est name - il spécifie le nom d'un champ particulier. C'est par ces noms que le script PHP traitera davantage les informations qui y entrent. Si vous le souhaitez, vous pouvez également définir l'attribut d'espace réservé, qui affiche le texte à l'intérieur du champ qui disparaît lorsque le curseur est placé à l'intérieur. Un problème avec l'espace réservé est qu'il n'est pas pris en charge par certains navigateurs plus anciens.
  • < label for = "name" >Nom:


    Utilisé si nous avons abandonné les espaces réservés. L'étiquette de champ habituelle, l'attribut for indique à quel champ l'étiquette donnée fait référence. La valeur indique le nom du champ qui nous intéresse.
  • < textarea rows= "7" cols= "50" name= "message" >


    Tout comme l'entrée, il est destiné à l'utilisateur pour saisir des informations, mais cette fois le champ est affiné pour les longs messages. Rows spécifie la taille du champ en lignes, cols en caractères. En général, ils fixent la hauteur et la largeur de notre terrain.
  • < input type= "submit" value= "Envoyer" />


    Type="submit" nous indique qu'il s'agit d'un bouton pour soumettre le formulaire, et la valeur spécifie le texte qui sera à l'intérieur de ce bouton.
  • < div class = "right" >


    utilisé uniquement pour la conception visuelle ultérieure du formulaire.

CSS

Pour que notre formulaire de commentaires ait l'air présentable, il doit être conçu. Pour obtenir le résultat suivant :

Nous avons utilisé ce code :

formulaire ( arrière-plan : #f4f5f7 ; rembourrage : 20px ; ) formulaire . gauche, forme. right ( display: inline- block; vertical- align: top; width: 458px; ) form . right ( padding- left : 20px ; ) label ( display : block ; font- size : 18px ; text- align : center ; margin : 10px 0px 0px 0px ; ) input, textarea ( border : 1px solid #82858D; padding : 10px; font- size : 16px ; width : 436px ; ) textarea ( height : 98px ; margin- bottom : 32px; ) input[ type= "submit" ] ( width: 200px; float: right; border: none; background: #595B5F; couleur : #fff ; transformation du texte : majuscule ; )

Je ne vois pas l'intérêt de décrire le CSS en détail, je me contenterai d'attirer votre attention sur les points clés :

  1. Il n'est pas nécessaire d'écrire un dessin pour chaque balise du formulaire. Essayez de construire vos sélecteurs de manière à pouvoir styliser tous les éléments dont vous avez besoin en quelques lignes de code.
  2. N'utilisez pas de balises supplémentaires par type pour couper les lignes et créer des retraits < br>, < p> et ainsi de suite, ces tâches sont parfaitement gérées par CSS avec la propriété display : block et margin with padding. En savoir plus sur les raisons pour lesquelles vous ne devriez pas utiliser < br> en mise en page, en général, vous pouvez lire la balise br dans l'article, mais est-ce vraiment nécessaire ? .
  3. N'utilisez pas la disposition tabulaire pour les formulaires. Cela va à l'encontre de la sémantique de cette balise, et les moteurs de recherche adorent le code sémantique. Afin de former la structure visuelle du document, les balises div nous suffisent, et l'affichage : les propriétés de bloc en ligne définies dans CSS (arrange les blocs dans une rangée) et l'alignement vertical : top (empêche qu'ils ne s'étendent sur l'écran ), on leur fixe la hauteur voulue et le tour est joué, rien de superflu et tout est agencé selon nos besoins.

Pour ceux qui veulent gagner du temps sur la conception de sites, je peux vous conseiller d'utiliser des frameworks CSS lors de la création de sites, en particulier ceux auto-écrits. Mon choix à cet égard est Twitter Bootstrap. Une leçon sur la conception de formulaires à l'aide peut être consultée.

PHP

Eh bien, il est temps de rendre notre formulaire fonctionnel.

Nous allons dans notre répertoire racine du site et y créons le fichier mail.php, auquel nous avons précédemment spécifié le chemin dans l'attribut action de la balise form.

Au final, son code ressemblera à ceci :

Votre message a été envoyé avec succès \" javascript : history.back()\" >Retour

" ; si (! vide ($_POST [ "nom" ] ) et ! vide ($_POST [ "téléphone" ] ) et ! vide ($_POST [ "mail" ] ) et ! vide ($_POST [ "message" ] ) ) ( $name = trim (strip_tags ($_POST [ "name" ] ) ) ); $phone = trim (strip_tags ($_POST [ "phone" ] ) ) ; $mail = trim (strip_tags ($_POST [ "mail" ] ) ) ); $message = trim (strip_tags ($_POST [ "message" ] ) ) ; mail (, , "Envoyé : " . $name . "
Son numéro : " . $phone . "
Son courrier : " . $mail . "
Son message : "
. $message , ) ; écho "Votre message a été envoyé avec succès!
Vous recevrez une réponse sous peu
$ retour"
; sortie; ) sinon ( écho ; sortie ; ) ?>

Vous pouvez ignorer la discussion des parties HTML et CSS de ce document. À la base, il s'agit d'une page régulière du site, que vous pouvez concevoir comme vous le souhaitez et selon vos besoins. Considérons la partie la plus importante - le script PHP pour traiter le formulaire :

$retour = "

\" javascript : history.back()\" >Retour

" ;

Avec cette ligne, nous créons un lien pour revenir à la page précédente. Comme nous ne savons pas à l'avance de quelle page l'utilisateur accédera à celle-ci, cela se fait à l'aide d'une petite fonction JS. À l'avenir, nous ferons simplement référence à cette variable pour l'afficher aux endroits dont nous avons besoin.

si (! vide ($_POST [ "nom" ] ) et ! vide ($_POST [ "téléphone" ] ) et ! vide ($_POST [ "mail" ] ) et ! vide ($_POST [ "message" ] ) ) ( // partie interne du gestionnaire) sinon ( écho "Veuillez remplir tous les champs pour envoyer un message ! $back "; sortie; )

Ici, nous fixons le formulaire de vérification de la plénitude des champs. Comme vous l'avez deviné, dans la partie $_POST["name"], nous écrivons la valeur de l'attribut name de nos entrées entre guillemets.

Si tous les champs sont remplis, alors le script commencera à traiter les données dans sa partie interne, mais si au moins un champ n'a pas été rempli, alors un message s'affichera sur l'écran de l'utilisateur avec une demande de remplir tous les champs du formulaire echo "Pour envoyer un message, remplissez tous les champs ! $retour" et un lien pour revenir à la page précédente que nous avons créé avec la toute première ligne.

Ensuite, collez-le à l'intérieur du gestionnaire de formulaire :

$nom = trim (strip_tags ($_POST [ "nom" ] ) ) ; $phone = trim (strip_tags ($_POST [ "phone" ] ) ) ; $mail = trim (strip_tags ($_POST [ "mail" ] ) ) ; $message = trim (strip_tags ($_POST [ "message" ] ) ) ;

Ainsi, nous avons effacé l'entrée de l'utilisateur des balises html et des espaces supplémentaires. Cela nous permet de nous protéger contre la réception de code malveillant dans les messages qui nous sont envoyés.

Les vérifications peuvent être compliquées, mais c'est à vous de décider. Nous avons déjà défini la protection minimale côté serveur. Nous ferons le reste côté client en utilisant JS.

Je ne recommande pas d'abandonner complètement la protection des formulaires côté serveur au profit de JS, car bien que cela soit extrêmement rare, il existe des personnes uniques avec JS désactivé dans le navigateur.

Après avoir nettoyé les balises, ajoutez le message envoyant :

poster ( "[email protected]", "E-mail de votre_site_address", "Je t'ai écrit : " . $nom . "
Son numéro : " . $phone . "
Son courrier : " . $mail . "
Son message : "
. $message , "Content-type:text/html;charset=windows-1251") ;

C'est cette ligne qui est engagée dans la formation et l'envoi d'un message pour nous. Il est rempli comme suit :

  1. "[email protected]" - insérez votre mail entre guillemets ici
  2. "Email de your_site_address" est l'objet du message qui sera envoyé à la messagerie. Vous pouvez écrire n'importe quoi ici.
  3. "Je t'ai écrit : ".$name." < br /> Son numéro est : ".$phone". < br /> Son courrier : ".$mail." < br /> Son message : ".$message - nous formons le texte du message lui-même. $name - nous insérons les informations remplies par l'utilisateur en accédant aux champs de l'étape précédente, entre guillemets nous décrivons ce que signifie ce champ, avec la balise < br /> on fait un saut de ligne pour que le message dans son ensemble soit lisible.
  4. Content-type:text/html;charset=windows-1251 - à la fin il y a une indication explicite du type de données transmis dans le message et son encodage.

IMPORTANT!

L'encodage spécifié dans le "head" du document ( < meta http- equiv= "Content-Type" content= "text/html; jeu de caractères=windows-1251" /> ), l'encodage du message Content-type:text/html;charset=windows-1251 et en général l'encodage du fichier PHP doivent correspondre, sinon dans les messages reçus par mail, à la place des lettres russes ou anglaises, "mots fous ” s'affichera.

Beaucoup de gens n'indiquent pas explicitement l'encodage du message envoyé, mais cela peut causer des problèmes à l'avenir sur certains clients de messagerie (des lettres illisibles arrivent dans le courrier), donc je vous recommande de le spécifier quand même.

Vérification du formulaire pour l'adéquation des données d'entrée

Pour que les utilisateurs ne manquent pas les champs par inadvertance et remplissent tout correctement, il convient de vérifier les données d'entrée.

Cela peut être fait en PHP côté serveur et en JS côté client. J'utilise la deuxième option, car de cette façon, une personne peut immédiatement découvrir ce qu'elle a fait de mal et corriger l'erreur sans faire de transitions de page supplémentaires.

Le code du script est inséré dans le même fichier où se trouve la partie HTML du formulaire. Pour notre cas, cela ressemblera à ceci :

< script>function checkForm(form) ( var name = form. name. value; var n = name. match(/ ^[ A- Za- zA- Za-z] * [ A- Za- zA- Za-z] + $/ ) ; si (! n) ( alerte( "Le nom a été saisi de manière incorrecte, veuillez corriger l'erreur") ; retourne faux ; ) var téléphone = formulaire. téléphone. valeur; var p = téléphone. match(/ ^[ 0 - 9 + ] [ 0 - 9 - ] * [ 0 - 9 - ] + $/ ) ; si (! p) ( alerte( "Téléphone entré incorrectement") ; retourne faux ; ) var mail = formulaire. poster. valeur; var m = courrier . match(/ ^[ A- Za- z0- 9 ] [ A- Za- z0- 9 \. _- ] * [ A- Za- z0- 9 _] *@ ([ A- Za- z0- 9 ] + ([ A- Za- z0- 9 - ] * [ A- Za- z0- 9 ] + ) * \. ) + [ A- Za- z] + $/ ) ; si (! m) ( alerte( "L'e-mail saisi est incorrect, veuillez corriger l'erreur") ; retourne faux ; ) renvoie vrai ; )

Eh bien, maintenant l'analyse habituelle:

Pour ça, pour que lorsque vous cliquez sur le bouton soumettre du formulaire, nous le fassions valider on accroche le lancement de notre script sur la balise form :

< form method= "post" action= "mail.php" onSubmit= "return checkForm(this)" >

Maintenant, point par point, nous reprenons la composition du chèque :


Comme vous pouvez le constater, un tel mini-chèque est rédigé pour chacun de nos champs. J'ai mis en surbrillance la vérification d'un champ dans la capture d'écran avec un carré rouge, pour les autres champs, il a une structure similaire, et si vous devez ajouter un champ ou le supprimer, vous pouvez maintenant le faire facilement.

Les sites interactifs acceptent les commentaires des utilisateurs. L'un des moyens courants de recevoir des commentaires consiste à utiliser des formulaires.

Dans ce didacticiel, nous verrons comment créer un formulaire et traiter la saisie sur le serveur.

Lors de la création d'un formulaire, deux attributs importants sont impliqués : action Et méthode.

action Utilisé pour entrer l'URL où le formulaire est soumis. Il peut s'agir d'un fichier PHP qui gère les entrées. méthode Peut être "post" ou "get", qui sont différentes méthodes de transmission de données. Pour l'instant, vous n'avez pas besoin de vous plonger dans les différences entre ces méthodes ; la méthode "get" envoie les données via une URL, et la méthode "post" les envoie sous forme de bloc de données via le service d'entrée standard (STDIN). Dans le dernier tutoriel que nous avons parcouru, nous avons vu comment les données sont récupérées via une URL en utilisant $_GET . Dans ce tutoriel, nous verrons comment les données envoyées via la méthode "post" sont reçues.

Page HTML avec formulaire

La page de formulaire ne doit pas nécessairement être un fichier PHP (mais cela peut l'être). Il n'est même pas nécessaire qu'il se trouve sur le même site que le fichier qui reçoit les données.

Dans notre premier exemple, nous allons regarder un formulaire très simple avec un seul champ de texte :

Former

Entrez votre nom

Le formulaire suivant s'affichera dans le navigateur :

Vient maintenant la partie amusante : obtenir et traiter des données avec PHP.

Demander des données de formulaire avec PHP

Si vous avez besoin de demander des données transmises via un formulaire (à l'aide du poste), vous utilisez $_POST :

$_POST["nom du champ"] ;

qui renverra la valeur du champ du formulaire. Essayons cela avec un exemple.

Commençons par créer une page avec un formulaire, comme précédemment. Ensuite nous allons créer une page PHP (handler) "handler.php" (notez que c'est le nom de la page que nous avons enregistré dans l'attribut action dans notre

).

Le fichier "handler.php" contiendra :

Former écho "

"; ?>

Saisie et conditions de l'utilisateur

Dans l'exemple suivant, nous essaierons d'utiliser l'entrée de l'utilisateur pour créer des conditions. Nous avons d'abord besoin d'un formulaire :

Former

Quel est ton nom:

Ta couleur préférée: Rouge Vert Bleu

Dans le navigateur, cela ressemblera à ceci :

Nous utilisons maintenant ces entrées pour créer une page qui change automatiquement la couleur d'arrière-plan en fonction de l'entrée de l'utilisateur. Cela se fait en créant une condition (voir Leçon ) qui utilise les données saisies par l'utilisateur dans le formulaire.

$strEntête = "

Bonjour, " . $_POST["nom d'utilisateur"] . "

"; commutateur ($_POST["couleurfavorite"]) ( case "r": pause ; cas "g" ; casser; cas "b": pause; par défaut : pause ; ) ?> Former

L'arrière-plan sera blanc à moins que l'utilisateur ne spécifie une couleur préférée sur le formulaire. Ceci est obtenu en fixant la valeur défaut(par défaut), qui est appliqué si aucune des conditions n'est remplie.

Mais que se passe-t-il si l'utilisateur ne fournit pas son nom ? Ensuite, le titre ne sera que "Salut". Créons une condition supplémentaire pour modifier cette option.

$strUsername = $_POST["username"] ; if ($strNomUtilisateur != "") ( $strEntête = "

Bonjour, " . $_POST["nom d'utilisateur"] . "

"; ) autre ( $strEntête = "

Bonjour étranger!

";
} commutateur ($_POST["couleur préférée"]) ( cas "r": $strBackgroundColor = "rgb(255,0,0)" ; casser; cas "g" ; $strBackgroundColor = "rgb(0,255,0)" ; casser; cas "b": $strBackgroundColor = "rgb(0,0,255)" ; casser; défaut: $strBackgroundColor = "rgb(255,255,255)" ; casser; ) ?> Former

Dans l'exemple ci-dessus, nous utilisons les conditions pour chèques informations de l'utilisateur. Dans ce cas, ce n'est pas si important si l'utilisateur ne spécifie pas de nom. Mais à mesure que votre code devient de plus en plus complexe, il est essentiel que vous preniez en compte l'option selon laquelle l'utilisateur ne remplit pas du tout de formulaires.

Exemple : Formulaire de contact

En fonction de votre connaissance de PHP et des formulaires, vous pouvez créer un formulaire d'informations de contact à l'aide de la fonction mail, qui a la syntaxe suivante :

Poster (où, sujet, message);

Commençons par créer un formulaire HTML simple :

Formulaire de contact

Formulaire de contact

Sujet:

Message:

Ensuite, vous avez besoin d'un script PHP pour envoyer l'entrée utilisateur :

Les fonctions // Destinataire (modification de votre adresse e-mail) $strEmail = " [courriel protégé]"; // Récupère les entrées de l'utilisateur $strSujet = $_POST["sujet"] ; $strMessage = $_POST["message"] ; mail($strEmail,$strSujet,$strMessage); echo "Courrier envoyé."; ?>

Notez que l'exemple ne fonctionne que si vous avez accès au serveur de messagerie. Ce n'est pas le cas par défaut dans XAMPP et la plupart des hébergeurs gratuits. Ainsi, certains hébergeurs peuvent nécessiter un en-tête de formulaire, ce qui se fait avec un paramètre supplémentaire :

Poster ("[email protected]", "Test", "Ceci est un message de test", "De : [email protected]");

L'une des plus grandes forces de PHP est son fonctionnement avec les formulaires HTML. La clé ici est que chaque élément de formulaire est automatiquement mis à la disposition de vos programmes PHP. Pour plus d'informations sur l'utilisation des formulaires en PHP, consultez la section. Voici un exemple de formulaire HTML :

Exemple #1 La forme la plus simple de HTML

Votre nom:

Votre âge:

Il n'y a rien de particulier dans ce formulaire. Il s'agit d'un formulaire HTML normal 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 peut contenir quelque chose comme :

Exemple #2 Rendu des données d'un formulaire

Bonjour, .
Pour vousannées.

Exemple de sortie de ce programme :

Bonjour Sergey. Vous avez 30 ans.

Si vous ne tenez pas compte des morceaux de code avec htmlspecialchars() Et (entier), le principe de fonctionnement de ce code doit être simple et clair. htmlspecialchars() garantit que les caractères HTML "spéciaux" sont correctement encodé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, nous pouvons simplement le convertir en entier, qui se débarrassera automatiquement des caractères indésirables. PHP peut également le faire automatiquement avec l'extension de filtre. Les variables $_POST["name"] et $_POST["age"] sont automatiquement définies pour vous par PHP. Auparavant, nous utilisions le superglobal $_SERVER, mais ici nous utilisons également le superglobal $_POST, qui contient toutes les données POST. remarquerez que méthode d'envoi(méthode) de notre formulaire est POST. Si nous devions utiliser la méthode OBTENIR, alors nos informations de formulaire seraient dans le superglobal $_GET. Vous pouvez également utiliser la variable $_REQUEST si la source de données n'est pas pertinente. Cette variable contient un mélange de données GET, 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 côté serveur. Par exemple, si une page a un formulaire pour permettre aux utilisateurs d'ajouter leurs propres commentaires, comme celui-ci page ici, le formulaire doit utiliser POST, 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 obtient quelque chose du serveur et ne change rien. Par exemple, le formulaire d'un moteur de recherche doit utiliser GET, car la recherche d'un site Web ne doit pas changer quoi que ce soit qui pourrait intéresser le client, et la mise en signet ou la mise en cache des résultats d'une requête de moteur de recherche est tout aussi utile que la mise en signet ou la mise en cache une page HTML statique.

il y a 2 ans

Mérite d'être précisé :

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

Les raisons de choisir GET vs POST impliquent divers facteurs tels que l'intention de la requête (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 dans le URL), et la facilité avec laquelle vous souhaitez que l'action soit partageable -- Par exemple, les recherches Google sont GET car il est facile de copier et de partager la requête de recherche avec quelqu'un d'autre simplement en partageant l'URL.

La sécurité n'est une considération ici qu'en raison du fait qu'un GET est plus facile à partager qu'un POST. Exemple : vous ne voulez 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.

Dans l'une des rubriques précédentes, l'obtention de données à partir d'un formulaire a déjà été envisagée. Dans cette rubrique, j'expliquerai plus en détail comment le formulaire est envoyé correctement au serveur, ainsi que la façon dont le formulaire est traité en PHP.

Envoi d'un formulaire

Champ de saisie. Les éléments de formulaire les plus courants sont divers champs de saisie. Ils sont créés à l'aide de la balise de nombreux types et balises

sélectionner. De la balise , et pour les éléments de liste, c'est-à-dire pour les balises

Bouton radio. Tous les boutons radio du même groupe doivent avoir le même attribut de nom. Cette valeur définit non seulement le nom du paramètre, mais regroupe également les boutons radio dans un groupe à partir duquel un seul bouton radio peut être sélectionné. L'attribut value est défini différemment. Ajoutons des boutons radio au formulaire :

Case à cocher. Contrairement aux boutons radio, chaque case à cocher est un élément de formulaire distinct. Toutes les cases à cocher sont indépendantes les unes des autres et chacune envoie ses données au serveur. L'attribut name de toutes les cases à cocher doit être différent et l'attribut value peut être identique ou différent. Cependant, la case à cocher n'a pas de données spécifiques. Il peut être sélectionné ou non. Par conséquent, cela n'a aucun sens de le définir sur une valeur longue. Elle peut être définie sur une valeur d'un caractère, par exemple 1. Sur le serveur, la signification de cette valeur sera la suivante : s'il y a une valeur, alors la case a été cochée, et s'il n'y a pas de valeur, alors il n'est pas sélectionné. Ajoutons des cases à cocher au formulaire et créons un bouton d'envoi de formulaire :

Traitement des données des formulaires

Dans l'exemple proposé, un formulaire est créé qui envoie des données à un script appelé takeform.php. Par conséquent, vous devez créer ce script. Ce ne sera pas seulement un programme, mais une page qui sera formée en fonction des données reçues du formulaire. Le formulaire est soumis en utilisant la méthode POST. Le script extrait ces données du tableau superglobal $_POST. Les éléments de tableau peuvent être simplement utilisés dans le script, mais si vous devez beaucoup travailler avec eux, écrire le nom de l'élément à chaque fois n'est pas pratique. Il est plus facile d'écrire une valeur dans une variable et d'y accéder. Créons un fichier takeform.php et écrivons les valeurs des deux premiers éléments du formulaire dans des variables :

takeform.php :

Taguer