WEB DYNAMIQUE AVEC PHP ET MYSQL - DÉVELOPPEMENT WEB DYNAMIQUE IVMAD 2018 1 - IVAN MADJAROV
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Modèle Client Serveur ■ Le modèle client serveur est tripartite, c.à.d. constitué en trois parties: 1. Le Client Web visualise le contenu des pages HTML, CSS et JavaScript importées du serveur Web 2. Le Serveur Web stocke l'intégralité des pages d'un site : HTML, PHP, JSP, ASP, CGI, JavaScript, CSS 3. Le Serveur d'application et de base de données stocke et traite la partie dynamique d'un site. Développement Web Dynamique IvMad 2018 2
PHP: Introduction ■ Le PHP permet de réaliser dynamiquement des sites à partir d'un Serveur Web. ■ HTML est un script de marquage statique et permet un dynamisme limité avec JavaScript. ■ PHP est disponible sur plusieurs plates-formes: Linux, Windows et Mac OS. ■ PHP est un langage de programmation orientée objet spécialisé dans la génération de code HTML. ■ PHP possède des outils pour manipuler des images, le traitement de fichiers, accès aux bases de données, etc. Développement Web Dynamique IvMad 2018 3
Histoire ■ Le langage fut créé en 1994 par Rasmus Lerdorf pour son site avec à l'origine une bibliothèque en Perl pour conserver une trace des visiteurs. ■ Par la suite la bibliothèque fut transformée en une implémentation du langage C, capable de communiquer avec les BD et de créer des applications dynamiques. ■ Ainsi en 1995 il rendit public son travail dans l'espace free et open source. PHP s'appelait alors PHP/FI (Personal Home Page Tools). ■ En 1997, deux étudiants, Andi Gutmans et Zeev Suraski, redéveloppèrent le cœur de PHP/FI. ■ Un an plus tard, le résultat donna le Zend Engine devenu alors PHP: Hypertext Preprocessor en version 3. ■ La version la plus rependue est PHP5, la dernière version disponible PHP7 fait objet de polémique. Développement Web Dynamique IvMad 2018 4
Fonctionnalités PHP ■ Fonctions mathématiques et expressions régulières ■ Gestion des fichiers et des répertoires ■ Gestion du temps, de calendriers ■ Gestion des formulaires HTML ■ Gestion de protocoles Internet (HTTP, FTP, SMTP) ■ Analyse des documents XML ■ Gestion des cookies, des sessions, des sockets ■ Authentification HTTP, manipulation des en-têtes HTTP ■ Accès non natif à des bases de données (MySQL, etc...) ■ Exécution de programmes externes et de shell ■ Encryptage, compression (gzip) ■ Création de documents PDF ■ Création et manipulation d'images GIF, JPEG et PNG Développement Web Dynamique IvMad 2018 5
Définition et règle ■ Le PHP est un langage interprété, écrit en C. ■ Le moteur d'interprétation lit un fichier source PHP, puis génère un flux de sortie en respectant les définitions et règles suivantes : – Un bloc PHP est un groupe continu de lignes, encadré par deux balises : ou – Toute ligne située à l'extérieur de ces balises n'est pas interprétée et est envoyée telle quelle dans le flux de sortie. – Toute ligne située à l'intérieur de ces balises est considérée comme une instruction PHP et est donc interprétée par le moteur. – Lorsqu'une erreur survient, un message est intégré dans le flux de sortie, et la génération du script est interrompue. Développement Web Dynamique IvMad 2018 6
Fonctionnement Développement Web Dynamique IvMad 2018 7
Premier programme ■ Le script PHP est réalisé avec un éditeur de texte (Notepad++ ou autre). Premier programme PHP ■ L'extension du fichier doit être .php afin d’être interprété par le moteur Zen installé côté serveur Web (Apache, IIS, ou autre). Développement Web Dynamique IvMad 2018 8
Premier programme ■ L'exécution du fichier ca_marche.php du côté serveur affiche le résultat suivant du côté client: Développement Web Dynamique IvMad 2018 9
Premier programme ■ Du côté client, la page contient uniquement du code HTML. ■ Les lignes PHP ont été converties: Un premier programme php ça marche ! Développement Web Dynamique IvMad 2018 10
Les variables ■ Comme tout langage interprété PHP ne contient pas de partie déclarative. Pour déclarer une variable, il suffit de l'initialiser et cela détermine le type de la variable. ■ Les variables sont toutes dotés du préfixe $ $ma_variable = 1; ■ Il existe 5 types de données : – Entier, (int, integer) – Décimal, (real, double, float) – Chaîne de caractères, (string) – Tableau, (array) – Objet (object) Développement Web Dynamique IvMad 2018 11
Portée des variables ■ Il existe trois niveaux de définition de variables : 1. Le niveau global. Il définit des variables dans l'intégralité du code d'une page PHP. 2. Le niveau local. Il définit des variables propres à une fonction, dont la durée de vie ne dépasse pas le temps de cette fonction. 3. Le niveau static. Il définit des variables propres à une fonction, qui persistent pendant l'intégralité du code de la page PHP. Développement Web Dynamique IvMad 2018 12
Tests : if... then... else ■ Test de base, si une condition est vrai alors on exécute des instructions sinon (facultatif) on en exécute d'autre. if ( condition1 ) { Action 1 } elseif ( condition2 ) { Action 2 } } else { Action 3 } Développement Web Dynamique IvMad 2018 13
Tests : if... then... else Exemple : Développement Web Dynamique IvMad 2018 14
Exemple Développement Web Dynamique IvMad 2018 15
Tests : switch... case... default ■ Le choix multiple est présenté par un 'switch'. La condition est associée à une variable, de plus l'instruction 'break' est primordiale à la fin de chaque bloc de conditions, sinon toutes les conditions seront vérifiées et exécutées. switch ($a) { case $b: echo "A est égal à B"; break; case >$b: echo "A est supérieur à B"; break; default: echo "A est inférieur à B"; break; } Développement Web Dynamique IvMad 2018 16
Boucles Boucle avec précondition while ( condition ) { Action; } Boucle avec post-condition do { Action; } while (condition); Boucle automatique for (expr1; expr2; expr3) { Action; } Développement Web Dynamique IvMad 2018 17
Boucles $i=1; while ($i
Break; Continue; ■ Break : Cette instruction permet de sortir de n'importe quelle boucle, à n'importe quel moment. ■ Continue : Cette instruction permet de ne pas exécuter le code contenu dans la boucle et de passer à l'itération suivante. for ($i=1; $i
Les tableaux ■ $tableau[0] = 1; // un tableau avec sa première valeur -> 1 ■ Pour un tableau à deux dimensions, il suffit de mettre un second indice au moment de l'affectation. exemple : ■ $tableau[0][0] = 1; // un tableau, et sa première valeur est 1 ■ Il n'est pas obligatoire de préciser l'indice pour affecter une valeur. exemple : ■ $tableau[] = 1; // équivaut à $tableau[0] = 1; ■ $tableau[] = 45; // équivaut à $tableau[1] = 45; ■ $tableau[] = 6; // équivaut à $tableau[2] = 6; ■ La déclaration et l’initialisation d'un tableau peuvent également se faire par l'intermédiaire de la fonction 'array()'. Cette fonction permet de préciser les indices ainsi que les valeurs du tableau (à l'aide de l'opérateur =>). Développement Web Dynamique IvMad 2018 20
Tableaux associatifs
Les tableaux ■ Un traitement classique des éléments d'un tableau avec parcours en boucle: Développement Web Dynamique IvMad 2018 22
Variables d'environnement ■ L'un des aspects fondamentaux d'une application construite sur une architecture de type client-serveur est l'utilisation des variables d'environnement du serveur, et notamment celles du serveur HTTP. ■ Avec PHP toutes les variables d'environnement du serveur sont automatiquement reprises dans les scripts PHP en tant que variables globales. Ainsi, il suffit de les utiliser directement dans le code. Développement Web Dynamique IvMad 2018 23
Variables d'environnement ■ Ces variables sont en fait une variable $_SERVER[] de type tableau contenant autant d'entrées qu'il y a de valeurs récupérées. ■ Exemple : /* IP du client et son navigateur */ Développement Web Dynamique IvMad 2018 24
Variables d'environnement Variables d'environnement p { font-family: sans-serif; color: blue; font-size: 10pt; font-style: italic; margin-left: 50px; margin-right: 50px; margin-top: 20px} Développement Web Dynamique IvMad 2018 25
Variables d’environnement Les variables sont accessibles en directe. ■ $SERVER_NAME : Le nom du serveur hôte qui exécute le script. Si le script est exécuté sur un hôte virtuel, ce sera la valeur définie pour cet hôte virtuel. ■ $PHP_SELF : Le nom du fichier du script en cour d'exécution, par rapport au document root. ■ $DOCUMENT_ROOT : La racine sous laquelle le script courant est exécuté, comme défini dans la configuration du serveur. ■ $REMOTE_ADDR : L'adresse IP du client. ■ $REMOTE_PORT : Le port utilisé par la machine cliente pour communiquer avec le serveur web. ■ $SCRIPT_FILENAME : Le chemin absolu jusqu'au script courant. ■ $SERVER_PORT : Le port de la machine serveur utilisé pour les communications. Par défaut, c'est '80'. En utilisant SSL, par exemple, il sera remplacé par le numéro de port HTTP sécurisé. ■ $REQUEST_URI : L'URI qui a été fourni pour accéder à cette page. Par exemple : '/index.html'. Développement Web Dynamique IvMad 2018 26
Variables du formulaire ■ Les variables sont issues des différents champs positionnés dans le formulaire. ■ La page qui reçoit ces variables est désignée par l'attribut ACTION de la balise . Nom : Développement Web Dynamique IvMad 2018 27
Variables de formulaires Affichage du nom Le nom de l'utilisateur est: Didier 28 Développement Web Dynamique IvMad 2018
Variables de formulaires ■ Les variables récupérées des méthodes GET et POST sont accessibles comme des éléments de tableaux associatifs : $HTTP_GET_VARS / $_GET $HTTP_POST_VARS / $_POST ■ Exemple avec la forme "nom"
Exemple de formulaire Nom Prénom Précisez votre sexe Homme Femme Ville de naissance Paris Marseille Lyon Développement Web Dynamique IvMad 2018 30
Exemple de formulaire Développement Web Dynamique IvMad 2018 31
Les checkbox Développement Web Dynamique IvMad 2018 32
Les checkbox en chaîne bleu blanc rouge Développement Web Dynamique IvMad 2018 33
Les Fonctions Exemple 1: function bonjour() { echo "Bonjour!"; } La fonction affichera 'bonjour' et ne retourne aucun résultat, on l’utilisera de la manière suivante : Bonjour() ; // affiche 'bonjour' à l’écran Exemple 2: function somme( $a, $b) { return $a + $b ; } La fonction retourne la somme de deux paramètres. Développement Web Dynamique IvMad 2018 34
Les Fonctions Un exemple complet La fonction est exécutée uniquement après son appel et passage des paramètres. Développement Web Dynamique IvMad 2018 35
Les Fonctions Passage par valeur ou par référence : Le passage des paramètres déjà présenté est le passage par valeur. Il existe aussi le passage par référence. On passe à la fonction la référence (adresse mémoire) d’une variable existante, et la fonction modifie directement en mémoire la valeur de cette variable. function bonjour(&$phrase) { $phrase= "bonjour Toto"; } $chaine = "Phrase qui va disparaître"; bonjour($chaine) ; echo $chaine ; // affiche 'bonjour Toto' Développement Web Dynamique IvMad 2018 36
Gestion de la date ■ Fonction Date et ses paramètres : echo date("d-m-Y"); // affiche : "03-03-2008" echo date("d/m/y"); // affiche : 02/03/09 echo date("Y"); // affiche : "2008" echo date("m/y"); // affiche : "03/08" echo date("H:i:s"); // affiche 10:16:18 echo date("F j, Y, g:i a"); // March 3, 2009, 10:16 pm Développement Web Dynamique IvMad 2018 37
Mathématique ■ Les fonctions mathématiques y sont toutes ! – Abs, cos, sin, tan, sqrt, exp, … – pi( ), … Développement Web Dynamique IvMad 2018 38
Chaînes de caractères ■ strpos(chaîne, sous_chaîne) : retourne la position de la première occurrence de la sous chaîne dans la chaîne. ■ strstr(chaîne, sous_chaîne) retourne la portion de la première occurrence de la sous chaîne. ■ foreach (nom tableau) : A chaque appel, cette fonction retourne la valeur suivante du tableau. ■ strlen (chaîne) : retourne la taille de la chaîne. ■ strtolower|strtoupper (chaîne) : retourne la chaîne passée en paramètres an minuscules (majuscules). ■ str_replace (car d’origine, car de destination, chaîne) : remplace le caractère d’origine par le caractère de destination dans la chaîne. ■ ereg(chaîne à chercher, chaîne) : retourne vrai si la chaîne à chercher (sous forme de chaîne ou sous forme d’expression régulière) est contenue dans chaîne. Développement Web Dynamique IvMad 2018 39
PHP et les Images ■ Formats supportés – JPG, GIF, PNG ■ Fonctionnalités – Récupération, – Création, – Modification, – Manipulation. Développement Web Dynamique IvMad 2018 40
Fonctions liées aux images ■ Avec la bibliothèque GD – id = getimagesize (nom de fichier) – id = imagecreate(largeur, hauteur) • GIF, JPG, PNG – imagedestroy(identifiant image) – imagefill (image, x, y, couleur) – imagechar($image, police, x, y, "txt", couleur) – imagecharup ... Développement Web Dynamique IvMad 2018 41
Mail ■ Envoyer un mail directement, sans appeler un gestionnaire/serveur de courrier. ■ La fonction mail (ou email) paramètres: qLe destinataire, qL’objet du message, qLe corps du message. < ? Mail("dupont@mondomaine.fr", "Objet du mail", "Le corps de message") ; ?> ■ Pratique pour réponses automatiques d'un serveur Web Développement Web Dynamique IvMad 2018 42
Gestion des fichiers La fonction fopen() permet d'ouvrir un fichier avec un mode d'accès : Int = fopen(chaine nomdufichier, chaine mode); Différents modes d'accès : ■ r : ouverture en lecture seulement ■ w : ouverture en écriture seulement (la fonction crée le fichier s'il n'existe pas) ■ a : ouverture en écriture seulement avec ajout du contenu à la fin du fichier et le crée s'il n'existe pas ■ r+ : ouverture en lecture et écriture ■ w+ : ouverture en lecture et écriture (la fonction crée le fichier s'il n'existe pas) ■ a+ : ouverture en lecture et écriture avec ajout du contenu à la fin du fichier et le crée s'il n'existe pas. Développement Web Dynamique IvMad 2018 43
Gestion des fichiers Exemples : // lecture $fp = fopen("../fichier.txt", "r"); // écriture depuis début du fichier $fp = fopen("ftp://iut.univ.fr/pub/fichier.txt","w"); // écriture depuis fin du fichier $fp = fopen(http://www.nexen.com/fichier.txt,"a"); Remarque: $fp contient l'adresse du buffer d'Entrée/Sortie Développement Web Dynamique IvMad 2018 44
Lecture dans un fichier $monfichier = fopen("monfichier.txt","r") ; if ( !($monfichier) ) { print("Impossible d’ouvrir le fichier") ; exit ; } while ( !feof($monfichier) ) { $ligne = fgets($monfichier, 255); // 255 caractères max. ou bien fin de ligne. print " $ligne "; } fclose ($monfichier) ; Développement Web Dynamique IvMad 2018 45
Écriture dans un fichier Développement Web Dynamique IvMad 2018 46
Exemple de script ■ Réaliser un compteur dans un fichier texte. Développement Web Dynamique IvMad 2018 47
Fonction Explode ■ Il est fréquent d’avoir des fichiers contenant différents champs séparés par un délimiteur quelconque. ■ Une fonction très utile dans ces cas là: explode ("caractère délimiteur", chaîne de donnée) Roose | Philippe | 27 Goudin | David | 28 Développement Web Dynamique IvMad 2018 48
Fonction Explode Développement Web Dynamique IvMad 2018 49
Programmation OO ■ Déclaration de classe class Personne { // attributs, méthodes var $nom, $adresse; function Personne($nom, $adresse, $age) { $this->nom = $nom; $this->adresse = $adresse; } function toprint() { print $this->nom; } } ■ Instanciation $p = new Personne("Jacques","Aubagne"); ■ Référenciassions print $p->nom; $p->print(); Développement Web Dynamique IvMad 2018 50
Programmation OO ■ Héritage class Cadre extends Personne { var $poste, $salaire; function Cadre($nom, $adresse, $poste, $salaire) { $this->Person($nom, $adresse, $age); $this->poste = $poste; $this->salaire = $salaire; } function toprint() { print parent::toprint(); print $this->salaire; print $this->poste; } } Développement Web Dynamique IvMad 2018 51
Programmation OO ■ Exécution $p=new Personne("Jacques","Aubagne"); echo "la classe Personne"; print $p->nom; echo "la classe Cadre"; $c=new Cadre("Ivan", "Marseille", "MCF", "XXX"); $c->toprint(); Développement Web Dynamique IvMad 2018 52
MVC : Modèle-Vue-Contrôleur ■ Le principe MVC est de dissocier les données et la présentation en décomposant l'application en trois couches: – Modèle : pour décrire les actions, les traitements métiers de l'application (connexion aux données, algorithmique, vérification, sécurité…). – Vue : pour la partie restitution des données aux utilisateurs de l'application HTML, PDF, XML… – Contrôleur : interface la Vue et le Modèle. Développement Web Dynamique IvMad 2018 53
MVC : Modèle-Vue-Contrôleur ■ Architecture des dossiers – La mise en place d'une structure de dossier permet d'appréhender plus facilement l'implémentation du MVC. Développement Web Dynamique IvMad 2018 54
MVC : Modèle-Vue-Contrôleur ■ Contrôleur : – Le contrôleur reçoit les requêtes de l'utilisateur et fait l'intermédiaire entre le modèle et la vue pour répondre aux requêtes. ■ Modèle : – La partie métier de l'application. – La partie modèle contient les classes, les fonctions, les fichiers de paramètres, les scripts d'actions de l'application sans aucun élément visuel. ■ Vue : – La vue contient les composants gérant la présentation • fichiers HTML, fichiers textes, ou d'autres formats XML, PDF… – La vue représente un visuel et les données traitées par le modèle. Développement Web Dynamique IvMad 2018 55
Vous pouvez aussi lire