PHP/MYSQL. Web Dynamique. ENSG Septembre 2009

Documents pareils
Mysql avec EasyPhp. 1 er mars 2006

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

CREATION WEB DYNAMIQUE

PHP 4 PARTIE : BASE DE DONNEES

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)

PHP et les Bases de données - Généralités

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

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

TP JAVASCRIPT OMI4 TP5 SRC

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

Attaques applicatives

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Stockage du fichier dans une table mysql:

SYSTÈMES D INFORMATIONS

Programmation Internet Cours 4

Pratique et administration des systèmes

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

Programmation Web. Madalina Croitoru IUT Montpellier

Web statique : client-serveur. PHP/MySQL: Sites dynamiques Formulaires et bases de données. Discussion HTTP. Caractéristiques du HTTP

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

PDO : PHP Data Object 1/13

Démonstration de la mise en cache via HTML 5 sur iphone

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

HTML, CSS, JS et CGI. Elanore Elessar Dimar

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

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

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

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Système Normalisé de Gestion des Bibliothèques -SYNGEB : version Réseau-

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

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

Module BD et sites WEB

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

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

Extended communication server 4.1 : VoIP SIP service- Administration

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

Formulaires et Compteurs

ECLIPSE ET PDT (Php development tools)

Panel des technologies Web

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Installation de Concrete 5

Techniques de Programmation pour Internet

GUIDE D INSTALLATION DE L APPLICATION GECOL SUR

Formation : WEbMaster

Guide d implémentation. Réussir l intégration de Systempay

25 mars. Tutoriel sur Laravel. Préparé par : Lydiane Beaulne-Bélisle. Ceci est un tutorial qui montre comment débuter avec le Framework PHP Laravel.

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

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

Application web de gestion de comptes en banques

Open Source Job Scheduler

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

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

Mise en place d un serveur Proxy sous Ubuntu / Debian

Mise en oeuvre d un intranet à partir de logiciels Open Source avec intégration des certificats numériques et login unique

Bases de données relationnelles

Hébergement de site web Damien Nouvel

ESPACE COLLABORATIF SHAREPOINT

MODE OPERATOIRE CORIM PROGRESS / SECTION MEI. Exploitation Informatique

< Atelier 1 /> Démarrer une application web

PROJET 1 : BASE DE DONNÉES REPARTIES

Utiliser un CMS: Wordpress

Groupe Eyrolles, 2003, ISBN : X

Gestion d'un parc informatique avec OCS INVENTORY et GLPI

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

Installation / Sauvegarde Restauration / Mise à jour

Mysql. Les requêtes préparées Prepared statements

Sécurité des applications web. Daniel Boteanu

I. MySQL : Serveur et SGBD

Attaques de type. Brandon Petty

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

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

Olivier Mondet

Introduction à MATLAB R

Guide d installation CLX.PayMaker Office (3PC)

1. La plate-forme LAMP

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Notes pour l utilisation d Expression Web

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

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Gestion de stock pour un magasin

Formulaire pour envoyer un mail

Installation et configuration d OCS/GLPI sur un Serveur Debian

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

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

Optimiser pour les appareils mobiles

Vulnérabilités et sécurisation des applications Web

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

RÉALISATION D UN SITE DE RENCONTRE

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

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

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

Le langage C. Séance n 4

INSTALLATION NG V2.1 D OCS INVENTORY. Procédure d utilisation. Auteur : GALLEGO Cédric 23/10/2014 N version : v1

Guide d installation de SugarCRM Open Source version 4.5.1

Définition des Webservices Ordre de paiement par . Version 1.0

Transcription:

PHP/MYSQL Web Dynamique ENSG Septembre 2009

Ces 6 jours de formation Jour 1 : présentations, attentes, principes, HTML Jour 2 : HTML, CSS, PHP Jour 3 : formulaires, connexion à la base de données Jour 4 : Rappel PHP, sessions, cookies, extraction de données, affichage Jour 5 : Requêtes, Insertion de données Jour 6 : Sécurité, questions, retours sur la formation.

NOTRE EXEMPLE Application simple en PHP

Gestion de bibliothèque Enregistrement des ouvrages : titre, auteur, date de publication, catégorie Ajout de nouveau livres par des utilisateurs autorisés Recherche par catégorie, par titre, par auteur Accès par le web

Application web PHP : traitements MySQL : base de données contenant les informations sur les livres, utilisateurs, etc...

PHP Langage de script adapté au web

Où trouver tout ce que vous voulez savoir et tout ce que vous ne voulez pas savoir à propos de PHP?

http://www.php.net

AU REVOIR Bonne fin de journée!

IDE ET DEBUGGER Eclipse et XDebug

IDE : eclipse + PDT Se simplifier la vie

IDE : eclipse + PDT Auto-complétion ctrl+espace Vérification de la syntaxe à la volée Ajout automatique de commentaires de documentation : /** + retour chariot devant une déclaration de fonction ou sur un en-tête de fichier Intégration avec XDebug (point d arrêts, lancement)

DEBUGGER ET PHP XDebug

XDebug : debugger de PHP PHP : langage de script Debu!er non prévu à l origine comme en C/C++/ java/.net Debu!er : Points d arrêts, Pas à pas, Exploration des variables

Configurer XAMPP sans installation Récupérer et décompresser le.zip dans un répertoire adéquat (pas le bureau) Lancer setup_xampp.bat Aux questions, voyons les réponses ensemble

Configuration de XDebug Utiliser XAMPP : XDebug est installé mais pas activé ouvrir <XAMPP>/php/php.ini avec un éditeur texte Décommenter les lignes de configuration de la section [XDebug] Décommenter la ligne zend_extension =..php_xdebug.dll Relancer apache via XAMPP

Nouveau projet Eclipse Ouvrir eclipse Choisir <XAMPP>/htdocs/eclipse (créer le dossier) comme workspace Créer un projet PHP : Clic droit dans la liste des projets : New > PHP Project Clic droit sur le dossier : New > PHP File > index.php Écrire : <?php phpinfo(); et sauvegarder Configurer le debu!er : Clic droit sur le projet > debug as Choisir XDebug, Nouveau serveur Web : Donner un nom, URL : http://localhost/eclipse/ Cliquer sur Debug pour tester : le navigateur doit s ouvrir sur une page non vide

LANGAGE PHP Introduction

BONJOUR LE MONDE Le n-ième He$o World

Hello world Nouveau langage, nouveau He$o world! Créer un fichier index.php

Hello world Nouveau langage, nouveau He$o world! Créer un fichier index.php <?php?> echo Hello world ;

Explications <?php?> echo Hello world ;

Explications Délimitent le code PHP <?php?> echo Hello world ;

Explications Délimitent le code PHP Tout ce qui est en dehors de ces balises n est pas interprété comme du code PHP mais directement envoyé au client. <?php?> echo Hello world ;

Hello world 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/dtd/ xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <title>mon index.php!!!</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head> <body> <p> <?php echo Hello World! ;?> </p> </body> </html>

Hello world 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/dtd/ xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <title>mon index.php!!!</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head> <body> <p> <?php echo Hello World! ;?> </p> </body> </html> Seule partie interprétée par PHP

LES VARIABLES et les opérateurs

PHP et les variables Pas besoin de déclarer les variables Pas de type de données Pas de gestion mémoire

PHP et les variables Pas besoin de déclarer les variables Pas de type de données Pas de gestion mémoire <?php $foo = bar ; $foo = 3; $foo++;?>

Opérateurs Opérateur Exemple Résultat si $bar = 3 = affectation $foo = $bar 3 + addition 2+3+$bar; 8 - soustraction 2-3-$bar; -2 * multiplication 2*3*$bar; 18 / division $bar/2; 1.5 % modulo $bar%2 1. concaténation $bar. ok 3 ok

Opérateurs Opérateur Exemple Résultat si $bar = 3 = affectation $foo = $bar 3 + addition 2+3+$bar; 8 - soustraction 2-3-$bar; -2 * multiplication 2*3*$bar; 18 / division $bar/2; 1.5 % modulo $bar%2 1. concaténation $bar. ok 3 ok Ne pas confondre avec l opérateur de comparaison ==

Opérateurs de comparaison Opérateur Exemple Résultat == égalité de valeur 3 == 3 TRUE === égalité valeur et type 3 === 3 FALSE < inférieur strict 3 < 3 FALSE <= inférieur ou égal 3 <= 3 TRUE > supérieur strict 3 > 3 FALSE >= supérieur ou égal 3 >= 3 TRUE!= différent (valeur) 3!= 3 FALSE!== différent (valeur ou type) 3!== 3 TRUE

Opérateurs logiques Opérateur! NON && ET OU

LES TABLEAUX Une structure de données très utile en PHP

PHP et les tableaux <?php // Création (facultatif) $montab = array();?> // Initialisations $montab[0] = 1; $montab[1] = 32.5; $montab[2] = Hello World ; // Tableaux à plusieurs dimensions $montab[3] = array(); $montab[3][0] = 1; $montab[3][2] = Hello World ; // Initialisation sans connaître le numéro $montab[] = 32; // Équivalent à $montab[4] = 32; // Création et initalisation $tableau2 = array(1,32.5, Hello World,32);

Tableaux de hachage <?php // Création (facultatif) $montab = array();?> // Initialisations $montab[ couleur ] = vert ; $montab[ temperature ] = 32.5; $montab[ message ] = Hello World ; // Création et initalisation $tableau2 = array( couleur => vert, temperature =>32.5, message => Hello World );

Tableaux de hachage <?php // Création (facultatif) $montab = array();?> // Initialisations $montab[ couleur ] = vert ; $montab[ temperature ] = 32.5; $montab[ message ] = Hello World ; // Création et initalisation $tableau2 = array( couleur => vert, temperature =>32.5, message => Hello World ); NB : les tableaux à plusieurs dimensions sont aussi possibles

Parcours de tableaux <?php // Récupération de la clé foreach ($tableau as $cle => $valeur) { echo <p>la clé.$cle. est associée à la valeur :.$valeur. <p> ; }?> // Pas de récupération de la clé foreach ($tableau as $valeur) { echo <p>le tableau contient la valeur :.$valeur. <p> ; }

Boucles <?php // Boucle «Pour» de 0 à 99 for ($compteur = 0; $compteur < 100 ; $compteur++) { echo <p>le compteur a la valeur.$compteur. </p> ; }?> // Boucle «Tant que» while ($test == false) { echo <p>le test est faux<p> ; $test = true; } // Boucle «Répeter jusqu à» do { echo <p>traitement<p> ; $test = true; } while ($test == false)

Tests <?php if ($truc == machin ){ // Si truc = machin }else{ // Sinon }?>

LES FORMULAIRES Interactions avec l utilisateur

Données des formulaires Code source HTML <form action= fichier.php method= get > <input type= text name= nom /> <input type= submit value= Envoyer /> </form>

Données des formulaires Fichier qui devra analyser le formulaire Code source HTML <form action= fichier.php method= get > <input type= text name= nom /> <input type= submit value= Envoyer /> </form>

Données des formulaires Fichier qui devra analyser le formulaire Code source HTML <form action= fichier.php method= get > <input type= text name= nom /> <input type= submit value= Envoyer /> </form> Valeur renvoyée par l utilisateur accessible via $_GET[ nom ]

Méthodes de formulaires GET POST passé dans la barre d adresse passé en HTTP marques-page et liens possibles pas de marque-page $_GET[ nom ] $_POST[ nom ]

PETIT EXERCICE Formulaire d authentification

Exo : formulaire et PHP Créer un formulaire d authentification dans un fichier php Traiter le résultat du formulaire avec le même fichier Si le login est admin et le mot de passe pipo remplacer le formulaire par un cadre rappelant l identité de l utilisateur Afficher une information secrète Fonctions utiles : array_key_exists() et is_array() (voir la documentation de PHP)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">! <head>! <meta http-equiv="content-type" content="text/ html;charset=utf-8" /> <title>exercice 1</title>! </head>! <body>! <h1>page web protégée</h1>! <div id="identite"> <?php if (is_array($_post) && array_key_exists("login", $_POST) && array_key_exists("pass",$_post) && $_POST ["login"]=="admin" && $_POST["pass"]=="pipo") { // Ok $connecte = true; echo "<p>bienvenue Admin!</p>"; }else{ $connecte = false; // Formulaire?> <form method="post" action="index.php"> <dl> <dt>nom</dt> <dd><input type="text" name="login" /></dd> <dt>mot de passe</dt> <dd><input type="password" name="pass" /></ dd> </dl> <p><input type="submit" value="connexion" /></ p> </form> <?php }?> </div> <div id="contenu"> <?php if ($connecte) {?> <p>informations confidentielles, accessibles uniquement pour l'admin! Trop fort!</p> <?php }else {?> <p>connectez-vous d'abord!</p> <?php }?> </div>! </body> </html>

Comment fait-on pour gérer les identités grâce à la base de données?

MYSQL SGBD libre

SGBD libre Système de gestion de bases de données libre Bases de données relationnelle (standard) Suffit à la plupart des usages du web Grand succès grâce au lien fort avec PHP Libre : open source et gratuit

SGBD simple Pas de transactions (sur MyISAM) Pas de procédures stockées Pas de contrôle d intégrité

SQL Échanger avec la base de données

Un langage standard Langage normalisé Repris par tous les SGBD, mais adapté aux besoins : petites différences dans la syntaxe base et principes communs

Manipulation des données SELECT : récupération de données selon certains critères INSERT : enregistrement de nouvelles données UPDATE : modification de données existantes DELETE : suppression de données

Manipulation de la structure CREATE : création d une table ou d une base de données DROP : effacement d une table ou base ALTER : modifier une table existante

MODÉLISATION Créer un schéma de base de données

Identifier les données Utilisateurs Livres Auteurs Catégories

Modélisation de la base de données n

Modélisation de la base de données Utilisateur Nom Prénom Login Mot de passe Auteur Nom Prénom 1.Identifier les objets Livre ISBN Titre Année de publication Catégorie Nom n

Modélisation de la base de données Utilisateur Nom Prénom Login Mot de passe Auteur Nom Prénom Livre 1.Identifier les objets 2.Trouver des identifiants uniques ISBN Titre Année de publication Catégorie Nom n

Modélisation de la base de données Utilisateur id Nom Prénom Login Mot de passe Auteur id Nom Prénom Livre 1.Identifier les objets 2.Trouver des identifiants uniques ISBN Titre Année de publication Catégorie id Nom n

Modélisation de la base de données 1.Identifier les objets Utilisateur id Nom Prénom Login Mot de passe 2.Trouver des identifiants uniques Livre ISBN Titre Année de publication 3.Trouver les relations entre objets et les cardinalités 1 auteur écrit plusieurs livres 1 livre n a qu un auteur Auteur id Nom Prénom Catégorie id Nom n

Modélisation de la base de données 1.Identifier les objets Utilisateur id Nom Prénom Login Mot de passe 2.Trouver des identifiants uniques Livre ISBN Titre Année de publication 3.Trouver les relations entre objets et les cardinalités 1 auteur écrit plusieurs livres 1 livre n a qu un auteur 1 livre appartient à 1 ou plusieurs catégories 1 catégorie peut contenir plusieurs livres Auteur id Nom Prénom Catégorie id Nom n

Modélisation de la base de données 1.Identifier les objets Utilisateur id Nom Prénom Login Mot de passe 2.Trouver des identifiants uniques Livre ISBN Titre Année de publication 3.Trouver les relations entre objets et les cardinalités 1,1 1 auteur écrit plusieurs livres 1 livre n a qu un auteur 1 livre appartient à 1 ou plusieurs catégories 1 catégorie peut contenir plusieurs livres 1,n 0,n 1,n Auteur id Nom Prénom Catégorie id Nom n

Modélisation de la base de données Utilisateur id Nom Prénom Login Mot de passe Livre 1,1 1,n Auteur id Nom Prénom ISBN Titre Année de publication 1,n Catégorie 0,n id Nom n

Modélisation de la base de données Utilisateur id Nom Prénom Login Mot de passe Livre 1,1 1,n Auteur id Nom Prénom 4.Relations 1-n : mettre une clé ISBN Titre Année de publication #auteur étrangère dans la table des objets qui ne sont liés qu à un seul objet 1,n 0,n Catégorie id Nom n

Modélisation de la base de données Utilisateur id Nom Prénom Login Mot de passe Livre 1,1 1,n Auteur id Nom Prénom 4.Relations 1-n : mettre une clé ISBN Titre Année de publication #auteur étrangère dans la table des objets qui ne sont liés qu à un seul objet 1,n 5.Relations n-n : créer une table de liaison 1,1 Appartenance #catégorie #livre 1,1 0,n Catégorie id Nom n

Exemples de données ISBN Titre Auteur 32234S Le Calme 1 08534G Tempête 1 id Nom Prénom 1 Dupond Jean 2 Dupont Georges ISBN Categorie 08534G 1 id Catégorie 08534G 2 1 Roman 2 Policier

Exemples de données ISBN Titre Auteur 32234S Le Calme 1 08534G Tempête 1 id Nom Prénom 1 Dupond Jean 2 Dupont Georges ISBN Categorie 08534G 1 id Catégorie 08534G 2 1 Roman 2 Policier

Exemples de données ISBN Titre Auteur 32234S Le Calme 1 08534G Tempête 1 id Nom Prénom 1 Dupond Jean 2 Dupont Georges ISBN Categorie 08534G 1 id Catégorie 08534G 2 1 Roman 2 Policier

Exemples de données ISBN Titre Auteur 32234S Le Calme 1 08534G Tempête 1 id Nom Prénom 1 Dupond Jean 2 Dupont Georges ISBN Categorie 08534G 1 id Catégorie 08534G 2 1 Roman 2 Policier

Exercice Créez des tables Écrivez des données d exemple : comptes d utilisateurs, livres, catégories, auteurs Écrivez et testez avec phpmyadmin des requêtes qui permettent de récupérer les livres d une certaine catégorie ou les ouvrages d un auteur (selon son nom)

AUTHENTIFICATION Avec utilisation de la base de données

Fonctions de hachage

Fonctions de hachage hash

Fonctions de hachage Texte, fichier (Peut être très long) hash Empreinte de taille fixe

Fonctions de hachage Texte, fichier (Peut être très long) hash Empreinte de taille fixe X Impossible (ou au moins très difficile)

Exercice Utilisez la base de données pour vérifier l authentification Stockez en base de données le mot de passe haché (md5 ou sha-1) Ne jamais stocker les mots de passe en clair dans la base de données Ne jamais chiffrer les mots de passe dans la base de données Toujours stocker des mots de passe hachés

Fonctions MySQL de PHP Rechercher dans la documentation PHP des informations sur MySQL mysql_connect() mysql_query() mysql_real_escape_string() mysql_fetch_object() ou mysql_fetch_array()

Connexion à une base de données Fonction mysql_connect(host, user, password) N utiliser qu une seule fois dans un script Script plus rapide Moins de charge sur la base de données <?php $liendb = @mysql_connect( localhost, utilisateur, motdepasse ); if (!$liendb) die( Erreur de connexion à la base de données );?>

Exécution d une requête Fonction mysql_query() <?php $liendb = @mysql_connect( localhost, utilisateur, motdepasse ); if (!$liendb) die( Erreur de connexion à la base de données ); @mysql_query( INSERT INTO livres (titre,auteur) VALUES ( Test,1),$lienDB);?>

Récupération de données Fonction mysql_fetch_array() ou mysql_fetch_object() <?php $liendb = @mysql_connect( localhost, utilisateur, motdepasse ); if (!$liendb) die( Erreur de connexion à la base de données ); $resultat = @mysql_query( SELECT * FROM livres,$liendb);?> for ($i=0;$i<@mysql_num_rows($resultat);$i++) { $livres[] = @mysql_fetch_object($resultat); } // Accès aux données echo <ul> ; foreach($livres as $livre) { echo <p>.$livre->titre. </p> ; } echo </ul> ;

Sécurisation des requêtes Tous les paramètres reçus de l utilisateur et utilisés dans une requête doivent-être sécurisés : mysql_real_escape_string() Formulaires Base de donnée <?php $liendb = @mysql_connect( localhost, utilisateur, motdepasse ); if (!$liendb) die( Erreur de connexion à la base de données ); // Sécurisation $login = mysql_real_escape_string($_post[ login ],$liendb); @mysql_query( SELECT * FROM utilisateurs WHERE login=.$login.,$liendb);?> Le paramètre magic_quotes de PHP peut poser des problèmes. Avant sa désactivation, il faut vérifier que tous les paramètres sont sécurisés!

MODÉLISATION DE L APPLICATION Quels fichiers, quelles fonctions?

QUELLES FONCTIONS? Un fichier par fonction de l application

Utilisation de librairies PHP Appel à des fonctions définies dans un autre fichier : include / include_once require / require_once : erreur si le fichier n est pas trouvé *_once : le fichier n est pas parsé une deuxième fois, évite les erreurs (fonctions déjà déclarées) include ou require : équivalent à la recopie du fichier appelé à la place de l instruction d inclusion

QUELLE LIBRAIRIES UTILISÉES PAR TOUTE L APPLICATION? Un fichier par librairie!

Librairies Connexion, requêtes MySQL Authentification et gestion de l identité Affichage des éléments de la page : titre, menu, footer, etc...

CRÉEZ LES LIBRAIRIES Et incluez les au bon endroit.