.. ================================================== .. FOR YOUR INFORMATION .. -------------------------------------------------- .. -*- coding: utf-8 -*- with BOM. ===================================== Formulaire ===================================== Pour permettre des interactions avec les utilisateurs d'un site Internet, le formulaire est essentiel. Il se compose d'un ou plusieurs champs à remplir et d'un bouton. Il est fait en HTML. Le JavaScript peut venir compléter le formulaire pour permettre sa validation ou de l'interaction (formulaire intelligent). Le PHP, quant à lui, permet de traiter les données ou de pré-remplir les champs (dans le cas d'un formulaire de modification). .. figure:: Images/formulaire.jpg :scale: 100 % :alt: Formulaire de connexion :align: center Code du formulaire ci-dessus .. code-block:: php [début de la page]
**Balises de formulaire** ================================== **form** Définit le début et la fin du formulaire. ======== ================== =================================================== Attribut Exemple Définition ======== ================== =================================================== name name="connection" Définit le nom du Formulaire method method="post" Définit la méthode d'envoi (POST ou GET) action action="page.php" Définit la page qui est exécutée au clic du bouton. ======== ================== =================================================== **input** Champ de saisie sur une ligne. Balise auto-fermante. Il faut lui préciser un type de données (text, password, radio, number, email, checkbox, hidden etc). Le type "submit" permet d'envoyer un formulaire dans le cas d'un bouton. **textarea** Champ de saisie sur plusieurs lignes. **select** Permet de définir une liste déroulante. Chaque élément de la liste est une "option". Le nom se place sur la balise "select" et il est nécessaire d'ajouter un attribut "value" sur chaque option permettant de récupérer la sélection. .. code-block:: php **Envoi d'un formulaire** ========================= Pour qu'un formulaire s'envoie, il faut définir une méthode d'envoi dans la balise form, une action et avoir un bouton de type submit. Par défaut, si la méthode n'est pas spécifiée, c'est la méthode GET qui est utilisée. Par défaut, si l'action n'est pas utilisée, c'est l'action # qui est utilisée (on reste sur la même page). Cependant, il est recommandé de définir la méthode et l'action pour éviter des mauvaises surprises. .. code-block:: php // Définir la méthode Pour télécharger un fichier ou une image, c'est obligatoirement la méthode POST qui est utilisée. En effet, c'est difficile de passer une telle quantité de donnée dans une URL. De plus, un attribut supplémentaire à la balise form est ajouté (enctype="multipart/form-data") permettant de prendre en compte le traitement des images. Par défaut, les caractères sont encodés avant l'envoi (les espaces sont convertis en + et les caractères spéciaux transformé en ASCII) (enctype="application/x-www-form-urlencoded"). Pour récupérer les données du formulaire, nous connaissons la super-globales $_POST. Cette dernière fonctionne très bien pour tous les champs simples. Mais pour récupérer les données d'un téléchargement, une autre super-globale est utilisée: $_FILES. Plusieurs informations provenant d'un fichier sont stockées, telles que son nom, son type, son code erreur, son nom temporaire et sa taille. Dans le cas d'un formulaire en POST avec des champs simples et des champs de téléchargement, les champs simples seront traités avec un $_POST["nomDuChamp"] et les champs de téléchargement avec un $_FILES["nomDuChamp"]. J'ai inséré une image "capture.jpg" dans mon champ "printscreen", voici ce que je peux récupérer : .. code-block:: php //capture.jpg (nom d'origine de mon fichier téléchargé) $_FILES["printscreen"]["name"]; //image/jpeg (type de mon fichier) $_FILES["printscreen"]["type"]; //xdhgqjd.jpg (nom que le serveur va attribuer à mon fichier pour éviter qu'il écrase //un autre fichier avec le même nom) $_FILES["printscreen"]["tmp_name"]; //0 (signifie que tout s'est bien passé) $_FILES["printscreen"]["error"]; //37465 (taille du fichier en octets) $_FILES["printscreen"]["size"]; Une fois que les données ont été récupérées via $_FILES, il faut déplacer le fichier dans un répertoire du site web afin de le stocker. Une méthode de déplacement est utilisée qui a deux arguments : move_uploaded_file (fichier source, destination du fichier) .. code-block:: php $source = $_FILES["printscreen"]["tmp_name"]; //La destination permet de définir non seulement le chemin du ficher, mais aussi //un nouveau nom si nécessaire $destination = "images/" . date("YmdHis") . $_FILES["printscreen"]["name"]; move_uploaded_file($source, $destination); **php.ini** =========== C'est le fichier de configuration de PHP, chaque serveur en contient un. Il permet d'indiquer des directives, de fixer de valeurs ou d'activer des modules complémentaires. Voici les variables qui s'y rapportent : file_uploads : Autorise ou non l'envoi de fichiers (ON / OFF) upload_tmp_dir : Répertoire temporaire d'accueil du fichier upload_max_filesize : Définit la taille maximale autorisée pour l'envoi d'un fichier (ex: 2Mo) post_max_size : Définit la taille maximale pour l'envoi d'un formulaire en POST (tous les champs compris). (ex: 8Mo) Tous ces paramètres sont accessibles depuis le fichier php.ini ou en utilisant la méthode phpinfo() dans un fichier php.