Formulaires, CGI et PHP David Gross-Amblard (CNAM-Vertigo/Cédric) Transparents originaux : Philippe Rigaux Projet 3I 31.10.2001.

Slides:



Advertisements
Présentations similaires
Novembre 2005 – Michel Desconnets PHP : théorie Objectif : introduire les concepts globaux permettant d'aborder la programmation en PHP.
Advertisements

Rappels C.
Conception de Site Webs dynamiques Cours 5
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 9 Patrick Reuter.
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 8 Patrick Reuter.
Interactivé: L'Action Script.
Création de Pages Web Dynamiques
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
TP n°1 PHP LES BASES Premier programme Affichage
Personal Home Page / Hypertext Processor (PHP)
Objectifs Présentation et utilisation du langage PERL
PHP ou le web dynamique. généralités écrit par Ramsus Lerdorf en 1994 pour gérer sa page perso actuellement stable en version 5 (5.3) et la version 6.
TP 3-4 BD21.
Techniques Internet de Base Licence 2 (Info, Maths, PC/PA) Université Jean Monnet Ruggero G. PENSA
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Langage C Révision.
CPI/BTS 2 Programmation Web Introduction au PHP
HELHA informatique de gestion
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Les instructions PHP pour l'accès à une base de données MySql
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
Programmation multimédia 3
Introduction au langage PHP Réfs : Chap 3 p 49. Présentation PHP (Hypertext PreProcessor) est un langage de développement Web créé en 1994 par Rasmus.
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Le langage Javascript pour le web
Le langage ASP Les formulaires avec Request. Les formulaires sont employés pour transmettre des informations saisies par un client à une application Web.
Principes de programmation
PHP Gestion des systèmes d’information Classe terminale
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
IFT 6800 Atelier en Technologies d’information
Web dynamique PhP + MySQL AYARI Mejdi 2006
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
ECP – Option SA Henri Fallon
L3 Module Libre Année universitaire Initiation à la Bioinformatique Jean-Michel RICHER.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
L’essentiel du langage C
Animateur : Med HAIJOUBI
PHP 1° PARTIE : LES BASES © BTS IRIS 2002 [tv] Présentation Historique
Javascript 1° PARTIE : LES BASES
PHP & My SQL.
Introduction au langage PHP Licence Pro Cours Internet / Intranet Utilité Historique Exemples Fonctions PHP Classes.
Département Technologie de l’Information et de la Communication
Shell Equipe ID Bioinformatics Training Course June 2014.
JavaScript Nécessaire Web.
3 Les instructions. Cours 32 Plan du cours 3 Instruction Bloc Portée L’alternative Affectations =, +=, *=… Comment comparer –Comparer des réels –Comparer.
JavaScript.
Un survol du language C.
 Syntaxe du langage PHP
 Requêtes MySQL en PHP Introduction
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
 Formulaires HTML : traiter les entrées utilisateur
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
Initiation au JavaScript
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
Cours de :.
Initiation au web dynamique Licence Professionnelle.
Les bases de l’algorithmique
Module 133 Développer des applications Web Introduction à PHP.
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
Scripts et fonctions Instructions de contrôle
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Principes et variables
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
PhP 2. Tableaux et structures de contrôle. Les tableaux Définition –Rassemblement d’un ensemble de valeurs portant le même nom de variable –Types de tableaux.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Transcription de la présentation:

Formulaires, CGI et PHP David Gross-Amblard (CNAM-Vertigo/Cédric) Transparents originaux : Philippe Rigaux Projet 3I

Plan zLe langage PHP yprincipe ysyntaxe zApplications de PHP yformulaires HTML, interaction avec Php yProduction automatique de documents HTML y(Gestion de sessions : les cookies en Php)

Informations zwww.php.net : la référence zwww.easyphp.org : un paquetage complet sous windows zDe très nombreux scripts sur le web : forums, agenda, jeux, … prêt-à-servir.

Le langage PHP

PHP, qu'est-ce que c'est ? zUn langage pour la programmation du serveur zPermet d'inclure des parties programmées dans du HTML zTrès proche du langage C zTrès riche en fonctions, notamment pour l'accès aux bases de données

Petit exemple PHP : toto.php Bonjour Quelle heure est-il ? Il est exactement

Comment ça marche Navigateur Programme serveur Interprêteur PHP Exécution des instructions PHP machine serveur Requête HTTP : toto.php Document HTML Fichier toto.php HTML/PHP

Ce que renvoit le serveur Bonjour Quelle heure est-il ? Il est exactement 19:38:5 Le navigateur ne voit que du HTML !

Syntaxe de PHP zCommentaires y/*... */ ou //... ou #... zVariables yUn '$', puis (au moins) une lettre, puis tout ce qu'on veut. yAttention : distinction minuscules/majuscules zConstantes ydefine (PI, )

Déclaration de variables, types zPas de déclaration de variable en PHP ! L'apparition d'un nouveau symbole préfixé par '$' entraîne la création d'une variable Ex : $maVariable = 1; yLa valeur initiale est '''' ou 0 selon le contexte zLe typage est dynamique yUne même variable peut être utilisée pour stocker plusieurs types de données yDes conversions sont appliquées quand c'est nécessaire.

Types scalaires Les entiers $i = 1; Les flottants $i = 1.12; Les chaînes de caractère $i = "Je suis une chaîne"; Booléen $i = true; yNB: 0 false, tout le reste vaut true.

A propos des chaînes de caractères Apostrophes simples : mise en page quelconque. $c = 'Je suis une chaîne de caractères'; Apostrophes doubles : possibilité d'inclure des variables $nom = "Phileas Fogg"; $c = "Je m'appelle $nom";

Production de HTML On écrit avec echo ou printf zDes chaînes et/ou des variables zEn utilisant la concaténation, '.' $nom = "Fogg"; $nb = 3; echo "Je m'appelle $nom". "et je prends le métro ". $nb. " fois par jour";

Tableaux zTableaux indicés : liste de valeurs indicées par 0, 1, 2,... $tab[0] = 1; $tab[1] = "une chaîne"; zTableaux associatifs : liste de valeurs référencées par des clés $MES["Vertigo"]="Hitchcock"; $MES ["Gladiator"]="Scott";

Initialisation d'un tableau Avec array : Indicé: $tab = array("e1","el2",120); Associatif: $mes=array("Vertigo"=>"Hitchcock", "Gladiator" => "Scott"); zImplicitement (utile pour les formulaires) $tab[] = "el1"; $tab[] = "el2"; $tab[] = 120;

Parcours d'un tableau zTableau indicé : en incrémentant l'indice for ($i=0; $i < count($tab); $i++) echo "Element $i =". $tab[$i]; zTableau associatif : avec des fonctions yUn curseur sur le tableau est déplacé avec next ou prev yLes fonctions key et current renvoient les données du curseur. do{ echo "Clé :.key($mes). élément :.current($mes); } while (next($mes));

Expressions zExpression = tout ce qui a une valeur. yEn PHP, comme en C, presques toutes les instructions ont une valeur. 10; $i = 10; $i; yL'affectation a elle-même une valeur, donc on peut écrire $j = $i = 10;

Opérateurs zOpérateurs arithmétiques: +, -, *, / $i = 20; $i = ($i + 2) * 34; zComparaisons : ==,, = $i == 20; $j == $j - 1; zOpérateurs logiques: && (and) || (or) ! (not) ($i == 20 && $j = j-1) zConcaténation de chaînes $c1 = "Phileas"; $c2 = "Fogg"; $nom = $c1. " ". $c2;

Facilités syntaxiques zExpressions équivalentes : $i = $i + 20; $i += $20; yValable pour tous les opérateurs $nom = "Phileas "; $nom. = "Fogg"; zIncrémentations Au lieu de $i=$i+1, on écrit $i++ ou ++$i; yValeur de l'expression ?

Structures de contrôle : tests if (expression) { // bloc si expression != 0 } else { // bloc si expression = 0 } Rappel: expression = tout ce qui produit une valeur ! zLes if-then-else peuvent s'imbriquer.

Structures de contrôle : switch switch (expression) { case val1: // bloc si expression==val1 break; case val2: // bloc si expression==val1 break;... default: // tout a échoué break; }

Boucles : do et while while (expression) { // bloc tant que expression!=0 } zA un moment donné, expression doit devenir 0 ! do { // bloc tant que expression!=0 } while (expression) zNB : le bloc s'exécute au moins une fois

Boucles : for $i = 0; while ($i < 5) { // bloc $i++; } zPeut être remplacé par : for ($i=0; $i<5; $i++) {bloc}; zNB : on peut faire des choses très compliquées.

Instructions break et continue L'instruction break permet de sortir du corps d'une boucle. L'instruction continue force le passage à l'itération suivante. $i = 0; while (1) { if (++$i == 5) break; if ($i == 3) continue; // instructions }

Fonctions: passage des arguments function Addition ($i, $j) { // NB :$i et $j sont des variables locales $somme = $i + $j; $i = 2; $j = 3; return $somme; } $i = 1; $j = 1; // Appel de la fonction, passage par valeur $k = Addition ($i, $j); // $i et $j valent toujours 1 !

Fonctions: passage par adresse $i = 1; $j = 1; // Appel de la fonction, passage par valeur $k = Addition (&$i, &$j); // $i et $j valent 2 et 3 ! zEn préfixant par '&', on passe une variable par adresse. zIntroduit un effet de bord si la fonction modifie ses arguments : très mauvais

Passage par adresse avec déclaration function Addition ($i, $j, &$somme) { $somme = $i + $j; $i = 2; $j = 3; } $i = 1; $j = 1; // Appel de la fonction, passage par adresse de $k Addition ($i, $j, $k); // $i et $j valent toujours 1, $k vaut 2

Valeurs par défaut zIl est possible de donner une valeur par défaut aux arguments: très pratique function Connexion ($nom=gross", $passe="mdp", $serveur="cortes") { // instructions }... // Connexion à cortes Connexion (); // Connexion de Amman à cortes Connexion ("amann","mdp2"); // Connexion à cartier Connexion ("gross","mdp","cartier")

Fonctions et variables : conseil du jour zBon principe : une fonction n'accède pas aux variables du programme appelant, et réciproquement yVariables automatiques : apparaissent et disparaissent avec la fonction => très bon yVariables statiques : locales à la fonction, mais persistantes entre deux appels => bon yVariables globales : visibles partout => TRES MAUVAIS. z=> Se limiter aux variables automatiques

Application : formulaires HTML

Formulaires HTML: zUn conteneur pour les champs de saisie: yACTION est l'URL du script ou du programme à déclencher (en principae, sur le serveur) yMETHOD est GET ou POST (meilleur)

Exemple : un formulaire HTML (démo)démo Paramètres pour la recherche de films : Titre : Année début : Année fin :

Transmission zChaque champ a un nom zGET : les données sont transmises dans l URL anMin=1950&anMax=2001 zPOST : transmission dans le protocole HTTP (invisible sur l URL)

Champs de formulaire : Très général: saisie de texte, ou choix dans des listes. L'attribut TYPE vaut: TEXT pour les chaînes de caractères HIDDEN pour les champs cachés CHECKBOX pour un choix multiple RADIOBOX pour un choix exclusif SUBMIT pour déclencher l'action FILE pour transmettre un fichier

Champs zPermet de choisir une ou plusieurs valeurs dans une liste Alfred Hitchcock Maurice Pialat Quentin Tarantino L'option MULTIPLE permet de sélectionner plusieurs valeurs

Champ zPour entrer du texte libre: Résumé du film L'attribut MAXLENGTH indique la longueur maximale du text.

Un formulaire complet (démo)démo <FORM ACTION=" METHOD=POST > Titre : Année : Comédie : Drame : Histoire : Suspense : France : Etats-Unis : Allemagne : Japon : Affiche du film :

Un formulaire complet (suite) Metteur-en-scène : Alfred Hitchcock Maurice Pialat Quentin Tarantino Akira Kurosawa John Woo Tim Burton Résumé: Résumé Votre choix

Traitement des données en PHP zOn récupère, sous forme de variable PHP, les champs d'un formulaire yPour les valeurs scalaires -> un variable yPour les fichiers -> un nom de fichier temporaire

Que se passe-t-il quand on valide ? Le programme client transmet au programme serveur les infos sous la forme: titre=t&annee=a... zPour le script PHP, cela donne: $titre = t; $annee=a; Et on peut maintenant utiliser ces données pour fabriquer une page HTML

Passage de valeurs multiples (démo)démo <FORM ACTION=" METHOD=POST"> Titre : Prénom Nom Votre choix

Que se passe-t-il quand on valide ? Le programme client transmet au programme serveur les infos sous la forme: titre=t&prenom[]=p1&nom[]=n1&prenom[]=p2&nom[]=n2&... zPour le script PHP, cela donne: $titre = t; $prenom[] = p1, $nom[] = n1; $prenom[] = p2, $nom[] = n2;... z=> on crée deux tableaux PHP !

Ce que fait le script <?php echo "Pour le film $titre j'ai reu les acteurs suivants : \n"; $nbActeurs = count($prenom); for ($i=0; $i < $nbActeurs; $i++) echo " $prenom[$i] $nom[$i] \n"; ?>  Une boucle sur les tableaux permet de récupérer les valeurs.  -> A utiliser aussi pour les champs SELECT multiples.

Transmission de fichiers <FORM ACTION=" METHOD=POST" ENCTYPE= "multipart/form-data"> Titre : Affiche : Votre choix

Transmission de fichiers zLe fichier est transmis sur le serveur avec quelques variables qui le décrivent: <?php echo "Pour le film $titre j'ai recu le fichier suivant : \n"; echo " Nom du fichier client : $affiche_name \n"; echo " Nom du fichier sur le serveur : $affiche \n"; echo " Taille du fichier : $affiche_size \n"; echo " Type du fichier : $affiche_type \n"; // Copie du fichier temporaire copy($affiche, "./MonAffiche"); ?>

Autres variables utiles zInfos. sur le client : y$REMOTE_HOST : nom de la machine client y$REMOTE_ADDR : adresse IP de la machine client y$REMOTE_USER : nom du client après identification y$HTTP_ACCEPT : liste des types MIME acceptés par le client y$HTTP_USER_AGENT : nom du navigateur

Application : production de code HTML

Intégration avec HTML zQuestion : vaut-il mieux mettre du PHP dans du HTML ou l'inverse ? yPour HTML : on génère le site avec un bon éditeur, et on met un peu de PHP dedans xMais... le code est ILLISIBLE yPour PHP : on programme des utilitaires pour produire du HTML xLe code est lisible... pour les informaticiens.

Fonctions produisant du code // Fonctions produisant des conteneurs HTML function Ancre ($url, $libelle, $classe="") { return " $libelle \n"; } function Image ($fichier, $largeur=-1, $hauteur=-1, $bordure=0) { if ($largeur != -1) $attrLargeur = " WIDTH = '$largeur %' "; if ($hauteur != -1) $attrHauteur = " HEIGHT = '$hauteur %' "; return "<IMG SRC='$fichier'". $attrLargeur. $attrHauteur. " BORDER='$bordure'>\n"; }

Exemple zFaire un lien sur une image : <?php echo Ancre( Image( maison.gif )); ?> zProduit :

Création de module zUn module = un ensemble de fonctions prenant en charge une partie de l'application zExemple: module de production de tableaux: yTblDebut -> produit la balise yTblFin -> produit la balise yTblLigne, TblCellule -> pour écrire la table

Module Table : fonction TblDebut function TblDebut ($pBordure = '1', // La bordure $pLargeur = '', $pEspCell = '2', // CELLSPACING $pRemplCell = '4', // CELLPADDING $classe = "") { echo "<TABLE BORDER='$pBordure' ". "CELLSPACING='$pEspCell' ". "CELLPADDING='$pRemplCell' WIDTH='$pLargeur' ". "CLASS ='$classe'>\n"; } // Fin de la fonction

Lignes et cellules function TblDebutLigne ($classe="") { echo " \n"; } function TblCellule ($contenu, $nbLig=1, $nbCol=1, $classe="") { echo "<TD ROWSPAN='$nbLig' ". "COLSPAN='$nbCol' CLASS='$classe'>". "$contenu \n"; }

Fonction affichant un en- tête : module Design.php require ("Table.php"); require ("HTML.php"); function Entete ($titre, $texte, $menu, $style) { echo " $titre \n"; echo " \n"; TblDebut (0, 100); TblDebutLigne (); TblCellule (Image ('/icons/cnam60.gif')); TblCellule (" $texte ", 1, 1, "TITRE"); TblFinLigne(); TblFin (); TblDebut (0, 100); TblDebutLigne (); while ( list ($libelle, $ancre) = each ($menu)) TblCellule (Ancre ($ancre, $libelle, "MENU")); TblFin(); TblFin(); }

Au début de chaque page... <?php require("Design.php"); $titre = "Commerce Electronique"; $menu = array ("Accueil" => "index.php", "Documentation" => "Documentation.php", "Cours" => "Cours.php", "Travaux dirigés" => "TD.php", "Forum" => "Forum.php", "Liens" => "Liens.php"); $style = "/CSS/uv.css"; Entete ($titre, "Commerce électronique", $menu, $style); ?> Bienvenue sur le site de l'U.V. "Commerce électronique" !

zEt la programmation objet ? yNotion de classes en Php yRassembler en un objet formulaire toutes les informations necessaires zDe nombreux exemples sur le site

Les cookies zLe serveur demande au navigateur de stocker une variable ayant un nom et une valeur, pour une durée déterminée. yMonServeur dit à MonNavi : « stocke la variable 'MaVariable' avec la valeur '100' pendant 2 jours » zLe navigateur transmet ensuite systématiquement la variable au serveur qui l'a créée yMonNavi transmet à MonServeur la variable sous la forme MaVariable=100

Cookies et sessions web zLes cookies sont essentiels pour établir une continuité dans le dialogue client/serveur yQuand un client se connecte la première fois: le serveur lui associe un identifiant de session yLe serveur transmet cet identifiant au client sous la forme d'un cookie yOn conserve un historique des actions du client, associé à l'identifiant de session yQuand le client se connecte à nouveau: on sait l'identifier grace au cookie.

Gestion de session avec cookie Client Serveur Première connexion Création d'une session Infos. session id=100 Création du cookie Envoi du cookie id=100 On sait de qui il s'agit Envoi du cookie Client Validité

Fonctions Php pour sessions zsession_start() : yidentifie ou crée la session ysi existe déjà, recrée toutes les variables Php associées ydoit être appelé au début du script Php zsession_destroy() ydétruit les information associée à la session

Fonctions Php pour sessions zsession_id() yrenvoie l identifiant de la session zsession_register(nomVar) yassocie une variable Php à la session y-> cette variable sera retrouvée à chaque session

Fonctions Php pour sessions zsession_unregister(nomVar) : ysupprime une variable de la session zsession_is_registered(nomVar) ytest l existence d une variable

Exemple (1/2) : doc.php <?php Session_start(); $derniereVisite=date(h:i:s); session_register(toto); ?> Une visite de cette page ->mémorisation de $toto dans le navigateur

Exemple (2/2) : truc.php <?php session_start(); if (session_is_registered(toto)) echo ha ha ! Vous avez visite la page doc.php le $toto ; else echo premiere visite ; ?>

Conclusion zPHP : ylangage puissant, très bien intégré à HTML yde très nombreuses fonctions ygratuit zPermet : yla gestion des formulaires yla gestion des utilisateurs du site (session) yet prochainement…bases de données !