Introduction à PHP
Transcription
Introduction à PHP
Introduction à PHP Formulaires HTML et PHP IUT de Fontainebleau 11 mars 2014 Introduction à PHP Formlaire et traitement Eléments HTML 1 Formlaire et traitement Passage des paramètres depuis un formulaire Encodage des données 2 Eléments HTML Texte Cases à cocher Listes Upload de fichiers Introduction à PHP Formlaire et traitement Eléments HTML Passage des paramètres depuis un formulaire Encodage des données Formulaire HTML I Echange de données entre le navigateur (client) et les pages (serveur) via le web. A quelles fins ? Créer un espace sécurisé. Uploader des fichiers. Administration du contenu d’un site. Récupération d’information concernant un utilisateur, ... I En HTML, <form> et </form> déclare le début et la fin d’un formulaire. I L’attribut action indique la page destinatrice des données saisies après soumission. <form action="TraiterFormulaire.php"> <!-le formulaire --> </form> Introduction à PHP Formlaire et traitement Eléments HTML Passage des paramètres depuis un formulaire Encodage des données Lorsqu’un formulaire est envoyé au serveur Web, toutes ses données se retrouvent dans des superglobales. Il s’agit de tableaux associatifs accessibles depuis une fonction ou une méthode de classe sans avoir besoin de vous soucier de la portée des variables. Il en existe beaucoup. on utilisera : $_GET[] $_POST[] $_REQUEST[] contient toutes les données envoyées via l’URL (en GET) contient les données envoyées via un formulaire en POST est la fusion des deux premiers. Récupération des donnéees C’est la valeur de l’attribut name des éléments html du formulaire qui sert de clés dans les tableaux précédents. Introduction à PHP Formlaire et traitement Eléments HTML Passage des paramètres depuis un formulaire Encodage des données Méthode POST La méthode post permet de passer des variables saisies par l’utilisateur à un script php, dans la corps de la requête http. Un exemple de formulaire <form method="post" action="enregistrement.php"> <fieldset> <legend><b>Identite</b></legend> <label>Nom</label> : <input type=text name="nom" /> <label>Prenom</label> : <input type=text name="prenom" /> <label>Email</label> : <input type=text name="email" /> </fieldset> <input type="submit" name="accepter" value="OK" > </form> Introduction à PHP Formlaire et traitement Eléments HTML Passage des paramètres depuis un formulaire Encodage des données L’exemple affiche un formulaire simple dans le navigateur : trois champs de saisie de texte. Introduction à PHP Formlaire et traitement Eléments HTML Passage des paramètres depuis un formulaire Encodage des données Lorsque l’utilisateur valide et envoie les données au serveur, les variables du formulaire sont passées au script php destination au moyen du tableau _POST. <?php // on recupere les valeurs // du formulaire $nom=$_POST[’nom’]; $prenom=$_POST[’prenom’]; $email=$_POST[’email’]; // on les traite echo "<li>$nom</li>"; echo "<li>$prenom</li>"; echo "<li>$email</li>"; ?> Introduction à PHP Formlaire et traitement Eléments HTML Passage des paramètres depuis un formulaire Encodage des données Remarque : la fonction extract permet de créer des variables à partir des clés d’un tableau associatif. chaque case du tableau génére une variable du nom de sa clé. <?php // on recupere les valeurs du formulaire extract($_POST); // on les traite echo "<li>$nom</li>"; echo "<li>$prenom</li>"; echo "<li>$email</li>"; ?> Introduction à PHP Formlaire et traitement Eléments HTML Passage des paramètres depuis un formulaire Encodage des données Méthode GET Les données sont passées directement via l’URL (elles sont encodées). I On peut l’utiliser dynamiquement via un formulaire en précisant la méthode GET. I Ou statiquement en formant soi-meme l’URL avec les variables. $id=3; echo "<a href=\"Traiter.php?action=buy&id=$id\">Acheter</a>"; I ce qui donnera l’URL : I Les variables se récupérent à l’aide du tableau _GET I La syntaxe pour passer des arguments à une page est la suivante mon_url_amoi?var1=valeur1&var2=valeur2 ... Introduction à PHP Formlaire et traitement Eléments HTML Passage des paramètres depuis un formulaire Encodage des données Encodage L’attribut enctype de la balise form contrôle l’encodage des données. Par défaut, les données issues d’un formulaire sont de "type" application/x-www-form-urlencoded. Il s’agit d’une seule chaîne de caractères de la forme var1=valeur1&var2=valeur2 qui est url encodée : I Les caractères non alphanumériques sont remplacés par %xx, ( xx est le code ascii du caractère en hexadécimal) I Les caractères ; / ? : @ & = + $ , sont reservés : ? : début de QUERY_STRING. & : séparateur de champs. = : séparation entre le champ et sa valeur. I Les espaces sont remplacés par des +. Il existe d’autres encodages (notamment multipart/form-data). Introduction à PHP Formlaire et traitement Eléments HTML Passage des paramètres depuis un formulaire Encodage des données Introduction à PHP Formlaire et traitement Eléments HTML Passage des paramètres depuis un formulaire Encodage des données Quelle méthode utiliser ? peu importe, sauf.... On préfére la méthode POST. I envoi de fichiers (pas le choix !) I envoi de données de taille importante (poids supérieur à 4ko) I envoi de données confidentielles. (elles passent en clair sur le réseau néanmoins !) La méthode GET peut être utiliser dans tous les autres cas. I On peut revenir en arrière avec le navigateur. I Mise en cache. (recherche sur un site, ....) I Utilisation statique pour passer directement un paramètre à un script. Introduction à PHP Formlaire et traitement Eléments HTML Passage des paramètres depuis un formulaire Encodage des données Gestion d’un formulaire 1 Génération du premier formulaire. 2 Envoie des données. 3 Reception des données. 4 Vérification de la validité des champs. 5 Si OK, on traite les données (modification d’un bd, etc....) 6 Sinon, on regénére le formulaire, en y insérant les données valides déjà saisies par l’utilisateur. (attribut value) Introduction à PHP Formlaire et traitement Eléments HTML Texte Cases à cocher Listes Upload de fichiers 1 Formlaire et traitement Passage des paramètres depuis un formulaire Encodage des données 2 Eléments HTML Texte Cases à cocher Listes Upload de fichiers Introduction à PHP Formlaire et traitement Eléments HTML Texte Cases à cocher Listes Upload de fichiers Textes I I Champ texte : créer avec la balise <input> et l’attribut type text. Zone de texte (zone de texte sur plusieurs lignes) : créer avec la balise <texarea> <form method="post" action="enregistrement.php"> <fieldset> <legend><b>Enregistrement</b></legend> <label>Titre</label> <input type="text" name="titre"> <label>Contenu</label> <textarea rows="5" name="contenu"></textarea> </fieldset> <button type="submit" name="accepter"> ENVOYER </button> </form> Introduction à PHP Formlaire et traitement Eléments HTML Texte Cases à cocher Listes Upload de fichiers <?php echo $_POST[’titre’]."<br />"; echo nl2br($_POST[’contenu’]); ?> Notez bien la fonction nl2br qui permet de convertir les sauts de lignes de la zone de texte en balise <br /> pour l’affichage HTML. Remarques I champ texte qui permet de saisir un mot de passe : Il s’agit toujours de la balise input avec l’attribut password I champ texte caché Il s’agit toujours de la balise input avec l’attribut hidden <input type="password" name="nom" value="" /> <input type="hidden" name="nom" value="" /> Introduction à PHP Formlaire et traitement Eléments HTML Texte Cases à cocher Listes Upload de fichiers balise input avec l’attribut checkbox. <form method="post" action="traitement.php"> <legend> Quel (s) langage (s) utilisez vous ?</legend> <input type="checkbox" name="langages[]" value="C"> C <input type="checkbox" name="langages[]" value="PHP"> PHP <input type="checkbox" name="langages[]" value="JS"> JS <input type="checkbox" name="langages[]" value="JAVA"> JAVA <button type="submit"> Validez </button> </form> Introduction à PHP Formlaire et traitement Eléments HTML Texte Cases à cocher Listes Upload de fichiers <?php $langages = $_POST[’langages’]; foreach ($langages as $unlangage) echo (’La case ’ . $unlangage . ’a ete cochee <br>’); ?> Introduction à PHP Formlaire et traitement Eléments HTML Texte Cases à cocher Listes Upload de fichiers balise input avec l’attribut radio : un seul choix possible. input radio <form action="reponse.php" methode=post> Qui etait Pythagore ? <input type="radio" name="question1" value=1> Un realisateur de film d’horreur. <input type="radio" name="question1" value=2> Un mathematicien grec. <input type="radio" name="question1" value=3> Un danseur mondain <input type=submit value=valider> </form> Introduction à PHP Formlaire et traitement Eléments HTML Texte Cases à cocher Listes Upload de fichiers Il existe d’autres valeurs pour l’attribut type de la balise input I Boutons reset qui vide tous les champs d’un formulaire. submit pour envoyer les données d’un formulaire. image pour créer un bouton de validation graphique. I Zone de données. file pour soumettre un nom de fichier à uploader. hidden pour envoyer une donnée cachée depuis un formulaire. Introduction à PHP Formlaire et traitement Eléments HTML Texte Cases à cocher Listes Upload de fichiers Balise select <form action="traiter.php" method=post> Quel est votre langage prefere ? <select name="langage"> <option value=1>C</option> <option value=2>PHP</option> <option value=3>Bash</option> <option value=4>Assembleur Mips</option> </select> <input type=submit value=Valider> </form> Un seul choix possible. On peut néanmoins, en rajoutant multiple dans la balise, autorisé plusieurs choix. Introduction à PHP Formlaire et traitement Eléments HTML Texte Cases à cocher Listes Upload de fichiers <form enctype="multipart/form-data" action="fileupload.php" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> Transfere le fichier <input type="file" name="monfichier" /> <input type="submit" /> </form> Le tableau _FILE contient un tableau pour chaque fichier transféré (clé correspondant à l’attribut name) contenant : I tmp_name : le nom (et chemin) du fichier temporaire sous lequel le fichier a été stocké. I name : le nom qu’avait le fichier dans l’espace de l’utilisateur I size : la taille du fichier en octets I type : le "MIME type" du fichier (ex : text/html, image/gif, etc.) Introduction à PHP