PHP 5.4 Développez un site web dynamique et interactif



Documents pareils
Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

PHP 5.4 Développez un site web dynamique et interactif

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6

TP JAVASCRIPT OMI4 TP5 SRC

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

TD HTML AVEC CORRECTION

Création de formulaires interactifs

Séance d ED n 5 : HTML et JavaScript

Formulaire pour envoyer un mail

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

DRUPAL Réalisez des développements professionnels avec PHP (2ième édition)

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

STID 2ème année : TP Web/PHP

Activités HTML. Code: act-html

Formulaires et Compteurs

Programmation Internet Cours 4

Les outils de création de sites web

Module BD et sites WEB

Gestion Électronique de Documents et XML. Master 2 TSM

Extended communication server 4.1 : VoIP SIP service- Administration

LES GRANDES ETAPES DE CREATION D UN WEB DESIGN

HTML, CSS, JS et CGI. Elanore Elessar Dimar

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

HTML. Notions générales

Google Tag Manager. Optimisez le tracking de votre site web. Google Tag Manager. Google Tag Manager. Optimisez le tracking de votre site web 26,50

HTML/CSS - Travaux Pratiques 2

SYSTÈMES D INFORMATIONS

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Panel des technologies Web

Introduction. Passage de sites statiques à des sites dynamiques

NAMEBAY PRO. votre site de revente de noms de domaine en marque blanche. Documentation technique

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Manuel d utilisation du module Liste de cadeaux PRO par Alize Web

Programmation Web. Madalina Croitoru IUT Montpellier

101 Réaliser et publier un site WEB

Didacticiel de mise à jour Web

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Types MIME (2) Typage des ressources Internet. Les URI. Syntaxe dans les URI. Possibilité de spécifier un paramètre du sous-type

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Projet en nouvelles technologies de l information et de la communication

API SMS CONSEIL HTTP V2.01. Sommaire. Documentation V1.0 au 21/05/2011

Attaques de type. Brandon Petty

DOM - Document Object Model

Hébergement de site web Damien Nouvel

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Les services usuels de l Internet

Initiation à html et à la création d'un site web

Notes pour l utilisation d Expression Web

Publier un Carnet Blanc

EXPOSE. La SuisseID, qu est ce que c est? Secrétariat d Etat à l Economie SECO Pierre Hemmer, Chef du développement egovernment

Présentation du Framework BootstrapTwitter

Manuel du composant CKForms Version 1.3.2

Sana Sellami. Licence Professionnelle SIL

Comment développer et intégrer un module à PhpMyLab?

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

Support Google Analytics - 1 / 22 -

Formation HTML / CSS. ar dionoea

Guide d interfaçage SSO Connexion des ressources aux plates-formes de type Corrélyce. Sommaire. Titre du document

Mysql avec EasyPhp. 1 er mars 2006

Attaques applicatives

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

SUPPORT DE COURS / HTML

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

< Atelier 1 /> Démarrer une application web

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

MEDIAplus elearning. version 6.6

Publier dans la Base Documentaire

Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont

Java 7 Les fondamentaux du langage Java

WebSSO, synchronisation et contrôle des accès via LDAP

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Drupal Développeur. Theming et développement pour Drupal. Une formation Formateur : Fabien Crépin. Drupal Développeur.

Module : programmation site Web dynamique Naviguer entre les pages via site map

SOMMAIRE... 1 ESPACE DU CLUB...

Document Object Model (DOM)

HTML5, CSS3 et JavaScript Développez vos sites pour les terminaux mobiles

Introduction aux concepts d ez Publish

Stockage du fichier dans une table mysql:

PDO : PHP Data Object 1/13

Windows 8 Installation et configuration

Optimiser pour les appareils mobiles

Serveur Acronis Backup & Recovery 10 pour Linux. Update 5. Guide d'installation

SQL Server 2012 Administration d une base de données transactionnelle

McAfee Security-as-a-Service

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

BIRT (Business Intelligence and Reporting Tools)

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Programmation Web TP1 - HTML

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

Le Registre sous Windows 8 architecture, administration, script, réparation...

Transcription:

Editions ENI PHP 5.4 Développez un site web dynamique et interactif Collection Ressources Informatiques Extrait

183 Chapitre 7 Gérer les formulaires 1. Vue d'ensemble Gérer les formulaires 1.1 Petit rappel sur les formulaires Le formulaire est un outil de base indispensable pour les sites Web dynamiques puisqu'il permet à l'utilisateur de saisir des informations et donc d'interagir avec le site. Un formulaire HTML est défini entre les balises <form> et </form>. Syntaxe simplifiée <form [ action="url_de_traitement" ] [ method="get" "POST" ] [ id="identifiant_formulaire" ] [ target="cible" ]>... </form> Les attributs de la balise <form> sont les suivants : action URL (Uniform Resource Locator) relative ou absolue qui va traiter le formulaire, en ce qui nous concerne, un script PHP. Cet attribut est obligatoire pour se conformer à la recommandation XHTML stricte.

184 PHP 5.4 Développez un site web dynamique et interactif method id target Mode de transmission vers le serveur des informations saisies dans le formulaire. GET (valeur par défaut) : les données du formulaire sont transmises dans l URL. POST : les données du formulaire sont transmises dans le corps de la requête. Identifiant du formulaire. Si la page HTML contient plusieurs formulaires, l'identifiant permet de les différencier. En ce qui nous concerne, cet identifiant ne présente pas d intérêt car il n est pas récupéré dans le script de traitement du formulaire. Par contre, il peut être utilisé côté client, en JavaScript par exemple. Cible (par exemple une autre fenêtre) dans laquelle ouvrir l'url cible. Entre les balises <form> et </form>, il est possible de placer des balises <input>, <select> ou <textarea> pour définir des zones de saisie. Exemple (formulaire HTML complet) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>saisie</title> </head> <body> <form action="" method="post"> <div> Nom : <input type="text" name="nom" value="" size="20" maxlength="20" /> Mot de passe : <input type="password" name="mot_de_passe" value="" size="20" maxlength="20" /> <br />Sexe : <input type="radio" name="sexe" value="m" />Masculin <input type="radio" name="sexe" value="f" />Féminin <input type="radio" name="sexe" value="?" checked="checked" />Ne sait pas <br />Photo : <input type="file" name="photo" value="" size="50" /> <br />Couleurs préférées : <input type="checkbox" name="couleurs[bleu]" />Bleu <input type="checkbox" name="couleurs[blanc]" />Blanc Editions ENI - All rights reserved

Gérer les formulaires Chapitre 7 185 <input type="checkbox" name="couleurs[rouge]" />Rouge <input type="checkbox" name="couleurs[pas]" checked="checked" />Ne sait pas <br />Langue : <select name="langue"> <option value="e">espagnol</option> <option value="f" selected="selected" >Francais</option> <option value="i">italien</option> </select> <br />Fruits préférés :<br /> <select name="fruits[]" multiple="multiple" size="8"> <option value="a">abricots</option> <option value="c">cerises</option> <option value="f">fraises</option> <option value="p">pêches</option> <option value="?" selected="selected"> Ne sait pas</option> </select> <br />Commentaire :<br /> <textarea name="commentaire" rows="4" cols="50"></textarea> <br /> <input type="hidden" name="invisible" value="123" /><br /> <input type="submit" name="soumettre" value="ok" /> <input type="image" name="valider" src="valider.gif" /> <input type="reset" name="effacer" value="effacer" /> <input type="button" name="action" value="ne fait rien" /> </div> </form> </body> </html>

186 PHP 5.4 Développez un site web dynamique et interactif Résultat 1.2 Interaction entre un formulaire et un script PHP PHP peut intervenir à deux endroits par rapport au formulaire : Pour la construction du formulaire, si ce dernier doit contenir des informations dynamiques. Pour le traitement du formulaire (c'est-à-dire des données saisies par l'utilisateur dans le formulaire). Trois grandes méthodes sont utilisables pour faire interagir un formulaire et un script PHP : Placer le formulaire dans un document HTML "pur" (.htm ou.html), le formulaire ne contient alors aucun élément dynamique, et indiquer le nom du script PHP qui doit traiter le formulaire dans l'attribut action de la balise <form>. Placer le formulaire dans un script PHP (par exemple, pour construire une partie du formulaire dynamiquement) et faire traiter le formulaire par un autre script PHP (mentionné dans l'attribut action de la balise <form>). Editions ENI - All rights reserved

Gérer les formulaires Chapitre 7 187 Placer le formulaire dans un script PHP (par exemple, pour construire une partie du formulaire dynamiquement), et le faire traiter par le même script PHP (mentionné dans l'attribut action de la balise <form> ou appelé par défaut si cet attribut n'est pas présent). Par ailleurs, quelque part sur une autre page, un lien (Saisie par exemple) peut être inséré pour appeler le formulaire de saisie : Formulaire HTML : <a href="saisie.htm">saisie</a> Formulaire PHP : <a href="saisie.php">saisie</a> Première méthode Document HTML saisie.htm <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title>saisie</title></head> <body> <form action="traitement.php" method="post"> <div> Nom : <input type="text" name="nom" value="" /> <input type="submit" name="ok" value="ok" /> </div> </form> </body> </html> Script PHP traitement.php <?php /* A faire... - récupérer les informations saisies - faire le traitement - afficher une nouvelle page */?> Résultat Affichage initial du formulaire :

188 PHP 5.4 Développez un site web dynamique et interactif Saisie d une information : Le résultat du clic sur le bouton OK est une page vide, car, pour l instant, le script de traitement ne fait rien. Deuxième méthode Document PHP saisie.php Un peu de code PHP (en gras) est utilisé pour générer une partie dynamique du formulaire. <?php // Inclure un fichier qui contient des définitions de // constantes, dont le titre de la page (TITRE_PAGE_SAISIE). require('constantes.inc'); // Initialisation d'une variable qui contient la valeur // initiale de la zone de saisie (dans la pratique, cette // valeur vient sans doute d'ailleurs et n'est pas codée // en dur). $nom = 'X'; // Dans le code HTML qui suit, inclusion de deux petits // bouts de code PHP pour afficher respectivement le titre // de la page et la valeur initiale de la zone de saisie.?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title><?php echo TITRE_PAGE_SAISIE;?></title> </head> <body> <form action="traitement.php" method="post"> <div> Nom : <input type="text" name="nom" value="<?php echo $nom;?>" /> <input type="submit" name="ok" value="ok" /> </div> </form> </body> </html> Editions ENI - All rights reserved

Editions ENI DRUPAL Réalisez des développements professionnels avec PHP (2 ième édition) Collection Expert IT Extrait

242 Drupal Réalisez des développements professionnels avec PHP Les clés principales sont détaillées dans le tableau suivant : Clé name description package version core datestamp dependencies files configure Description Le nom du module. La description du module. Le package dans lequel se trouve le module. Le package permet de regrouper des modules ayant le même objectif, sur la page Modules. La version du module. La version de Drupal avec laquelle le module est compatible. La date de dernière modification du module sous forme de timestamp. Les dépendances nécessaires à l'exécution du module. La liste des fichiers composant le module. Le chemin d'accès à la page de configuration du module. Exemple de fichier exemple.info du module "exemple" : name = Exemple de module description = Ceci est un module d'exemple pour le livre Drupal 7 package = Addvista version = 1.0 dependencies[] = field dependencies[] = node core = 7.x 1.2 Le fichier.module Le fichier.module est le cœur du module : c'est le fichier qui contient tout le code PHP du module et qui contient toutes les opérations à réaliser. Bien que son extension ne l'exprime pas, il s'agit d'un fichier PHP. Editions ENI - All rights reserved

Développer un module Chapitre 5 243 Le fichier.module contient un ensemble de fonctions utilitaires permettant d'agir sur le système. On appelle cela des hooks (crochets en français). Le système de hooks est décrit plus loin dans ce chapitre. Chaque module doit comporter un fichier.module, dont le nom doit être rigoureusement identique au nom du module concerné, de la même façon que le fichier.info. Par exemple, un module nommé exemple doit être composé d'un fichier nommé exemple.module. Exemple de fichier.module : <?php function exemple_block_info(){ // CONTENU DE LA FONCTION exemple_block_info() }//exemple_block_info() function exemple_search_info() { // CONTENU DE LA FONCTION exemple_search_info() }//exemple_search_info() function exemple_menu() { // CONTENU DE LA FONCTION exemple_menu() }//exemple_menu() Remarque Toutes les fonctions des modules activés étant chargées au moment de l'affichage d'une page, il est possible qu'il y ait des conflits entre les noms des fonctions utilisées. Pour parer à cela, il est d'usage de faire précéder les noms des fonctions par le nom du module dans lequel elles se trouvent.

244 Drupal Réalisez des développements professionnels avec PHP 1.3 Le fichier.install Le fichier d'extension.install est un fichier PHP qui permet de définir les actions à réaliser à l'installation du module. Ce fichier doit respecter la norme de nommage de Drupal, à savoir que son nom doit correspondre au nom du module avec l'extension.install. En règle générale, ce fichier contient a minima trois fonctions : Le hook hook_install() Le hook hook_uninstall() Le hook hook_schema() Ces fonctions permettent entre autres de générer un schéma de base supplémentaire (en clair, de nouvelles tables) spécifique au module, de créer de nouvelles variables Drupal, etc. Par exemple, pour un module nommé exemple, le fichier exemple.install pourrait ressembler au code suivant : <?php function exemple_install() { // CODE A EXECUTER A L'INSTALLATION DU MODULE. }//exemple_install() function exemple_uninstall() { // CODE A EXECUTER A LA DESINSTALLATION DU MODULE. }//exemple_uninstall() function exemple_schema() { // CODE PERMETTANT DE DEFINIR LA STRUCTURE DES TABLES A CREER. }//exemple_schema() Editions ENI - All rights reserved

Développer un module Chapitre 5 245 2. Les hooks 2.1 Le principe de surcharge De façon générale, on parle du principe de surcharge pour décrire le fait de modifier le comportement d'une fonctionnalité (souvent modélisée par une fonction) sans en modifier son code source d'origine. On parle par exemple de surcharge dans les langages orientés objet dans le cas de méthodes polymorphes (qui peuvent prendre plusieurs formes). Ce principe s'applique dans beaucoup de CMS, notamment Drupal. L'utilisation de ce procédé sur la plateforme Drupal est née du besoin de pouvoir rajouter un ensemble d'instructions au moment de l'exécution de certaines fonctionnalités intégrées au moteur (enregistrement ou affichage d'un nœud, affichage de blocs, etc.) sans modifier le code interne du CMS. En effet, ce type d'amélioration empêcherait toute montée en version du système sans perte des modifications apportées. L'utilisation de ce procédé sur la plateforme Drupal passe par l'utilisation de hook. Un hook est une fonction dont la notation spécifique prend la forme nomdumoduleoudutheme_nomduhook(), et qui sera appelée automatiquement par Drupal au moment opportun. Par exemple, pour effectuer un ensemble d'instructions à la création d'un nœud, il suffit de créer un module nommé test et d'écrire dans le fichier test.module la fonction test_node_insert(), le hook hook_node_insert() étant celui permettant de gérer les opérations sur les nœuds au moment de leur création. Toutes les instructions placées à l'intérieur de cette fonction seront par conséquent exécutées.

246 Drupal Réalisez des développements professionnels avec PHP 2.2 Le fonctionnement En réalité, à chaque hook exécuté sur la plateforme, Drupal exécute ce même hook sur tous les modules installés et activés. Au cours de la génération d'une page, le hook du module standard de Drupal est exécuté et fait appel à son tour à tous les hooks, ici le hook_node_load(), sur l'ensemble des modules activés. Par exemple, au cours du cycle de création d'une page, au moment où le hook hook_node_load() est appelé pour rendre l'affichage d'un nœud, Drupal appelle automatiquement tous les hooks hook_node_load() des autres modules actifs. Cet exemple est illustré par le schéma suivant : Editions ENI - All rights reserved

Développer un module Chapitre 5 247 2.3 L'extension du système de hook Il est possible lors du développement d'un module de le rendre évolutif en proposant de nouveaux hooks qui seront appelés à l'exécution des fonctionnalités de ce module. Drupal utilise la fonction suivante au sein de ses modules pour parvenir à cela : function module_invoke_all('nom_du_hook', 'suite', 'des', 'paramètres'); En effet, Drupal et ses modules standard, à certains moments clés (enregistrement d un nœud, visualisation d un bloc, etc.), exécutent la fonction module_invoke_all() en lui passant comme premier paramètre le nom du hook à exécuter. Tous les autres paramètres seront automatiquement passés au hook appelé. Il est possible d'utiliser cette fonction au sein d'un module pour créer de nouveaux hooks, spécifiques au module courant. Par exemple, nous considérons un module permettant de gérer un ensemble de citations. Une citation peut être exportée dans un format échangeable tel que le format CSV. La fonction suivante est un exemple de fonction du module exemple permettant l'implémentation du système de hooks : function exemple_export($node) { // INSTRUCTIONS D'EXPORT AU FORMAT CSV.. module_invoke_all('export', $node); }//exemple_export() Ici, la fonction demande à Drupal de parcourir tous les modules activés et d'exécuter une fonction portant le nom du module suivi du mot-clé export. À chacune de ces fonctions sera passé un paramètre correspondant au nœud de la citation.