php/mysql · pdf file... base de données contenant les informations sur les livres, ......

90
PHP/MYSQL Web Dynamique ENSG Septembre 2009 jeudi 24 septembre 2009

Upload: duongthu

Post on 02-Feb-2018

218 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

PHP/MYSQLWeb Dynamique

ENSG Septembre 2009

jeudi 24 septembre 2009

Page 2: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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.

jeudi 24 septembre 2009

Page 3: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

NOTRE EXEMPLEApplication simple en PHP

jeudi 24 septembre 2009

Page 4: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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

jeudi 24 septembre 2009

Page 5: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Application web

PHP : traitements

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

jeudi 24 septembre 2009

Page 6: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

PHPLangage de script adapté au web

jeudi 24 septembre 2009

Page 7: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Où trouver tout ce que vous voulez savoir et tout ce que vous ne

voulez pas savoir à propos de PHP ?

jeudi 24 septembre 2009

Page 8: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

http://www.php.net

jeudi 24 septembre 2009

Page 9: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

AU REVOIRBonne fin de journée !

jeudi 24 septembre 2009

Page 10: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

IDE ET DEBUGGEREclipse et XDebug

jeudi 24 septembre 2009

Page 11: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

IDE : eclipse + PDTSe simplifier la vie

jeudi 24 septembre 2009

Page 12: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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)

jeudi 24 septembre 2009

Page 13: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

DEBUGGER ET PHPXDebug

jeudi 24 septembre 2009

Page 14: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

XDebug : debugger de PHPPHP : 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

jeudi 24 septembre 2009

Page 15: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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

jeudi 24 septembre 2009

Page 16: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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

jeudi 24 septembre 2009

Page 17: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Nouveau projet EclipseOuvrir eclipseChoisir <XAMPP>/htdocs/eclipse (créer le dossier) comme workspaceCréer un projet PHP :

Clic droit dans la liste des projets : New > PHP ProjectClic droit sur le dossier : New > PHP File > index.php

Écrire : <?php phpinfo(); et sauvegarderConfigurer le debu!er :

Clic droit sur le projet > debug asChoisir 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

jeudi 24 septembre 2009

Page 18: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

LANGAGE PHPIntroduction

jeudi 24 septembre 2009

Page 19: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

BONJOUR LE MONDELe n-ième He$o World

jeudi 24 septembre 2009

Page 20: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Hello world

Nouveau langage, nouveau He$o world !

Créer un fichier index.php

jeudi 24 septembre 2009

Page 21: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Hello world

Nouveau langage, nouveau He$o world !

Créer un fichier index.php

<?phpecho “Hello world”;

?>

jeudi 24 septembre 2009

Page 22: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Explications

<?phpecho “Hello world”;

?>

jeudi 24 septembre 2009

Page 23: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Explications

<?phpecho “Hello world”;

?>

Délimitent le code PHP

jeudi 24 septembre 2009

Page 24: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Explications

<?phpecho “Hello world”;

?>

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.

jeudi 24 septembre 2009

Page 25: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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>

jeudi 24 septembre 2009

Page 26: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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

jeudi 24 septembre 2009

Page 27: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

LES VARIABLESet les opérateurs

jeudi 24 septembre 2009

Page 28: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

PHP et les variables

Pas besoin de déclarer les variables

Pas de type de données

Pas de gestion mémoire

jeudi 24 septembre 2009

Page 29: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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++;

?>

jeudi 24 septembre 2009

Page 30: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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”

jeudi 24 septembre 2009

Page 31: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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 ==

jeudi 24 septembre 2009

Page 32: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Opérateurs de comparaisonOpé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

jeudi 24 septembre 2009

Page 33: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Opérateurs logiques

Opérateur

! NON

&& ET

|| OU

jeudi 24 septembre 2009

Page 34: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

LES TABLEAUXUne structure de données très utile

en PHP

jeudi 24 septembre 2009

Page 35: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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);

?>

jeudi 24 septembre 2009

Page 36: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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”);

?>

jeudi 24 septembre 2009

Page 37: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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

jeudi 24 septembre 2009

Page 38: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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>”;}

?>

jeudi 24 septembre 2009

Page 39: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Boucles<?php

// Boucle «Pour» de 0 à 99for ($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)

?>

jeudi 24 septembre 2009

Page 40: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Tests

<?phpif ($truc == “machin”){

// Si truc = machin}else{

// Sinon }

?>

jeudi 24 septembre 2009

Page 41: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

LES FORMULAIRESInteractions avec l’utilisateur

jeudi 24 septembre 2009

Page 42: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Données des formulaires

<form action=”fichier.php” method=”get”><input type=”text” name=”nom” /><input type=”submit” value=”Envoyer” />

</form>

Code source HTML

jeudi 24 septembre 2009

Page 43: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Données des formulaires

<form action=”fichier.php” method=”get”><input type=”text” name=”nom” /><input type=”submit” value=”Envoyer” />

</form>

Fichier qui devra analyser le formulaire

Code source HTML

jeudi 24 septembre 2009

Page 44: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Données des formulaires

<form action=”fichier.php” method=”get”><input type=”text” name=”nom” /><input type=”submit” value=”Envoyer” />

</form>

Fichier qui devra analyser le formulaire

Valeur renvoyée par l’utilisateur accessible via

$_GET[“nom”]

Code source HTML

jeudi 24 septembre 2009

Page 45: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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”]

jeudi 24 septembre 2009

Page 46: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

PETIT EXERCICEFormulaire d’authentification

jeudi 24 septembre 2009

Page 47: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Exo : formulaire et PHPCréer un formulaire d’authentification dans un fichier phpTraiter le résultat du formulaire avec le même fichierSi le login est “admin” et le mot de passe “pipo” remplacer le formulaire par un cadre rappelant l’identité de l’utilisateurAfficher une information “secrète”Fonctions utiles : array_key_exists() et is_array() (voir la documentation de PHP)

jeudi 24 septembre 2009

Page 48: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

<!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>

jeudi 24 septembre 2009

Page 49: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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

jeudi 24 septembre 2009

Page 50: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

MYSQLSGBD libre

jeudi 24 septembre 2009

Page 51: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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

jeudi 24 septembre 2009

Page 52: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

SGBD simple

Pas de transactions (sur MyISAM)

Pas de procédures stockées

Pas de contrôle d’intégrité

jeudi 24 septembre 2009

Page 53: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

SQLÉchanger avec la base de données

jeudi 24 septembre 2009

Page 54: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Un langage standard

Langage normalisé

Repris par tous les SGBD, mais adapté aux besoins :

petites différences dans la syntaxe

base et principes communs

jeudi 24 septembre 2009

Page 55: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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

jeudi 24 septembre 2009

Page 56: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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

jeudi 24 septembre 2009

Page 57: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

MODÉLISATIONCréer un schéma de base de données

jeudi 24 septembre 2009

Page 58: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Identifier les données

Utilisateurs

Livres

Auteurs

Catégories

jeudi 24 septembre 2009

Page 59: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Modélisation de la base de données

njeudi 24 septembre 2009

Page 60: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Modélisation de la base de données

Utilisateur

NomPrénomLoginMot de passe

Livre

ISBNTitreAnnée de publication

Auteur

NomPrénom

Catégorie

Nom

1.Identifier les objets

njeudi 24 septembre 2009

Page 61: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Modélisation de la base de données

Utilisateur

NomPrénomLoginMot de passe

Livre

ISBNTitreAnnée de publication

Auteur

NomPrénom

Catégorie

Nom

1.Identifier les objets2.Trouver des identifiants uniques

njeudi 24 septembre 2009

Page 62: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Modélisation de la base de données

Utilisateur

NomPrénomLoginMot de passe

Livre

ISBNTitreAnnée de publication

Auteur

NomPrénom

Catégorie

Nom

1.Identifier les objets2.Trouver des identifiants uniques

id

id

ISBN

id

njeudi 24 septembre 2009

Page 63: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Modélisation de la base de données

Utilisateur

NomPrénomLoginMot de passe

Livre

ISBNTitreAnnée de publication

Auteur

NomPrénom

Catégorie

Nom

1.Identifier les objets2.Trouver des identifiants uniques3.Trouver les relations entre objets et les cardinalités

id

id

ISBN

id

1 auteur écrit plusieurs liv

res

1 livre n’a qu’un auteur

njeudi 24 septembre 2009

Page 64: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Modélisation de la base de données

Utilisateur

NomPrénomLoginMot de passe

Livre

ISBNTitreAnnée de publication

Auteur

NomPrénom

Catégorie

Nom

1.Identifier les objets2.Trouver des identifiants uniques3.Trouver les relations entre objets et les cardinalités

id

id

ISBN

id

1 auteur écrit plusieurs liv

res

1 livre appartient à 1

ou plusieurs catégories

1 livre n’a qu’un auteur

1 catégorie peut contenir

plusieurs livres

njeudi 24 septembre 2009

Page 65: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Modélisation de la base de données

Utilisateur

NomPrénomLoginMot de passe

Livre

ISBNTitreAnnée de publication

Auteur

NomPrénom

Catégorie

Nom

1.Identifier les objets2.Trouver des identifiants uniques3.Trouver les relations entre objets et les cardinalités

id

id

ISBN

id

1 auteur écrit plusieurs liv

res

1 livre appartient à 1

ou plusieurs catégories

1 livre n’a qu’un auteur

1 catégorie peut contenir

plusieurs livres

1,1

1,n

1,n

n

0,n

jeudi 24 septembre 2009

Page 66: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Modélisation de la base de données

Utilisateur

NomPrénomLoginMot de passe

Livre

ISBNTitreAnnée de publication

Auteur

NomPrénom

Catégorie

Nom

id

id

ISBN

id

n

1,1

1,n

1,n

0,n

jeudi 24 septembre 2009

Page 67: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Modélisation de la base de données

Utilisateur

NomPrénomLoginMot de passe

Livre

ISBNTitreAnnée de publication

Auteur

NomPrénom

Catégorie

Nom

4.Relations 1-n : mettre une clé étrangère dans la table des objets qui ne sont liés qu’à un seul objet

id

id

ISBN

id

n

#auteur

1,1

1,n

1,n

0,n

jeudi 24 septembre 2009

Page 68: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Modélisation de la base de données

Utilisateur

NomPrénomLoginMot de passe

Livre

ISBNTitreAnnée de publication

Auteur

NomPrénom

Catégorie

Nom

4.Relations 1-n : mettre une clé étrangère dans la table des objets qui ne sont liés qu’à un seul objet

5.Relations n-n : créer une table de liaison

id

id

ISBN

id

n

#auteurAppartenance

#catégorie#livre

1,11,1

1,1

1,n

1,n

0,n

jeudi 24 septembre 2009

Page 69: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Exemples de donnéesISBN Titre Auteur

32234S Le Calme 108534G Tempête 1 id Nom Prénom

1 Dupond Jean2 Dupont Georges

id Catégorie

1 Roman2 Policier

ISBN Categorie

08534G 108534G 2

jeudi 24 septembre 2009

Page 70: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Exemples de donnéesISBN Titre Auteur

32234S Le Calme 108534G Tempête 1 id Nom Prénom

1 Dupond Jean2 Dupont Georges

id Catégorie

1 Roman2 Policier

ISBN Categorie

08534G 108534G 2

jeudi 24 septembre 2009

Page 71: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Exemples de donnéesISBN Titre Auteur

32234S Le Calme 108534G Tempête 1 id Nom Prénom

1 Dupond Jean2 Dupont Georges

id Catégorie

1 Roman2 Policier

ISBN Categorie

08534G 108534G 2

jeudi 24 septembre 2009

Page 72: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Exemples de donnéesISBN Titre Auteur

32234S Le Calme 108534G Tempête 1 id Nom Prénom

1 Dupond Jean2 Dupont Georges

id Catégorie

1 Roman2 Policier

ISBN Categorie

08534G 108534G 2

jeudi 24 septembre 2009

Page 73: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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)

jeudi 24 septembre 2009

Page 74: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

AUTHENTIFICATIONAvec utilisation de la base de données

jeudi 24 septembre 2009

Page 75: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Fonctions de hachage

jeudi 24 septembre 2009

Page 76: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Fonctions de hachage

hash

jeudi 24 septembre 2009

Page 77: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Fonctions de hachage

hashTexte, fichier(Peut être très long)

Empreinte de taille fixe

jeudi 24 septembre 2009

Page 78: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Fonctions de hachage

hashTexte, fichier(Peut être très long)

Empreinte de taille fixe

XImpossible(ou au moins très difficile)

jeudi 24 septembre 2009

Page 79: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

ExerciceUtilisez la base de données pour vérifier l’authentificationStockez 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éesNe jamais chiffrer les mots de passe dans la base de donnéesToujours stocker des mots de passe hachés

jeudi 24 septembre 2009

Page 80: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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()

jeudi 24 septembre 2009

Page 81: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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”);?>

jeudi 24 septembre 2009

Page 82: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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);

?>

jeudi 24 septembre 2009

Page 83: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

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éesecho “<ul>”;foreach($livres as $livre){

echo “<p>”.$livre->titre.”</p>”;}echo “</ul>”;

?>

jeudi 24 septembre 2009

Page 84: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Sécurisation des requêtesTous les paramètres reçus de l’utilisateur et utilisés dans une requête doivent-être sécurisés : mysql_real_escape_string()

FormulairesBase 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 !

jeudi 24 septembre 2009

Page 85: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

MODÉLISATION DE L’APPLICATION

Quels fichiers, quelles fonctions ?

jeudi 24 septembre 2009

Page 86: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

QUELLES FONCTIONS ?

Un fichier par fonction de l’application

jeudi 24 septembre 2009

Page 87: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Utilisation de librairies PHP

Appel à des fonctions définies dans un autre fichier : include / include_oncerequire / 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

jeudi 24 septembre 2009

Page 88: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

QUELLE LIBRAIRIES UTILISÉES PAR TOUTE

L’APPLICATION ?Un fichier par librairie !

jeudi 24 septembre 2009

Page 89: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

Librairies

Connexion, requêtes MySQL

Authentification et gestion de l’identité

Affichage des éléments de la page : titre, menu, footer, etc...

jeudi 24 septembre 2009

Page 90: PHP/MYSQL · PDF file... base de données contenant les informations sur les livres, ... Système de gestion de bases de données libre ... SGBD simple Pas de transactions (sur MyISAM)

CRÉEZ LES LIBRAIRIES

Et incluez les au bon endroit.

jeudi 24 septembre 2009