Scripts PHP pour le traitement des formulaires HTML
Souvent, sur les sites Web, vous pouvez trouver des pages sur lesquelles sont placés des formulaires HTML. Formulaires Web – moyen pratique obtenir des informations auprès des visiteurs de votre site. Un exemple de ceci est - , - qui fournit retour avec les visiteurs du site et les développeurs. Les formulaires sont également pratiques pour les développeurs de sites lors du développement d'un CMS, ce qui leur permet de conserver la propriété principale du site : la pertinence. Cet article est consacré aux bases de la création de formulaires HTML, à leur traitement et aux méthodes de transfert de données des formulaires écran vers les scripts PHP.
1) Créez un formulaire simple
Mots clés Et définir le début et la fin du formulaire. Balise de formulaire de départ contient deux attributs : action Et méthode. L'attribut action contient l'URL du script qui doit être appelée pour traiter le script. Attribut méthode indique au navigateur quel type Requête HTTP doit être utilisé pour soumettre le formulaire ; valeurs possibles POSTE Et OBTENIR.
Commentaire
La principale différence entre les méthodes POST et GET réside dans la manière dont les informations sont transférées. DANS Méthode OBTENIR les paramètres sont transmis via la barre d'adresse, c'est-à-dire essentiellement dans l'en-tête de la requête HTTP, tandis que dans la méthode POST, les paramètres sont transmis via le corps de la requête HTTP et ne sont en aucun cas reflétés dans la barre d'adresse.
Ce formulaire html contient un élément parcourir, qui ouvre une boîte de dialogue permettant de sélectionner un fichier à télécharger sur le serveur. Lorsque vous appuyez sur le bouton "Transférer le fichier", le fichier est transmis au script du gestionnaire.
Ensuite, vous devez écrire un script de gestionnaire action.php. Avant d'écrire le gestionnaire, nous devons décider dans quel répertoire nous allons copier le fichier :
if(isset($_FILES [ "monfichier" ])) // Si le fichier existe {
$catalogue = "../image/" ; // Notre catalogue si (is_dir ($ catalogue)) // Si un tel répertoire existe {
$monfichier = $_FILES [ "monfichier" ][ "nom_tmp" ]; // Fichier temporaire $monfichier_name = $_FILES [ "monfichier" ][ "nom" ]; // Nom de fichier if(! copy ($monfichier, $catalog)) echo "Erreur de copie du fichier". $monnom_fichier // Si la copie du fichier a échoué }
sinon mkdir (""../image/" ); // S'il n'existe pas un tel répertoire, nous le créerons }
?>
Commentaire
Si vous faites confiance aux utilisateurs pour télécharger des fichiers sur votre serveur, vous devez être extrêmement prudent. Les attaquants peuvent intégrer du « mauvais » code dans une image ou un fichier et l’envoyer au serveur. Dans de tels cas, vous devez contrôler strictement le téléchargement des fichiers.
Cet exemple montre la création d'un répertoire et la copie d'un fichier dans ce répertoire sur le serveur.
Je voudrais également montrer un exemple avec l'élément case à cocher. Cet élément est légèrement différent des autres éléments dans la mesure où si ce n'est pas l'un des éléments case à cocher’a n’est pas sélectionné, alors la variable superglobale $_POST renverra une valeur vide :
if (!empty($_POST [ "ma couleur" ])) echo $_POST [ "ma couleur" ]; // Si au moins 1 élément est sélectionné sinon écho "Sélectionner une valeur";
?>
L'une des fonctions les plus appréciées du site est le formulaire de candidature ou de commande, dont les données sont envoyées par e-mail au propriétaire du site. En règle générale, ces formulaires sont simples et se composent de deux ou trois champs de saisie des données. Comment créer un tel bon de commande ? Cela nécessite l'utilisation du langage Balisage HTML et la langue Programmation PHP.
Le langage de balisage HTML lui-même est simple : il vous suffit de comprendre comment et où placer certaines balises. Avec le langage de programmation PHP, les choses sont un peu plus compliquées.
Pour un programmeur, créer un tel formulaire n'est pas difficile, mais pour un concepteur de mise en page HTML, certaines actions peuvent sembler difficiles.
Créer un formulaire de soumission de données en HTML
La première ligne sera la suivante
Maintenant, rassemblons tout.
Rendons maintenant les champs du formulaire obligatoires. Nous avons le code suivant :
Créez un fichier qui accepte les données du formulaire HTML
Ce sera un fichier appelé send.php
Dans le fichier, dans un premier temps, vous devez accepter les données du tableau post. Pour ce faire, nous créons deux variables :
$fio = $_POST["fio"]; $email = $_POST["email"];
Les noms de variables en PHP sont précédés du signe $ et un point-virgule est placé à la fin de chaque ligne. $_POST est un tableau dans lequel les données du formulaire sont envoyées. Dans le formulaire HTML, la méthode d'envoi est spécifiée comme method="post". Ainsi, deux variables sont extraites de formulaires HTML. Pour protéger votre site, vous devez faire passer ces variables via plusieurs filtres – fonctions php.
La première fonction convertira tous les caractères que l'utilisateur tentera d'ajouter au formulaire :
Dans ce cas, de nouvelles variables ne sont pas créées en php, mais celles existantes sont utilisées. Ce que le filtre va faire, c'est transformer le caractère "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
La deuxième fonction décode l'URL si l'utilisateur tente de l'ajouter au formulaire.
Avec la troisième fonction, nous supprimerons les espaces du début et de la fin de la ligne, le cas échéant :
$fio = trim($fio); $email = trim($email);
Il existe d'autres fonctions qui vous permettent de filtrer les variables php. Leur utilisation dépend de votre crainte qu'un attaquant tente d'ajouter du code de programme à ce formulaire de soumission par courrier électronique HTML.
Validation des données transférées du formulaire HTML vers le fichier PHP
Afin de vérifier si ce code fonctionne et si des données sont en cours de transfert, vous pouvez simplement l'afficher à l'écran grâce à la fonction écho :
écho $fio; écho " "; écho $fio;
La deuxième ligne ici est nécessaire pour séparer la sortie des variables php en différentes lignes.
Envoi des données reçues d'un formulaire HTML vers un e-mail en utilisant PHP
Pour envoyer des données par email, vous devez utiliser la fonction mail de PHP.
mail("à quelle adresse envoyer", "sujet de la lettre", "Message (corps de la lettre)","De : à partir de quel email la lettre est envoyée \r\n");
Par exemple, vous devez envoyer des données à l'adresse e-mail du propriétaire ou du gestionnaire du site [email protégé].
Le sujet de la lettre doit être clair et le message de la lettre doit contenir ce que l'utilisateur a spécifié dans le formulaire HTML.
Il est nécessaire d'ajouter une condition qui vérifiera si le formulaire a été envoyé en PHP à l'adresse email indiquée.
si (courrier(" [email protégé]", "Commander sur le site", "Nom complet :".$fio.". E-mail : ".$email ,"De : [email protégé]\r\n")) { echo "message envoyé avec succès" ; ) autre ( }
Ainsi, le code du programme du fichier send.php, qui enverra les données du formulaire HTML par courrier électronique, ressemblera à ceci :
$fio = $_POST["fio"]; $email = $_POST["email"]; $fio = htmlspecialchars($fio); $email = htmlspecialchars($email); $fio = urldecode($fio); $email = urldecode($email); $fio = trim($fio); $email = trim($email); //écho $fio; //écho " "; //écho $email; si (courrier(" [email protégé]", "Application du site", "Nom complet :".$fio.". E-mail : ".$email ,"De : [email protégé]\r\n")) ( echo "message envoyé avec succès"; ) autre ( echo "des erreurs se sont produites lors de l'envoi du message"; }?>
Trois lignes permettant de vérifier si les données sont transférées dans le fichier sont commentées. Si nécessaire, ils peuvent être supprimés, car ils n'étaient nécessaires que pour le débogage.
Nous plaçons le code HTML et PHP pour soumettre le formulaire dans un seul fichier
Dans les commentaires de cet article, de nombreuses personnes se demandent comment s'assurer que le formulaire HTML et le code PHP pour l'envoi de données par courrier électronique se trouvent dans un seul fichier, et non deux.
Pour mettre en œuvre ce travail, vous devez placer le code HTML du formulaire dans le fichier send.php et ajouter une condition qui vérifiera la présence de variables dans le tableau POST (ce tableau est envoyé depuis le formulaire). Autrement dit, si les variables du tableau n'existent pas, vous devez alors montrer le formulaire à l'utilisateur. Sinon, vous devez recevoir les données du tableau et les envoyer au destinataire.
Voyons comment changer le code PHP dans le fichier send.php :
Formulaire de candidature depuis le site
// vérifie si des variables existent dans le tableau POST if(!isset($_POST["fio"]) et !isset($_POST["email"]))( ?>
) autre ( //afficher le formulaire $fio = $_POST["fio"]; $email = $_POST["email"]; $fio = htmlspecialchars($fio); $email = htmlspecialchars($email); $fio = urldecode($fio); $email = urldecode($email); $fio = trim($fio); $email = trim($email); si (courrier(" [email protégé]", "Application du site", "Nom complet :".$fio.". E-mail : ".$email ,"De : [email protégé]\r\n"))( echo "Message envoyé avec succès" ; ) autre ( echo "Des erreurs se sont produites lors de l'envoi du message"; } } ?>
On vérifie l'existence d'une variable dans le tableau POST avec la fonction PHP isset(). Un point d'exclamation devant cette fonction dans une condition signifie une négation. Autrement dit, si la variable n'existe pas, nous devons alors afficher notre formulaire. Si je n’avais pas mis le point d’exclamation, la condition signifierait littéralement « si elle existe, alors affichez le formulaire ». Et c'est faux dans notre cas. Naturellement, vous pouvez le renommer index.php. Si vous renommez le fichier, n'oubliez pas de renommer le nom du fichier dans la ligne