Apprendre à développer un site web



Documents pareils
PHP 5.4 Développez un site web dynamique et interactif

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

Devenez un véritable développeur web en 3 mois!

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

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Programmation Web. Madalina Croitoru IUT Montpellier

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Sommaire. 1 Introduction Présentation du logiciel de commerce électronique 23

PHP 5. La base de données MySql. A. Belaïd 1

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

les techniques d'extraction, les formulaires et intégration dans un site WEB

Stockage du fichier dans une table mysql:

TP JAVASCRIPT OMI4 TP5 SRC

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

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

MANUEL WORDPRESS. Objectif: Refonte d un site web sous Wordpress I PRE-REQUIS: 1 / Créer un backup (sauvegarde) du site:

OUAPI Guide d installation Outil d administration de parc informatique. Documentation d installation et de paramétrage

1 Introduction et installation

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

GLPI (Gestion Libre. 2 ième édition. Nouvelle édition. de Parc Informatique)

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


Construction d un Site Internet Dynamique avec Joomla René-Yves Hervé, Ph.D.

Formation : WEbMaster

Mysql avec EasyPhp. 1 er mars 2006

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

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

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Introduction : présentation de la Business Intelligence

CREATION WEB DYNAMIQUE

Manuel du composant CKForms Version 1.3.2

Remote Cookies Stealing SIWAR JENHANI (RT4) SOUHIR FARES (RT4)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Programmer en JAVA. par Tama

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Guide d installation de Gael

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

1 Position du problème

Hébergement de site web Damien Nouvel

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

RÉALISATION D UN SITE DE RENCONTRE

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

TP 1. Prise en main du langage Python

Notions fondamentales du langage C# Version 1.0

Formulaire pour envoyer un mail

CATALOGUE DES FORMATIONS 2014

Utilisation d objets : String et ArrayList

Bureautique Initiation Excel-Powerpoint

Intranet d'établissement avec Eva-web Installation configuration sur serveur 2000 ou 2003 Document pour les administrateurs

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Créer un site e-commerce avec Dreamweaver CS4 et PHP/MySQL

Installation locale de JOOMLA SEPIA

A.-M. Cubat Mise à jour de PMB Passer à une version plus récente du logiciel Page 1 Source :

Sage CRM. 7.2 Guide de Portail Client

LISTES DE DISTRIBUTION GÉRÉES PAR SYMPA DOCUMENT EXPLICATIF DE L'INTERFACE WEB À L'INTENTION DES ABONNÉS

Installation / Sauvegarde Restauration / Mise à jour

Présentation du PL/SQL

Diffuser un contenu sur Internet : notions de base... 13

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

I. MySQL : Serveur et SGBD

Réussir. son site e-commerce. avecoscommerce

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

PHP. PHP et bases de données

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

Utiliser un tableau de données

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

SUGARCRM Sugar Open Source Guide d Installation de French SugarCRM Open Source Version 4.2

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

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

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

ISPConfig Documentation

ECLIPSE ET PDT (Php development tools)

PHP 4 PARTIE : BASE DE DONNEES

Programmation C++ (débutant)/instructions for, while et do...while

Université Ibn Zohr Excel Résume de cours

CREG : versailles.fr/spip.php?article803

Chapitre 2 Devine mon nombre!

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

Rapport de Stage Christopher Chedeau 2 au 26 Juin 2009

Formation en Logiciels Libres. Fiche d inscription

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

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

Application web de gestion de comptes en banques

Compte Rendu d intégration d application

COURS WINDEV NUMERO 3

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Transcription:

Ce livre s adresse à un public de développeurs débutants connaissant déjà le HTML et les CSS et qui souhaitent bien comprendre le fonctionnement d une application web pour créer leurs propres sites web dynamiques avec PHP et MySQL. Dans une première partie, le lecteur installera son environnement de développement EasyPHP puis découvrira les bases du langage PHP (en version 7 au moment de l écriture), ses principales fonctions et structures de contrôles, ainsi que des explications sur la transmission des données entre les pages et sur la librairie graphique (les effets spéciaux sur une image). Ces apports théoriques sont accompagnés de nombreux exemples. Il en est de même dans la deuxième partie du livre, consacrée au langage SQL. Le lecteur découvrira ce qu est une base de données MySQL et les différentes méthodes pour y accéder avec PHP (PDO, SQL Avancé) et comment assurer la sécurité de la base. Un chapitre est également consacré aux premiers pas sur la Programmation Orientée Objet et un autre à la gestion de la configuration et des performances. Pour que le lecteur puisse se forger une première expérience significative, l auteur a préparé de nombreux exercices à la fin de chaque chapitre (exemples : comme créer un blog, une newsletter, un site de gestion...) et propose aussi leurs corrigés. Téléchargement Des www.editions-eni.fr éléments.frcomplémentaires sont en téléchargement sur le site www.editions-eni.fr. Olivier ROLLET Titulaire d un diplôme d ingénieur maître en Génie électrique et Informatique Industrielle, Olivier ROLLET a travaillé comme développeur sur de nombreux projets de sites web pendant 12 ans. Aujourd hui formateur dans le domaine du développement autour des nouvelles technologies web, il connaît parfaitement les attentes des lecteurs néophytes et leur fournit un livre très opérationnel pour se lancer dans la création de sites web dynamiques. Les chapitres du livre Introduction Utilisation d EasyPHP Les bases du langage PHP Les fonctions et structures de contrôle Transmettre des données d une page à l autre Les effets spéciaux sur une image Base de données MySQL L objet Configuration Sécurité Cas pratiques et corrigés 29,90 Pour plus d informations : ISBN : 978-2-7460-9826-8 sur www.editions-eni.fr : b Code source des exercices b Scripts SQL b Fichiers de configuration avec PHP et MySQL avec PHP et MySQL Apprendre à développer un site web avec PHP et MySQL Exercices pratiques et corrigés 3 édition ième Nouvelle édition Olivier ROLLET

Table des matières 1 Les éléments à télécharger sont disponibles à l'adresse suivante : http://www.editions-eni.fr Saisissez la référence ENI de l'ouvrage RI3PHMY dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement. Chapitre 1 Introduction 1. Objectif de l'ouvrage....................................... 15 2. Fonctionnement d un site web.............................. 16 Chapitre 2 Utilisation d EasyPHP 1. Introduction............................................. 19 2. Installation d'easyphp..................................... 20 3. Prise en main d EasyPHP................................... 20 4. Création d une première page PHP........................... 22 Chapitre 3 Les bases du langage PHP 1. Les balises............................................... 25 1.1 Syntaxe de base....................................... 25 1.2 Insertion des balises PHP dans du code XHTML............ 26 1.3 Envoi des données au serveur web....................... 28 1.4 Insertion de code XHTML avec l'instruction echo........... 30 1.5 Les commentaires..................................... 31 2. Les variables............................................. 31 2.1 Affectation.......................................... 31 2.2 Les types de variables.................................. 32 2.3 Particularité du type string............................. 33 2.4 La concaténation...................................... 34

2 PHP et MySQL 2.5 Le transtypage........................................ 36 2.6 Les variables dynamiques............................... 37 3. Les constantes............................................ 38 Chapitre 4 Les fonctions et structures de contrôle 1. Les conditions............................................ 41 1.1 if................................................... 41 1.2 switch.............................................. 46 2. Les boucles.............................................. 49 2.1 for................................................. 49 2.2 While............................................... 50 2.3 do while............................................. 52 2.4 foreach.............................................. 52 3. Les tableaux.............................................. 53 3.1 Tableaux numériques.................................. 53 3.2 Tableaux associatifs................................... 55 3.3 Constantes de type tableau............................. 56 3.4 Parcours d'un tableau.................................. 57 3.4.1 La boucle for.................................... 57 3.4.2 La boucle foreach................................ 58 3.4.3 La fonction print_r.............................. 60 3.5 Fonctions sur les tableaux.............................. 61 3.5.1 Longueur d'un tableau............................ 61 3.5.2 Existence d'une valeur dans un tableau.............. 61 3.5.3 Existence d'une clé dans un tableau................. 63 3.5.4 Tri d'un tableau................................. 64 3.5.5 Recherche dans un tableau........................ 67 3.5.6 Découper une chaîne dans un tableau............... 68 3.5.7 Regrouper les valeurs d'un tableau dans une chaîne.... 69 3.5.8 Découper une chaîne en morceaux de longueur fixe.... 70

Table des matières 3 3.5.9 Ajouter des éléments à la fin du tableau............. 71 3.5.10 Suppression d'un élément à la fin du tableau......... 72 3.5.11 Sélection aléatoire d un élément du tableau.......... 73 3.6 Tableaux à plusieurs dimensions......................... 74 3.7 Exercices sur les tableaux............................... 76 3.7.1 Énoncés....................................... 76 3.7.2 Corrigés....................................... 77 4. Traitement de chaînes de caractères.......................... 80 4.1 Les fonctions de manipulation de chaîne.................. 80 4.1.1 strlen()........................................ 80 4.1.2 substr()........................................ 81 4.1.3 strstr()......................................... 82 4.1.4 str_replace().................................... 83 4.1.5 trim()......................................... 84 4.1.6 strtolower().................................... 85 4.1.7 strtoupper().................................... 86 4.1.8 strpos()........................................ 86 4.1.9 str_word_count()................................ 87 4.1.10 str_pad()....................................... 89 4.2 Les expressions régulières............................... 90 4.2.1 Insensibilité à la casse............................ 92 4.2.2 Recherche d'un mot et non d une chaîne............. 92 4.2.3 Recherches de chaînes avec OU.................... 94 4.2.4 Début de chaîne................................. 95 4.2.5 Fin de chaîne................................... 95 4.2.6 Un caractère dans une classe....................... 96 4.2.7 Une plage de caractères dans une classe.............. 97 4.2.8 La non-présence d'une plage de caractères dans une classe.................................. 98 4.2.9 Les quantificateurs.............................. 99 4.2.10 Les intervalles de reconnaissance.................. 100

4 PHP et MySQL 5. Les opérateurs........................................... 102 5.1 Les opérateurs de chaîne............................... 102 5.1.1 La concaténation............................... 102 5.1.2 L'assignation................................... 103 5.2 Les opérateurs arithmétiques........................... 104 5.2.1 L'addition..................................... 104 5.2.2 La soustraction................................. 104 5.2.3 La multiplication............................... 105 5.2.4 La division.................................... 105 5.2.5 Le modulo.................................... 106 5.2.6 L'incrémentation............................... 107 5.2.7 La décrémentation.............................. 108 5.2.8 L exponentiation............................... 108 5.3 Les opérateurs de comparaison......................... 109 5.3.1 L'égalité....................................... 109 5.3.2 La différence................................... 110 5.3.3 La comparaison................................ 111 5.3.4 L opérateur à trois issues......................... 112 5.4 L'opérateur ternaire.................................. 113 5.5 Les opérateurs logiques................................ 114 5.5.1 ET........................................... 114 5.5.2 OU.......................................... 114 6. Les fonctions............................................ 117 6.1 Création........................................... 117 6.2 Retour du type des déclarations........................ 120 6.3 Portée des variables................................... 121 6.4 Les variables globales................................. 123 6.5 Les variables statiques................................ 124 6.6 Fonctions utiles...................................... 125 6.7 Passage par référence................................. 127 6.8 Fonctions sur la gestion de fonction..................... 128 6.9 Fonctions variables via l opérateur....................... 131 6.10 Décompression des arguments via l opérateur.............. 131

Table des matières 5 6.11 Fonction anonyme................................... 132 6.12 Fonction générateur.................................. 134 6.13 Récursivité.......................................... 136 6.14 Fonctions prédéfinies dans PHP......................... 138 6.14.1 Générer un nombre aléatoire..................... 138 6.14.2 Arrondir un nombre décimal..................... 139 6.14.3 Récupérer la valeur absolue d'un nombre............ 140 6.14.4 Créer un identifiant unique...................... 140 6.14.5 Afficher les informations sur PHP................. 141 6.14.6 Envoyer un e-mail.............................. 142 6.15 Stocker une fonction dans une variable.................. 144 6.16 Exercices sur les fonctions............................. 145 6.16.1 Énoncés...................................... 145 6.16.2 Solutions..................................... 146 7. Les dates............................................... 149 8. Les fichiers.............................................. 158 8.1 Introduction........................................ 158 8.2 Lecture rapide....................................... 158 8.3 Écriture rapide....................................... 160 8.4 Ouverture et fermeture d un fichier..................... 160 8.5 Lecture et écriture.................................... 161 8.6 Accès concurrent..................................... 168 8.7 Manipulation de fichiers.............................. 169 8.8 Manipulation de répertoires............................ 172 9. Les includes............................................. 178 10. Exercices sur les fichiers................................... 180 10.1 Énoncés............................................ 180 10.2 Corrigés............................................ 180

6 PHP et MySQL Chapitre 5 Transmettre des données d'une page à l'autre 1. Les variables superglobales................................. 183 1.1 $GLOBALS......................................... 183 1.2 $_SERVER.......................................... 184 1.3 $_ENV............................................. 188 1.4 $_SESSION......................................... 190 1.5 $_COOKIE......................................... 192 1.6 $_FILES............................................ 195 2. La méthode GET......................................... 198 2.1 Utilisation de la méthode GET......................... 198 2.2 Test de la présence de la variable dans l'url.............. 200 2.3 Test de la valeur de la variable dans l'url................ 202 2.4 Informations complémentaires......................... 204 2.4.1 Paramètres avec le même nom.................... 204 2.4.2 Paramètres de type tableau....................... 204 2.4.3 Paramètres avec des caractères spéciaux............ 205 3. La méthode POST........................................ 208 3.1 Utilisation de la méthode POST........................ 208 3.2 Les différents éléments du formulaire.................... 210 3.2.1 Zone de type texte.............................. 210 3.2.2 Zone de type mot de passe....................... 212 3.2.3 Grande zone de texte........................... 213 3.2.4 Liste déroulante à choix unique................... 214 3.2.5 Liste déroulante à choix multiples................. 215 3.2.6 Cases à cocher................................. 217 3.2.7 Boutons radio.................................. 219 3.2.8 Champs cachés................................ 220 3.2.9 Bouton de type submit.......................... 221 3.2.10 Bouton de type reset............................ 224 3.2.11 Formulaire complet............................. 225 4. La méthode $_REQUEST.................................. 227

Table des matières 7 5. Zones portant le même nom............................... 230 6. Plusieurs formulaires dans la même page..................... 230 7. Contrôle des données et redirection de pages.................. 231 7.1 Introduction........................................ 231 7.2 Données obligatoires................................. 231 7.3 Suppression des espaces indésirables..................... 232 7.4 Longueur maximale.................................. 232 7.5 Caractères autorisés.................................. 233 7.6 Magic quotes........................................ 234 7.7 Redirection de page.................................. 236 8. Exercices............................................... 237 8.1 Énoncés............................................ 237 8.2 Solutions........................................... 239 Chapitre 6 Les effets spéciaux sur une image 1. La librairie GD........................................... 245 2. Création d'une image..................................... 245 2.1 Le header........................................... 245 2.2 Création d'une image vide............................. 246 2.3 Création et affichage d'une image complète............... 246 3. Texte et couleur......................................... 248 3.1 La couleur.......................................... 248 3.2 Le texte............................................ 249 3.3 La transparence...................................... 250 4. Redimensionnement d une image........................... 251 5. Superposition d images................................... 252 6. Les formes.............................................. 255

8 PHP et MySQL 7. Différents exemples...................................... 257 7.1 Exemple 1.......................................... 257 7.2 Exemple 2.......................................... 259 Chapitre 7 Base de données MySQL 1. Présentation............................................ 261 1.1 Introduction........................................ 261 1.2 Structure........................................... 262 2. phpmyadmin........................................... 263 3. Le langage SQL.......................................... 276 3.1 Présentation........................................ 276 3.2 Lire des données..................................... 277 3.3 Écrire des données.................................... 278 3.4 Filtrer des données................................... 282 3.5 Les alias............................................ 284 3.6 Tri des données...................................... 285 3.7 Supprimer des données............................... 286 3.8 Modifier des données................................. 287 3.9 Les jointures........................................ 289 3.10 Le regroupement..................................... 293 4. SQL avancé............................................. 296 4.1 Les fonctions et instructions SQL....................... 296 4.1.1 Limiter des données............................. 296 4.1.2 Valeurs distinctes.............................. 297 4.1.3 Convertir en majuscules......................... 298 4.1.4 Convertir en minuscules......................... 299 4.1.5 Arrondir un nombre décimal..................... 300 4.1.6 Valeur absolue d'un nombre décimal............... 300 4.1.7 Nombre aléatoire............................... 300 4.1.8 Longueur d'un champ........................... 301

Table des matières 9 4.1.9 Supprimer les espaces d'un champ................. 301 4.1.10 Extraire une sous-chaîne d'un champ............... 302 4.1.11 Concaténer plusieurs champs..................... 302 4.1.12 Position d'une chaîne de caractères dans un champ... 303 4.1.13 Ajout d'une séquence de caractères................ 304 4.1.14 Remplacement d'une chaîne de caractères........... 304 4.1.15 Tester la valeur d'un champ...................... 305 4.1.16 Affichage de la date courante..................... 306 4.1.17 Extraire la date d'un champ date et heure........... 307 4.1.18 Différence entre deux dates...................... 307 4.1.19 Ajout d'un intervalle de temps à une date........... 308 4.1.20 Ajout d'un intervalle de temps à une heure.......... 309 4.1.21 Soustraction d'un intervalle de temps à une date..... 310 4.1.22 Soustraction d'un intervalle de temps à une heure.... 310 4.1.23 Unir deux requêtes............................. 311 4.2 Les fonctions de chiffrement et de compression........... 312 4.3 La commande SHOW................................. 314 4.4 Les expressions rationnelles............................ 315 4.5 Les sous-requêtes.................................... 316 4.6 Les procédures stockées et les fonctions.................. 321 4.7 Les autres objets de MySQL............................ 327 4.7.1 Les tables..................................... 327 4.7.2 Les index...................................... 328 4.7.3 Les vues...................................... 329 4.7.4 Les déclencheurs............................... 330 5. Exercices SQL........................................... 332 5.1 Énoncés............................................ 334 5.2 Corrigés............................................ 337 6. L'accès aux bases de données avec PHP....................... 338 6.1 Introduction........................................ 338 6.2 Connexion.......................................... 339 6.3 Déconnexion........................................ 341 6.4 Requêtes non préparées............................... 341

10 PHP et MySQL 6.4.1 Lire des données................................ 341 6.4.2 Écrire des données.............................. 347 6.4.3 Supprimer des données.......................... 349 6.4.4 Mettre à jour des données........................ 350 6.5 Requêtes préparées................................... 351 6.5.1 Introduction................................... 351 6.5.2 Lire des données................................ 352 6.5.3 Écrire des données.............................. 355 6.5.4 Modifier des données........................... 356 6.5.5 Supprimer des données.......................... 358 6.5.6 Stocker un résultat............................. 359 6.5.7 Afficher les erreurs d'une requête préparée.......... 361 7. PDO................................................... 362 7.1 Introduction........................................ 362 7.2 Connexion.......................................... 363 7.3 Requêtes non préparées............................... 366 7.3.1 Lire des données................................ 366 7.3.2 Écrire des données.............................. 368 7.3.3 Supprimer des données.......................... 370 7.3.4 Mettre à jour des données........................ 371 7.4 Requêtes préparées................................... 372 7.4.1 Lire des données................................ 372 7.4.2 Écrire des données.............................. 374 7.4.3 Supprimer des données.......................... 376 7.4.4 Modifier des données........................... 377 7.4.5 Appeler une procédure stockée.................... 378 8. Exercices............................................... 380 8.1 Énoncés............................................ 380 8.2 Corrigés............................................ 382

Table des matières 11 Chapitre 8 L objet 1. Introduction............................................ 391 2. Les classes.............................................. 392 2.1 Introduction........................................ 392 2.2 L'encapsulation...................................... 393 2.3 Visibilité des attributs et des méthodes.................. 393 2.4 Ajout d'une méthode dans une classe.................... 394 2.5 Utilisation d une classe............................... 395 2.6 Mettre à jour et lire les attributs de l'instance............. 396 2.7 Passage en paramètre de type objet...................... 399 2.8 Le constructeur...................................... 402 2.9 Le destructeur....................................... 404 2.10 Exercice............................................ 405 2.11 Les constantes de classe............................... 406 2.12 Les attributs et méthodes statiques...................... 409 2.12.1 Méthode statique............................... 409 2.12.2 Attribut statique............................... 412 2.13 Les exceptions....................................... 414 3. L'héritage............................................... 416 3.1 Introduction........................................ 416 3.2 Protected........................................... 420 3.3 Substitution........................................ 422 3.4 Héritage en cascade.................................. 424 4. Les classes abstraites...................................... 425 5. Les interfaces............................................ 428 6. Les classes finales........................................ 430 7. Les méthodes magiques................................... 431 8. Les traits............................................... 439 9. Uniform Variable Syntax.................................. 440 10. Les espaces de noms...................................... 441

12 PHP et MySQL 11. Exercices............................................... 445 11.1 Énoncés............................................ 445 11.2 Corrigés............................................ 450 Chapitre 9 Configuration 1. Fichier de configuration PHP : php.ini....................... 471 2. Fichier de configuration MySQL : my.ini..................... 473 3. Fichier de configuration Apache : httpd.conf.................. 474 Chapitre 10 Sécurité 1. Failles XSS.............................................. 477 1.1 XSS non permanent.................................. 477 1.2 XSS permanent...................................... 479 1.3 Page d'erreur........................................ 479 2. Droits sur la base de données............................... 480 3. Injection SQL (addslashes)................................. 482 4. Vérification de la session.................................. 484 5. Performances............................................ 485 5.1 PHP 7.............................................. 485 5.2 Utilisation d AST.................................... 486 5.3 Optimiser les performances en PHP..................... 487 5.4 Optimiser les performances en MySQL.................. 488

Table des matières 13 Chapitre 11 Cas pratiques et corrigés 1. Créer un blog (procédural)................................. 489 2. Créer un blog (objet)..................................... 494 3. Créer une newsletter..................................... 502 4. Créer un flux RSS........................................ 503 5. Gestion d un parc informatique en MVC..................... 504 6. Créer un site de gestion d'élèves............................ 515 7. Génération d un RIB en fichier PDF......................... 535 8. Paiement par PayPal...................................... 541 Index.................................................. 555

41 Chapitre 4 Les fonctions et structures de contrôle 1. Les conditions Les fonctions et structures de contrôle 1.1 if Les instructions de type condition permettent d'exécuter du code si une condition est vraie. Par exemple, si le prénom est égal à Robert, afficher "Bienvenue" : $prenom = 'Robert'; //déclaration de la variable $prenom if ($prenom == 'Robert') //test de la variable $prenom echo 'Bienvenue';?> Ci-dessus, la valeur Robert est affectée à la variable $prenom puis cette variable est testée à l'aide de l'instruction if. La syntaxe est donc : if (condition) instruction

42 PHP et MySQL Notez que : "est égal à" se note ==. "est différent de" se note!=. "est inférieur à" se note <. "est supérieur à" se note >. "est inférieur ou égal à" se note <=. "est supérieur ou égal à" se note >=. L'instruction sinon se note else. Par exemple, si le prénom est égal à Robert, afficher "Bienvenue", sinon "A bientôt" : $prenom = 'Toto'; //déclaration de la variable $prenom if ($prenom == 'Robert') //test de la variable $prenom echo 'Bienvenue'; else echo 'A bientôt';?> Affiche : A bientôt En effet, le code teste si la variable $prenom est égale à Robert, puis comme ce n'est pas le cas, le code passe dans le else (sinon) et exécute echo "A bientôt";. Enfin la dernière instruction pour les conditions est else if appelée sinon si. Cela permet de tester d'autres conditions non testées par le if. Editions ENI - All rights reserved

Les fonctions et structures de contrôle Chapitre 4 43 Par exemple, si le prénom est égal à Robert, afficher "Bienvenue", sinon s il est égal à Toto, afficher "Bonjour", sinon "A bientôt" : $prenom = 'Toto'; //déclaration de la variable $prenom if ($prenom == 'Robert') //test de la variable $prenom echo 'Bienvenue'; else if ($prenom == 'Toto') //test de la variable $prenom echo 'Bonjour'; else echo 'A bientôt';?> Affiche : Le code teste si $prenom est égal à Robert puis si $prenom est égal à Toto. Et comme $prenom est effectivement égal à Toto, le code exécute echo "Bonjour";. Il est possible d'ajouter autant d'instructions else if que vous voulez. Si la condition ($prenom == "Robert") est vérifiée, les autres conditions dans les else if ne sont même pas vérifiées, donc si vous passez dans le if, vous êtes sûr de ne jamais passer dans le ou les else if ainsi que dans le else. À l'inverse, si vous écrivez : Bonjour $prenom = 'Robert'; //déclaration de la variable $prenom if ($prenom == 'Robert') //test de la variable $prenom

44 PHP et MySQL echo 'Bienvenue'; if ($prenom == 'Toto') //test de la variable $prenom echo 'Bonjour'; else echo 'A bientôt';?> Le code teste si $prenom est égal à Robert puis si $prenom est égal à Toto et comme $prenom est initialisé avec la valeur Robert, ce code affiche "Bienvenue" et "A bientôt". Vous pouvez aussi imbriquer les if les uns à l'intérieur des autres autant de fois que vous le souhaitez. Par exemple : $age = 30; //déclaration de la variable $age if ($age > 20) //test de la variable $age if ($age == 30) //test de la variable $age echo 'Bienvenue'; else echo 'A bientôt';?> Affiche : Bienvenue Editions ENI - All rights reserved

Les fonctions et structures de contrôle Chapitre 4 45 Le programme teste si la variable $age est supérieure à 20 puis comme c'est le cas, le programme teste ensuite si $age est égal à 30 et exécute echo "Bienvenue";. Enfin, vous pouvez intercaler du code HTML entre les conditions en PHP. Par exemple : $prenom = 'Robert'; //déclaration de la variable $prenom if ($prenom == 'Robert') //test de la variable $prenom?> Bonjour <!--Code HTML--> else?> A bientôt <!--Code HTML-->?> est équivalent à : $prenom = 'Robert'; //déclaration de la variable $prenom if ($prenom == 'Robert') //test de la variable $prenom echo 'Bonjour'; else echo 'A bientôt';?>

46 PHP et MySQL 1.2 switch L'instruction switch est équivalente au if mais elle est utilisée par le développeur pour plus de clarté dans le code. Elle est équivalente au if si vous utilisez un break pour sortir du switch. Sinon toutes les instructions qui suivent le case dans lequel vous êtes entré seront exécutées. La syntaxe est : switch (condition) case expression: instruction case expression: instruction... $prenom = 'Robert'; //déclaration de la variable $prenom switch ($prenom) //test de la variable $prenom case 'Robert': echo 'Bonjour'; break; case 'Jean': echo 'A bientôt'; break;?> L'instruction break provoque la sortie du switch et donc si $prenom est égal à "Robert", le code exécutera echo "Bonjour"; puis break et sortira du switch sans même tester "Jean". Cela équivaut à utiliser l'instruction else if à la place de if : $prenom = 'Robert'; //déclaration de la variable $prenom if ($prenom == 'Robert') //test de la variable $prenom echo 'Bonjour'; Editions ENI - All rights reserved