POO / IHM Architecture Logicielle Anne-Marie Dery ([email protected])
Cours POO Et IHM en PHP
-
Upload
khalidihajar -
Category
Documents
-
view
239 -
download
2
Transcript of Cours POO Et IHM en PHP
Programmation oriente objet et interfaces web en PHPLa programmation objet avec PHP5 Bases de donnes et interfaces web Fonctionnement des sessions
Nicolas MoyroudCemagref - UMR TETIS
26 Juin 2008
Programmation oriente objet avec PHP5
Plan
1
Programmation oriente objet avec PHP5 Interaction avec les bases de donnes Dveloppement d'interfaces web pour les bases de donnes Principes de fonctionnement des sessions
2
3
4
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
2 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : rappelsLa programmation oriente objet (POO) est un style de programmation qui consiste dnir et assembler des briques de code appeles "objets", il s'oppose au style de programmation classique dit "procdural" L'intrt est de favoriser l'voluabilit du code en concevant une application non plus partir de ses fonctionnalits, mais partir de ses donnes qui sont gnralement plus stables Un objet peut reprsenter un concept (chier) ou une entit du monde physique (voiture, personne) Un objet est une structure qui regroupe des donnes (attributs) et les moyens de traiter ces donnes (des fonctions que l'on appelle "mthodes" en POO)http://fr.wikipedia.org/wiki/Poo http://hdd34.developpez.com/cours/artpoo/ http://www.larcher.com/eric/guides/javactivex/V.htm
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
3 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : rappelsLa programmation oriente objet (POO) est un style de programmation qui consiste dnir et assembler des briques de code appeles "objets", il s'oppose au style de programmation classique dit "procdural" L'intrt est de favoriser l'voluabilit du code en concevant une application non plus partir de ses fonctionnalits, mais partir de ses donnes qui sont gnralement plus stables Un objet peut reprsenter un concept (chier) ou une entit du monde physique (voiture, personne) Un objet est une structure qui regroupe des donnes (attributs) et les moyens de traiter ces donnes (des fonctions que l'on appelle "mthodes" en POO)http://fr.wikipedia.org/wiki/Poo http://hdd34.developpez.com/cours/artpoo/ http://www.larcher.com/eric/guides/javactivex/V.htm
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
3 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : rappelsLa programmation oriente objet (POO) est un style de programmation qui consiste dnir et assembler des briques de code appeles "objets", il s'oppose au style de programmation classique dit "procdural" L'intrt est de favoriser l'voluabilit du code en concevant une application non plus partir de ses fonctionnalits, mais partir de ses donnes qui sont gnralement plus stables Un objet peut reprsenter un concept (chier) ou une entit du monde physique (voiture, personne) Un objet est une structure qui regroupe des donnes (attributs) et les moyens de traiter ces donnes (des fonctions que l'on appelle "mthodes" en POO)http://fr.wikipedia.org/wiki/Poo http://hdd34.developpez.com/cours/artpoo/ http://www.larcher.com/eric/guides/javactivex/V.htm
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
3 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : rappelsLa programmation oriente objet (POO) est un style de programmation qui consiste dnir et assembler des briques de code appeles "objets", il s'oppose au style de programmation classique dit "procdural" L'intrt est de favoriser l'voluabilit du code en concevant une application non plus partir de ses fonctionnalits, mais partir de ses donnes qui sont gnralement plus stables Un objet peut reprsenter un concept (chier) ou une entit du monde physique (voiture, personne) Un objet est une structure qui regroupe des donnes (attributs) et les moyens de traiter ces donnes (des fonctions que l'on appelle "mthodes" en POO)http://fr.wikipedia.org/wiki/Poo http://hdd34.developpez.com/cours/artpoo/ http://www.larcher.com/eric/guides/javactivex/V.htm
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
3 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : concept de classe
En POO, l'lment de base est la classe qui est une reprsentation abstraite d'un objet, c'est une sorte de "moule objets" Les objets concrets sont tous les instances d'une classe Une instance de la classe voiture serait par exemple un objet de marque "Renault", modle "Clio", couleur "rouge" et vitesse "0" Les dirents objets sont en interaction entre eux : on met en place un diagramme de classes qui traduit ces interactionsNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 4 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : concept de classe
En POO, l'lment de base est la classe qui est une reprsentation abstraite d'un objet, c'est une sorte de "moule objets" Les objets concrets sont tous les instances d'une classe Une instance de la classe voiture serait par exemple un objet de marque "Renault", modle "Clio", couleur "rouge" et vitesse "0" Les dirents objets sont en interaction entre eux : on met en place un diagramme de classes qui traduit ces interactionsNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 4 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : concept de classe
En POO, l'lment de base est la classe qui est une reprsentation abstraite d'un objet, c'est une sorte de "moule objets" Les objets concrets sont tous les instances d'une classe Une instance de la classe voiture serait par exemple un objet de marque "Renault", modle "Clio", couleur "rouge" et vitesse "0" Les dirents objets sont en interaction entre eux : on met en place un diagramme de classes qui traduit ces interactionsNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 4 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : concept de classe
En POO, l'lment de base est la classe qui est une reprsentation abstraite d'un objet, c'est une sorte de "moule objets" Les objets concrets sont tous les instances d'une classe Une instance de la classe voiture serait par exemple un objet de marque "Renault", modle "Clio", couleur "rouge" et vitesse "0" Les dirents objets sont en interaction entre eux : on met en place un diagramme de classes qui traduit ces interactionsNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 4 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : l'encapsulationLes attributs d'un objet qui constituent sa structure interne ne sont en gnral pas accessibles aux autres objets, c'est le principe de l'encapsulation Par exemple, pour pouvoir dnir la couleur d'une voiture, il faudra lui ajouter une mthode changerCouleur qui s'occupera de changer la valeur de son attribut couleur Les autres objets n'ont ainsi plus besoin de savoir comment changer la couleur de la voiture, ils se contentent d'appeler la mthode changerCouleur On garde ainsi une cohrence dans la gestion de l'objet et on assure l'intgrit de ses donnes
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
5 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : l'encapsulationLes attributs d'un objet qui constituent sa structure interne ne sont en gnral pas accessibles aux autres objets, c'est le principe de l'encapsulation Par exemple, pour pouvoir dnir la couleur d'une voiture, il faudra lui ajouter une mthode changerCouleur qui s'occupera de changer la valeur de son attribut couleur Les autres objets n'ont ainsi plus besoin de savoir comment changer la couleur de la voiture, ils se contentent d'appeler la mthode changerCouleur On garde ainsi une cohrence dans la gestion de l'objet et on assure l'intgrit de ses donnes
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
5 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : l'encapsulationLes attributs d'un objet qui constituent sa structure interne ne sont en gnral pas accessibles aux autres objets, c'est le principe de l'encapsulation Par exemple, pour pouvoir dnir la couleur d'une voiture, il faudra lui ajouter une mthode changerCouleur qui s'occupera de changer la valeur de son attribut couleur Les autres objets n'ont ainsi plus besoin de savoir comment changer la couleur de la voiture, ils se contentent d'appeler la mthode changerCouleur On garde ainsi une cohrence dans la gestion de l'objet et on assure l'intgrit de ses donnes
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
5 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : l'encapsulationLes attributs d'un objet qui constituent sa structure interne ne sont en gnral pas accessibles aux autres objets, c'est le principe de l'encapsulation Par exemple, pour pouvoir dnir la couleur d'une voiture, il faudra lui ajouter une mthode changerCouleur qui s'occupera de changer la valeur de son attribut couleur Les autres objets n'ont ainsi plus besoin de savoir comment changer la couleur de la voiture, ils se contentent d'appeler la mthode changerCouleur On garde ainsi une cohrence dans la gestion de l'objet et on assure l'intgrit de ses donnes
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
5 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : l'hritage
Le principe de l'hritage est bas sur des classes lles qui hritent des caractristiques (attributs et mthodes) d'une classe mre Une classe lle peut galement dnir ses propres caractristiques Par exemple, on peut dnir une classe "Vhicule" dont hrite deux classes lles "Voiture" et "Camion" Ce principe permet la rutilisabilit et l'adaptabilit des objetsNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 6 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : l'hritage
Le principe de l'hritage est bas sur des classes lles qui hritent des caractristiques (attributs et mthodes) d'une classe mre Une classe lle peut galement dnir ses propres caractristiques Par exemple, on peut dnir une classe "Vhicule" dont hrite deux classes lles "Voiture" et "Camion" Ce principe permet la rutilisabilit et l'adaptabilit des objetsNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 6 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : l'hritage
Le principe de l'hritage est bas sur des classes lles qui hritent des caractristiques (attributs et mthodes) d'une classe mre Une classe lle peut galement dnir ses propres caractristiques Par exemple, on peut dnir une classe "Vhicule" dont hrite deux classes lles "Voiture" et "Camion" Ce principe permet la rutilisabilit et l'adaptabilit des objetsNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 6 / 31
Programmation oriente objet avec PHP5
Principes gnraux de la POO : l'hritage
Le principe de l'hritage est bas sur des classes lles qui hritent des caractristiques (attributs et mthodes) d'une classe mre Une classe lle peut galement dnir ses propres caractristiques Par exemple, on peut dnir une classe "Vhicule" dont hrite deux classes lles "Voiture" et "Camion" Ce principe permet la rutilisabilit et l'adaptabilit des objetsNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 6 / 31
Programmation oriente objet avec PHP5
La POO avec PHP5Contrairement des langages comme Java ou C++, les premires versions du langage PHP n'ont pas t conues pour la POO Les premiers lments de POO ont t intgrs dans la version 3 PHP4 puis surtout PHP5 ont introduit de vritables concepts pour la POO, notamment la notion d'hritage et d'encapsulation Il est maintenant possible de programmer trs ecacement en POO avec PHP La grande majorit des librairies de code sont disponibles sous forme de classeshttp://g-rossolini.developpez.com/tutoriels/php/cours/?page=poo
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
7 / 31
Programmation oriente objet avec PHP5
La POO avec PHP5Contrairement des langages comme Java ou C++, les premires versions du langage PHP n'ont pas t conues pour la POO Les premiers lments de POO ont t intgrs dans la version 3 PHP4 puis surtout PHP5 ont introduit de vritables concepts pour la POO, notamment la notion d'hritage et d'encapsulation Il est maintenant possible de programmer trs ecacement en POO avec PHP La grande majorit des librairies de code sont disponibles sous forme de classeshttp://g-rossolini.developpez.com/tutoriels/php/cours/?page=poo
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
7 / 31
Programmation oriente objet avec PHP5
La POO avec PHP5Contrairement des langages comme Java ou C++, les premires versions du langage PHP n'ont pas t conues pour la POO Les premiers lments de POO ont t intgrs dans la version 3 PHP4 puis surtout PHP5 ont introduit de vritables concepts pour la POO, notamment la notion d'hritage et d'encapsulation Il est maintenant possible de programmer trs ecacement en POO avec PHP La grande majorit des librairies de code sont disponibles sous forme de classeshttp://g-rossolini.developpez.com/tutoriels/php/cours/?page=poo
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
7 / 31
Programmation oriente objet avec PHP5
La POO avec PHP5Contrairement des langages comme Java ou C++, les premires versions du langage PHP n'ont pas t conues pour la POO Les premiers lments de POO ont t intgrs dans la version 3 PHP4 puis surtout PHP5 ont introduit de vritables concepts pour la POO, notamment la notion d'hritage et d'encapsulation Il est maintenant possible de programmer trs ecacement en POO avec PHP La grande majorit des librairies de code sont disponibles sous forme de classeshttp://g-rossolini.developpez.com/tutoriels/php/cours/?page=poo
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
7 / 31
Programmation oriente objet avec PHP5
La POO avec PHP5Contrairement des langages comme Java ou C++, les premires versions du langage PHP n'ont pas t conues pour la POO Les premiers lments de POO ont t intgrs dans la version 3 PHP4 puis surtout PHP5 ont introduit de vritables concepts pour la POO, notamment la notion d'hritage et d'encapsulation Il est maintenant possible de programmer trs ecacement en POO avec PHP La grande majorit des librairies de code sont disponibles sous forme de classeshttp://g-rossolini.developpez.com/tutoriels/php/cours/?page=poo
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
7 / 31
Programmation oriente objet avec PHP5
La POO avec PHP5Exemple de classe
class Vehicule { private $marque ; private $vitesse ; public function __construct ( $marque ) { $this >marque = $marque ; $this >vitesse = 0 ; / / un n o u v e a u v e h i c u l e}
a
une
vitesse
nulle
public function accelerer ( $vit ) $this >vitesse += $vit ; / / o k
{ dans { la classe
}
public function afficherVitesse ( ) return $this >vitesse ;
} }
Mots rservs : class, function, private, public, protected, __construct, __destruct, extends, implements, self, parent, $this, ->Nicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 8 / 31
Programmation oriente objet avec PHP5
La POO avec PHP5Hritage de classe
class Voiture extends Vehicule { private $nombrePortes ; public function __construct ( $marque , $nbPortes ) parent : : __construct ( $marque ) ; $this >nombrePortes = $nbPortes ;}
{
public function afficherNbPortes ( ) return $this >nombrePortes ;
{
} }
Utilisation d'une classe
$ma_voiture = new Voiture ( $marque , 5 ) ; $ma_voiture >accelerer ( 2 0 ) ; $ma_voiture >accelerer ( 5 ) ; echo ' nbPortes = ' . $ma_voiture >afficherNbPortes ( ) ; echo ' vitesse = ' . $ma_voiture >afficherVitesse ( ) ;Nicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 9 / 31
Interaction avec les bases de donnes
Plan
1
Programmation oriente objet avec PHP5 Interaction avec les bases de donnes Dveloppement d'interfaces web pour les bases de donnes Principes de fonctionnement des sessions
2
3
4
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
10 / 31
Interaction avec les bases de donnes
PHP et les bases de donnes
Le langage PHP supporte l'accs un grand nombre de systmes de gestion de bases de donnes : Oracle, PostgreSQL, MySQL, ... Permet de dvelopper des applications bases sur l'architecture client + serveur web + serveur de donnes Nativement, PHP propose des fonctions spciques chaque SGBD Il existe des librairies pour l'abstraction de bases de donnes qui permettent d'utiliser un code PHP identique quel que soit le SGBD (PEAR_MDB2, PHP Data Objects)PDO : PEAR_MDB2 :
http://fr.php.net/pdo
http://pear.php.net/package/MDB226 Juin 2008 11 / 31
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
Interaction avec les bases de donnes
PHP et les bases de donnes
Le langage PHP supporte l'accs un grand nombre de systmes de gestion de bases de donnes : Oracle, PostgreSQL, MySQL, ... Permet de dvelopper des applications bases sur l'architecture client + serveur web + serveur de donnes Nativement, PHP propose des fonctions spciques chaque SGBD Il existe des librairies pour l'abstraction de bases de donnes qui permettent d'utiliser un code PHP identique quel que soit le SGBD (PEAR_MDB2, PHP Data Objects)PDO : PEAR_MDB2 :
http://fr.php.net/pdo
http://pear.php.net/package/MDB226 Juin 2008 11 / 31
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
Interaction avec les bases de donnes
PHP et les bases de donnes
Le langage PHP supporte l'accs un grand nombre de systmes de gestion de bases de donnes : Oracle, PostgreSQL, MySQL, ... Permet de dvelopper des applications bases sur l'architecture client + serveur web + serveur de donnes Nativement, PHP propose des fonctions spciques chaque SGBD Il existe des librairies pour l'abstraction de bases de donnes qui permettent d'utiliser un code PHP identique quel que soit le SGBD (PEAR_MDB2, PHP Data Objects)PDO : PEAR_MDB2 :
http://fr.php.net/pdo
http://pear.php.net/package/MDB226 Juin 2008 11 / 31
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
Interaction avec les bases de donnes
PHP et les bases de donnes
Le langage PHP supporte l'accs un grand nombre de systmes de gestion de bases de donnes : Oracle, PostgreSQL, MySQL, ... Permet de dvelopper des applications bases sur l'architecture client + serveur web + serveur de donnes Nativement, PHP propose des fonctions spciques chaque SGBD Il existe des librairies pour l'abstraction de bases de donnes qui permettent d'utiliser un code PHP identique quel que soit le SGBD (PEAR_MDB2, PHP Data Objects)PDO : PEAR_MDB2 :
http://fr.php.net/pdo
http://pear.php.net/package/MDB226 Juin 2008 11 / 31
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
Interaction avec les bases de donnes
Les fonctions PHP spciques PostgreSQLpg_connect ouvre une connexion une base PostgreSQL pg_query excute une requte SQL pg_query_params excute une requte SQL en passant des paramtres sparment du code SQL pg_fetch_row lit un enregistrement depuis rsultat d'une requte et stocke ses champs dans un tableau numrique pg_fetch_assoc lit un enregistrement depuis rsultat d'une requte et stocke ses champs dans un tableau associatif (les cls sont les noms des champs) pg_escape_string protge une chane de caractres pour l'insrer dans un champ texte pg_eld_name retourne le nom d'un champDocumentation :
http://fr.php.net/manual/fr/ref.pgsql.php
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
12 / 31
Interaction avec les bases de donnes
Les fonctions PHP spciques PostgreSQLpg_connect ouvre une connexion une base PostgreSQL pg_query excute une requte SQL pg_query_params excute une requte SQL en passant des paramtres sparment du code SQL pg_fetch_row lit un enregistrement depuis rsultat d'une requte et stocke ses champs dans un tableau numrique pg_fetch_assoc lit un enregistrement depuis rsultat d'une requte et stocke ses champs dans un tableau associatif (les cls sont les noms des champs) pg_escape_string protge une chane de caractres pour l'insrer dans un champ texte pg_eld_name retourne le nom d'un champDocumentation :
http://fr.php.net/manual/fr/ref.pgsql.php
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
12 / 31
Interaction avec les bases de donnes
Les fonctions PHP spciques PostgreSQLpg_connect ouvre une connexion une base PostgreSQL pg_query excute une requte SQL pg_query_params excute une requte SQL en passant des paramtres sparment du code SQL pg_fetch_row lit un enregistrement depuis rsultat d'une requte et stocke ses champs dans un tableau numrique pg_fetch_assoc lit un enregistrement depuis rsultat d'une requte et stocke ses champs dans un tableau associatif (les cls sont les noms des champs) pg_escape_string protge une chane de caractres pour l'insrer dans un champ texte pg_eld_name retourne le nom d'un champDocumentation :
http://fr.php.net/manual/fr/ref.pgsql.php
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
12 / 31
Interaction avec les bases de donnes
Les fonctions PHP spciques PostgreSQLpg_connect ouvre une connexion une base PostgreSQL pg_query excute une requte SQL pg_query_params excute une requte SQL en passant des paramtres sparment du code SQL pg_fetch_row lit un enregistrement depuis rsultat d'une requte et stocke ses champs dans un tableau numrique pg_fetch_assoc lit un enregistrement depuis rsultat d'une requte et stocke ses champs dans un tableau associatif (les cls sont les noms des champs) pg_escape_string protge une chane de caractres pour l'insrer dans un champ texte pg_eld_name retourne le nom d'un champDocumentation :
http://fr.php.net/manual/fr/ref.pgsql.php
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
12 / 31
Interaction avec les bases de donnes
Les fonctions PHP spciques PostgreSQLpg_connect ouvre une connexion une base PostgreSQL pg_query excute une requte SQL pg_query_params excute une requte SQL en passant des paramtres sparment du code SQL pg_fetch_row lit un enregistrement depuis rsultat d'une requte et stocke ses champs dans un tableau numrique pg_fetch_assoc lit un enregistrement depuis rsultat d'une requte et stocke ses champs dans un tableau associatif (les cls sont les noms des champs) pg_escape_string protge une chane de caractres pour l'insrer dans un champ texte pg_eld_name retourne le nom d'un champDocumentation :
http://fr.php.net/manual/fr/ref.pgsql.php
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
12 / 31
Interaction avec les bases de donnes
Les fonctions PHP spciques PostgreSQLpg_connect ouvre une connexion une base PostgreSQL pg_query excute une requte SQL pg_query_params excute une requte SQL en passant des paramtres sparment du code SQL pg_fetch_row lit un enregistrement depuis rsultat d'une requte et stocke ses champs dans un tableau numrique pg_fetch_assoc lit un enregistrement depuis rsultat d'une requte et stocke ses champs dans un tableau associatif (les cls sont les noms des champs) pg_escape_string protge une chane de caractres pour l'insrer dans un champ texte pg_eld_name retourne le nom d'un champDocumentation :
http://fr.php.net/manual/fr/ref.pgsql.php
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
12 / 31
Interaction avec les bases de donnes
Les fonctions PHP spciques PostgreSQLpg_connect ouvre une connexion une base PostgreSQL pg_query excute une requte SQL pg_query_params excute une requte SQL en passant des paramtres sparment du code SQL pg_fetch_row lit un enregistrement depuis rsultat d'une requte et stocke ses champs dans un tableau numrique pg_fetch_assoc lit un enregistrement depuis rsultat d'une requte et stocke ses champs dans un tableau associatif (les cls sont les noms des champs) pg_escape_string protge une chane de caractres pour l'insrer dans un champ texte pg_eld_name retourne le nom d'un champDocumentation :
http://fr.php.net/manual/fr/ref.pgsql.php
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
12 / 31
Interaction avec les bases de donnes
Exemple d'interaction PHP/PostgreSQLRcupration d'enregistrements depuis une table
$dbconn if(!
=
pg_connect
$dbconn )
dbname = livres user = nmoyroud password = toto " ) ; { echo ' Erreur ' ; exit ; }
( " host = localhost
$result = pg_query ( $dbconn , " SELECT id , nom , email FROM auteurs " ) ; if ( ! $result ) { echo ' Erreur ' ; exit ; } echo '< table border ="1" cellspacing ="0" > ' ; echo 'Id Auteur Email ' ; while ( $row = pg_fetch_assoc ( $result ) ) { echo ' ' . $row [ 'id ' ] . ' ' ; echo ' ' . $row [ ' nom ' ] . ' ' ; echo ' ' . $row [ ' email ' ] . ' ' ;}
echo ' ' ;
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
13 / 31
Interaction avec les bases de donnes
Exemple d'interaction PHP/PostgreSQLInsertion d'enregistrements dans une table
$dbconn if// (!
=
pg_connect
$dbconn )en
dbname = livres user = nmoyroud password = toto " ) ; { echo ' Erreur ' ; exit ; }utilisant pg_query_params
( " host = localhost
$values = array ( $_POST [ ' nom ' ] , $_POST [ ' email ' ] ) ) ; $sql = ' INSERT INTO auteurs ( nom , email ) VALUES ($1 , $2 ) ' ; $result = pg_query_params ( $dbconn , $sql , $values ) ; if ( ! $result ) { echo " Erreur d ' insertion " ; exit ; }//
Exemple
$nom = pg_escape_string ( $_POST [ ' nom ' ] ) ; $email = pg_escape_string ( $_POST [ ' email ' ] ) ; $sql = " INSERT INTO auteurs ( nom , email ) VALUES (' $nom ',' $email ')" ; $result = pg_query ( $dbconn , $sql ) ; if ( ! $result ) { echo " Erreur d ' insertion " ; exit ; }
Exemple
en
utilisant
pg_query
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
14 / 31
Dveloppement d'interfaces web pour les bases de donnes
Plan
1
Programmation oriente objet avec PHP5 Interaction avec les bases de donnes Dveloppement d'interfaces web pour les bases de donnes Principes de fonctionnement des sessions
2
3
4
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
15 / 31
Dveloppement d'interfaces web pour les bases de donnes
Dveloppement d'interfaces webphpPgAdmin interface web en PHP pour l'administration et la gestion des bases PostgreSQL, elle est adapte pour ceux qui connaissent le fonctionnement des bases de donnes Pour des utilisateurs "non-informaticiens", il est ncessaire de prsenter le contenu des bases de manire plus conviviale, en cachant la complexit des SGBD Avec PHP, on peut pr-crire des requtes SQL et les faire excuter depuis une interface graphique accessible sur le web Les interfaces dveloppes permettront aux clients non seulement de visualiser les donnes, mais galement de les insrer / mettre jour grce l'utilisation de formulaires HTML
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
16 / 31
Dveloppement d'interfaces web pour les bases de donnes
Dveloppement d'interfaces webphpPgAdmin interface web en PHP pour l'administration et la gestion des bases PostgreSQL, elle est adapte pour ceux qui connaissent le fonctionnement des bases de donnes Pour des utilisateurs "non-informaticiens", il est ncessaire de prsenter le contenu des bases de manire plus conviviale, en cachant la complexit des SGBD Avec PHP, on peut pr-crire des requtes SQL et les faire excuter depuis une interface graphique accessible sur le web Les interfaces dveloppes permettront aux clients non seulement de visualiser les donnes, mais galement de les insrer / mettre jour grce l'utilisation de formulaires HTML
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
16 / 31
Dveloppement d'interfaces web pour les bases de donnes
Dveloppement d'interfaces webphpPgAdmin interface web en PHP pour l'administration et la gestion des bases PostgreSQL, elle est adapte pour ceux qui connaissent le fonctionnement des bases de donnes Pour des utilisateurs "non-informaticiens", il est ncessaire de prsenter le contenu des bases de manire plus conviviale, en cachant la complexit des SGBD Avec PHP, on peut pr-crire des requtes SQL et les faire excuter depuis une interface graphique accessible sur le web Les interfaces dveloppes permettront aux clients non seulement de visualiser les donnes, mais galement de les insrer / mettre jour grce l'utilisation de formulaires HTML
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
16 / 31
Dveloppement d'interfaces web pour les bases de donnes
Dveloppement d'interfaces webphpPgAdmin interface web en PHP pour l'administration et la gestion des bases PostgreSQL, elle est adapte pour ceux qui connaissent le fonctionnement des bases de donnes Pour des utilisateurs "non-informaticiens", il est ncessaire de prsenter le contenu des bases de manire plus conviviale, en cachant la complexit des SGBD Avec PHP, on peut pr-crire des requtes SQL et les faire excuter depuis une interface graphique accessible sur le web Les interfaces dveloppes permettront aux clients non seulement de visualiser les donnes, mais galement de les insrer / mettre jour grce l'utilisation de formulaires HTML
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
16 / 31
Dveloppement d'interfaces web pour les bases de donnes
Exemple d'interface webformAuthor.php : formulaire de saisie de valeurs< form
name=" formAuthor " action=" insertAuthor . php " method=" POST
"> Nom :
Email :
Pays : < option value="1">USA < option value="2">
France < option value="3"> Angleterre
< input type=" submit " value=" Envoyez " />
Ce formulaire envoie les valeurs saisies au script PHP insertAuthor.php Deux champs texte permettent la saisie libre du nom et de l'email Un champ pays permet de choisir parmi une liste pr-dnie : la valeur envoye est celle prcise dans l'attribut value de l'option slectionneNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 17 / 31
Dveloppement d'interfaces web pour les bases de donnes
Exemple d'interface webformAuthor.php : formulaire de saisie de valeurs< form
name=" formAuthor " action=" insertAuthor . php " method=" POST
"> Nom :
Email :
Pays : < option value="1">USA < option value="2">
France < option value="3"> Angleterre
< input type=" submit " value=" Envoyez " />
Ce formulaire envoie les valeurs saisies au script PHP insertAuthor.php Deux champs texte permettent la saisie libre du nom et de l'email Un champ pays permet de choisir parmi une liste pr-dnie : la valeur envoye est celle prcise dans l'attribut value de l'option slectionneNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 17 / 31
Dveloppement d'interfaces web pour les bases de donnes
Exemple d'interface webformAuthor.php : formulaire de saisie de valeurs< form
name=" formAuthor " action=" insertAuthor . php " method=" POST
"> Nom :
Email :
Pays : < option value="1">USA < option value="2">
France < option value="3"> Angleterre
< input type=" submit " value=" Envoyez " />
Ce formulaire envoie les valeurs saisies au script PHP insertAuthor.php Deux champs texte permettent la saisie libre du nom et de l'email Un champ pays permet de choisir parmi une liste pr-dnie : la valeur envoye est celle prcise dans l'attribut value de l'option slectionneNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 17 / 31
Dveloppement d'interfaces web pour les bases de donnes
Exemple d'interface webCration dynamique de la liste pays
$result = pg_query ( $dbconn , " SELECT id , nom_pays FROM pays " ) ; if ( ! $result ) { echo ' Erreur ' ; exit ; } echo '< select name =" pays "> ' ; while ( $row = pg_fetch_assoc ( $result ) ) { echo '< option value =" ' . $row [ 'id ' ] . '" > ' ; echo $row [ ' nom_pays ' ] ; echo ' ' ;}
echo ' ' ;
Exemple d'extraction de la liste des pays depuis une table de la base PHP est utilis ici en amont du formulaire de saisie
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
18 / 31
Dveloppement d'interfaces web pour les bases de donnes
Exemple d'interface webCration dynamique de la liste pays
$result = pg_query ( $dbconn , " SELECT id , nom_pays FROM pays " ) ; if ( ! $result ) { echo ' Erreur ' ; exit ; } echo '< select name =" pays "> ' ; while ( $row = pg_fetch_assoc ( $result ) ) { echo '< option value =" ' . $row [ 'id ' ] . '" > ' ; echo $row [ ' nom_pays ' ] ; echo ' ' ;}
echo ' ' ;
Exemple d'extraction de la liste des pays depuis une table de la base PHP est utilis ici en amont du formulaire de saisie
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
18 / 31
Dveloppement d'interfaces web pour les bases de donnes
Exemple d'interface webinsertAuthor.php : traitement des valeurs saisies
$dbconn if(!
=
pg_connect
$dbconn )
dbname = livres user = nmoyroud password = toto " ) ; { echo ' Erreur ' ; exit ; }
( " host = localhost
$values = array ( $_POST [ ' nom ' ] , $_POST [ ' email ' ] , $_POST [ ' pays ' ] ) ; $sql = ' INSERT INTO auteurs ( nom , email , id_pays ) VALUES ($1 ,$2 , $3 ) ' ; $result = pg_query_params ( $dbconn , $sql , $values ) ; if ( ! $result ) { echo " Erreur d ' insertion " ; exit ; } echo ' Informations ajoutees dans la base < br /> ' ; echo ' Ajouter un autre auteur ' ;
Les valeurs saisies dans le formulaire sont stockes dans la base de donnes avec un message de conrmation Un lien permet de revenir au formulaire de saisie PHP est utilis ici en aval du formulaire de saisieNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 19 / 31
Dveloppement d'interfaces web pour les bases de donnes
Exemple d'interface webinsertAuthor.php : traitement des valeurs saisies
$dbconn if(!
=
pg_connect
$dbconn )
dbname = livres user = nmoyroud password = toto " ) ; { echo ' Erreur ' ; exit ; }
( " host = localhost
$values = array ( $_POST [ ' nom ' ] , $_POST [ ' email ' ] , $_POST [ ' pays ' ] ) ; $sql = ' INSERT INTO auteurs ( nom , email , id_pays ) VALUES ($1 ,$2 , $3 ) ' ; $result = pg_query_params ( $dbconn , $sql , $values ) ; if ( ! $result ) { echo " Erreur d ' insertion " ; exit ; } echo ' Informations ajoutees dans la base < br /> ' ; echo ' Ajouter un autre auteur ' ;
Les valeurs saisies dans le formulaire sont stockes dans la base de donnes avec un message de conrmation Un lien permet de revenir au formulaire de saisie PHP est utilis ici en aval du formulaire de saisieNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 19 / 31
Dveloppement d'interfaces web pour les bases de donnes
Exemple d'interface webinsertAuthor.php : traitement des valeurs saisies
$dbconn if(!
=
pg_connect
$dbconn )
dbname = livres user = nmoyroud password = toto " ) ; { echo ' Erreur ' ; exit ; }
( " host = localhost
$values = array ( $_POST [ ' nom ' ] , $_POST [ ' email ' ] , $_POST [ ' pays ' ] ) ; $sql = ' INSERT INTO auteurs ( nom , email , id_pays ) VALUES ($1 ,$2 , $3 ) ' ; $result = pg_query_params ( $dbconn , $sql , $values ) ; if ( ! $result ) { echo " Erreur d ' insertion " ; exit ; } echo ' Informations ajoutees dans la base < br /> ' ; echo ' Ajouter un autre auteur ' ;
Les valeurs saisies dans le formulaire sont stockes dans la base de donnes avec un message de conrmation Un lien permet de revenir au formulaire de saisie PHP est utilis ici en aval du formulaire de saisieNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 19 / 31
Dveloppement d'interfaces web pour les bases de donnes
Exemple d'interface webinsertAuthor.php : ajout du contrle des valeurs saisies
$nom = trim ( $_POST [ ' nom ' ] ) ; $email = trim ( $_POST [ ' email ' ] ) ; if ( empty ( $nom ) | | empty ( $email ) ) { echo ' Veuillez saisir un nom et un email .< br /> ' ; echo ' Recommencer la saisie ' ;}
else
{...
Traitement de la requete
...}
On contrle les valeurs nom et email qui sont obligatoires dans la base de donnes On pourrait ajouter le contrle du format de l'email avec une fonction qui appelerait par exemple une expression rgulire
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
20 / 31
Dveloppement d'interfaces web pour les bases de donnes
Exemple d'interface webinsertAuthor.php : ajout du contrle des valeurs saisies
$nom = trim ( $_POST [ ' nom ' ] ) ; $email = trim ( $_POST [ ' email ' ] ) ; if ( empty ( $nom ) | | empty ( $email ) ) { echo ' Veuillez saisir un nom et un email .< br /> ' ; echo ' Recommencer la saisie ' ;}
else
{...
Traitement de la requete
...}
On contrle les valeurs nom et email qui sont obligatoires dans la base de donnes On pourrait ajouter le contrle du format de l'email avec une fonction qui appelerait par exemple une expression rgulire
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
20 / 31
Dveloppement d'interfaces web pour les bases de donnes
Utilisation de la classe HTML_QuickFormDans les exemples prcdents, on a cr le formulaire directement en crivant du HTML dans le code PHP, ce qui le rend peu lisible et dicile dbugguer On a galement gr la vrication des valeurs, mais uniquement du ct du serveur : l'utilisateur est oblig d'envoyer le formulaire avant de voir ses erreurs Pour amliorer notre code et simplier la cration des interfaces, on peut utiliser une classe PHP qui est disponible dans le dpt PEAR : HTML_QuickForm Elle permet de gnrer des formulaires et leur traitement avec la syntaxe objet de PHPhttp://pear.php.net/package/HTML_QuickForm http://php.developpez.com/cours/pear/html-quickform/ http://www.midnighthax.com/quickform.php
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
21 / 31
Dveloppement d'interfaces web pour les bases de donnes
Utilisation de la classe HTML_QuickFormDans les exemples prcdents, on a cr le formulaire directement en crivant du HTML dans le code PHP, ce qui le rend peu lisible et dicile dbugguer On a galement gr la vrication des valeurs, mais uniquement du ct du serveur : l'utilisateur est oblig d'envoyer le formulaire avant de voir ses erreurs Pour amliorer notre code et simplier la cration des interfaces, on peut utiliser une classe PHP qui est disponible dans le dpt PEAR : HTML_QuickForm Elle permet de gnrer des formulaires et leur traitement avec la syntaxe objet de PHPhttp://pear.php.net/package/HTML_QuickForm http://php.developpez.com/cours/pear/html-quickform/ http://www.midnighthax.com/quickform.php
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
21 / 31
Dveloppement d'interfaces web pour les bases de donnes
Utilisation de la classe HTML_QuickFormDans les exemples prcdents, on a cr le formulaire directement en crivant du HTML dans le code PHP, ce qui le rend peu lisible et dicile dbugguer On a galement gr la vrication des valeurs, mais uniquement du ct du serveur : l'utilisateur est oblig d'envoyer le formulaire avant de voir ses erreurs Pour amliorer notre code et simplier la cration des interfaces, on peut utiliser une classe PHP qui est disponible dans le dpt PEAR : HTML_QuickForm Elle permet de gnrer des formulaires et leur traitement avec la syntaxe objet de PHPhttp://pear.php.net/package/HTML_QuickForm http://php.developpez.com/cours/pear/html-quickform/ http://www.midnighthax.com/quickform.php
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
21 / 31
Dveloppement d'interfaces web pour les bases de donnes
Utilisation de la classe HTML_QuickFormDans les exemples prcdents, on a cr le formulaire directement en crivant du HTML dans le code PHP, ce qui le rend peu lisible et dicile dbugguer On a galement gr la vrication des valeurs, mais uniquement du ct du serveur : l'utilisateur est oblig d'envoyer le formulaire avant de voir ses erreurs Pour amliorer notre code et simplier la cration des interfaces, on peut utiliser une classe PHP qui est disponible dans le dpt PEAR : HTML_QuickForm Elle permet de gnrer des formulaires et leur traitement avec la syntaxe objet de PHPhttp://pear.php.net/package/HTML_QuickForm http://php.developpez.com/cours/pear/html-quickform/ http://www.midnighthax.com/quickform.php
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
21 / 31
Dveloppement d'interfaces web pour les bases de donnes
Exemple d'utilisation de HTML_QuickFormformAuthor.php : formulaire avec HTML_QuickFormrequire_once ' HTML / QuickForm . php ' ; $form = new HTML_QuickForm ( ' formAuthor ' ) ; $ f o r m s e t D e f a u l t s ( a r r a y ( ' n o m ' => ' I s a a c A s i m o v ' , > ' e m a i l ' => ' a s i m o v @ s c i - f i . p a ' , ' p a y s ' => ' 1 ' ) ) ; $form a d d E l e m e n t ( ' header ' , null , ' Auteur ' ) ; > $ f o r m a d d E l e m e n t ( ' t e x t ' , ' n o m ' , ' N o m : ' , a r r a y ( ' s i z e ' =>20, ' m a x l e n g t h ' = > 3 0 ) ) ; > $ f o r m a d d E l e m e n t ( ' t e x t ' , ' e m a i l ' , ' E m a i l : ' , a r r a y ( ' s i z e ' =>30, ' m a x l e n g t h ' = > 5 0 ) ) ; > $form addElement ( ' select ' , ' pays ' , ' Pays : ' , $liste_pays ) ; > $form a d d E l e m e n t ( ' submit ' , null , ' E n v o y e r ' ) ; > $form applyFilter ( ' __ALL__ ' , ' trim ' ) ; > $form applyFilter ( ' __ALL__ ' , ' p g _ e s c a p e _ s t r i n g ' ) ; > $form a d d R u l e ( ' name ' , ' S a i s i s s e z un nom ' , ' r e q u i r e d ' , null , ' client ' ) ; > $form a d d R u l e ( ' email ' , ' S a i s i s s e z un email ' , ' r e q u i r e d ' , null , ' client ' ) ; > $form addRule ( ' email ' , ' Email non valide ' , ' regex ' , > ' / ^ [ a - z0 - 9 _ \ . - ] + @ [ a - z0 - 9 _ - ] + \ . [ a - z ] { 2 } $ / ' , ' c l i e n t ' ) ; if} (
$ f o r m v a l i d a t e ( ) ) { // s i > include ' insertAuthor . php ' ; exit ;(); // affichage
les
valeurs
sont
validees ,
on
insere
$form display >
du
formulaire
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
22 / 31
Dveloppement d'interfaces web pour les bases de donnes
Utilisation de la classe HTML_QuickFormmthode setDefaults ache des valeurs par dfaut dans les champs du formulaire mthode addElement ajoute un champ dans le formulaire, avec le type prcis dans le 1er paramtre et le nom prcis dans le 2me mthode applyFilter applique une fonction de traitement sur le champ prcis (__ALL__ pour tous les champs) mthode addRule ajoute une rgle de vrication de la valeur saisie dans un champ (avec possibilit de validation ct client, sans envoi du formulaire) mthode validate retourne vrai si les valeurs saisies sont valides mthode display ache le formulaire
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
23 / 31
Dveloppement d'interfaces web pour les bases de donnes
Utilisation de la classe HTML_QuickFormmthode setDefaults ache des valeurs par dfaut dans les champs du formulaire mthode addElement ajoute un champ dans le formulaire, avec le type prcis dans le 1er paramtre et le nom prcis dans le 2me mthode applyFilter applique une fonction de traitement sur le champ prcis (__ALL__ pour tous les champs) mthode addRule ajoute une rgle de vrication de la valeur saisie dans un champ (avec possibilit de validation ct client, sans envoi du formulaire) mthode validate retourne vrai si les valeurs saisies sont valides mthode display ache le formulaire
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
23 / 31
Dveloppement d'interfaces web pour les bases de donnes
Utilisation de la classe HTML_QuickFormmthode setDefaults ache des valeurs par dfaut dans les champs du formulaire mthode addElement ajoute un champ dans le formulaire, avec le type prcis dans le 1er paramtre et le nom prcis dans le 2me mthode applyFilter applique une fonction de traitement sur le champ prcis (__ALL__ pour tous les champs) mthode addRule ajoute une rgle de vrication de la valeur saisie dans un champ (avec possibilit de validation ct client, sans envoi du formulaire) mthode validate retourne vrai si les valeurs saisies sont valides mthode display ache le formulaire
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
23 / 31
Dveloppement d'interfaces web pour les bases de donnes
Utilisation de la classe HTML_QuickFormmthode setDefaults ache des valeurs par dfaut dans les champs du formulaire mthode addElement ajoute un champ dans le formulaire, avec le type prcis dans le 1er paramtre et le nom prcis dans le 2me mthode applyFilter applique une fonction de traitement sur le champ prcis (__ALL__ pour tous les champs) mthode addRule ajoute une rgle de vrication de la valeur saisie dans un champ (avec possibilit de validation ct client, sans envoi du formulaire) mthode validate retourne vrai si les valeurs saisies sont valides mthode display ache le formulaire
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
23 / 31
Dveloppement d'interfaces web pour les bases de donnes
Utilisation de la classe HTML_QuickFormmthode setDefaults ache des valeurs par dfaut dans les champs du formulaire mthode addElement ajoute un champ dans le formulaire, avec le type prcis dans le 1er paramtre et le nom prcis dans le 2me mthode applyFilter applique une fonction de traitement sur le champ prcis (__ALL__ pour tous les champs) mthode addRule ajoute une rgle de vrication de la valeur saisie dans un champ (avec possibilit de validation ct client, sans envoi du formulaire) mthode validate retourne vrai si les valeurs saisies sont valides mthode display ache le formulaire
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
23 / 31
Dveloppement d'interfaces web pour les bases de donnes
Utilisation de la classe HTML_QuickFormmthode setDefaults ache des valeurs par dfaut dans les champs du formulaire mthode addElement ajoute un champ dans le formulaire, avec le type prcis dans le 1er paramtre et le nom prcis dans le 2me mthode applyFilter applique une fonction de traitement sur le champ prcis (__ALL__ pour tous les champs) mthode addRule ajoute une rgle de vrication de la valeur saisie dans un champ (avec possibilit de validation ct client, sans envoi du formulaire) mthode validate retourne vrai si les valeurs saisies sont valides mthode display ache le formulaire
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
23 / 31
Dveloppement d'interfaces web pour les bases de donnes
Utilisation de la classe HTML_QuickFormExemple de listes droulantes lies avec hierselectrequire_once ' HTML / QuickForm . php ' ; $form = new HTML_QuickForm ( ' example ' ) ; $select1 $select1 $select1 $select2 $select2 $select2 $select2 $select2 $select2 $select2[0] [1] [2] = = =
[0][0] [0][1] [0][2] [1][1] [1][2] [2][1] [2][2]
' Science - fiction ' ; ' Humour ' ; ' Litterature francaise ' ; = $select2 [ 1 ] [ 0 ] = $select2 = ' Isaac Asimov ' ; = ' Douglas Adams ' ; = ' Pierre Desproges ' ; = ' Raymond Devos ' ; = ' Victor Hugo ' ; = ' Emile Zola ' ;
[2][0]
=
' --- Auteur ---' ;
$sel = $form a d d E l e m e n t ( ' h i e r s e l e c t ' , ' a u t e u r s ' , ' C h o i s i s s e z un auteur ' ) ; > $sel s e t O p t i o n s ( array ( $select1 , $ s e l e c t 2 ) ) ; > $ f o r m d i s p l a y ( ) ; // a f f i c h a g e du f o r m u l a i r e >
HTML_QuickForm ajoute des lments supplmentaires au HTML hierselect permet de raliser des listes droulantes lies : les valeurs aches dans la liste du dessous dpendront de la valeur choisie dans celle du dessus (avec autant de niveaux que l'on souhaite)Nicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 24 / 31
Dveloppement d'interfaces web pour les bases de donnes
Utilisation de la classe HTML_QuickFormExemple de listes droulantes lies avec hierselectrequire_once ' HTML / QuickForm . php ' ; $form = new HTML_QuickForm ( ' example ' ) ; $select1 $select1 $select1 $select2 $select2 $select2 $select2 $select2 $select2 $select2[0] [1] [2] = = =
[0][0] [0][1] [0][2] [1][1] [1][2] [2][1] [2][2]
' Science - fiction ' ; ' Humour ' ; ' Litterature francaise ' ; = $select2 [ 1 ] [ 0 ] = $select2 = ' Isaac Asimov ' ; = ' Douglas Adams ' ; = ' Pierre Desproges ' ; = ' Raymond Devos ' ; = ' Victor Hugo ' ; = ' Emile Zola ' ;
[2][0]
=
' --- Auteur ---' ;
$sel = $form a d d E l e m e n t ( ' h i e r s e l e c t ' , ' a u t e u r s ' , ' C h o i s i s s e z un auteur ' ) ; > $sel s e t O p t i o n s ( array ( $select1 , $ s e l e c t 2 ) ) ; > $ f o r m d i s p l a y ( ) ; // a f f i c h a g e du f o r m u l a i r e >
HTML_QuickForm ajoute des lments supplmentaires au HTML hierselect permet de raliser des listes droulantes lies : les valeurs aches dans la liste du dessous dpendront de la valeur choisie dans celle du dessus (avec autant de niveaux que l'on souhaite)Nicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 24 / 31
Principes de fonctionnement des sessions
Plan
1
Programmation oriente objet avec PHP5 Interaction avec les bases de donnes Dveloppement d'interfaces web pour les bases de donnes Principes de fonctionnement des sessions
2
3
4
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
25 / 31
Principes de fonctionnement des sessions
Les limites du protocole HTTPLe protocole HTTP est sans tat ("stateless") : pour le serveur chaque requte reue est indpendante de la prcdente et de la suivante Quand on dveloppe une application sur le web, on a besoin d'un mcanisme qui permet de se souvenir des actions ralises prcdemment par un utilisateur 1re rponse : le cookie qui permet de stocker sur l'ordinateur du client un petit chier texte contenant les informations Le cookie sera ensuite transmis dans l'en-tte de toutes les requtes HTTP vers le domaine associ et ses valeurs accessibles en PHP par la variable $_COOKIE Limites : faible capacit de stockage, pas toujours accept par les clients, transit de toutes les informations chaque requte Problme de scurit : le cookie est stock en clair sur le client et peut donc tre modi facilement par celui-ciNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 26 / 31
Principes de fonctionnement des sessions
Les limites du protocole HTTPLe protocole HTTP est sans tat ("stateless") : pour le serveur chaque requte reue est indpendante de la prcdente et de la suivante Quand on dveloppe une application sur le web, on a besoin d'un mcanisme qui permet de se souvenir des actions ralises prcdemment par un utilisateur 1re rponse : le cookie qui permet de stocker sur l'ordinateur du client un petit chier texte contenant les informations Le cookie sera ensuite transmis dans l'en-tte de toutes les requtes HTTP vers le domaine associ et ses valeurs accessibles en PHP par la variable $_COOKIE Limites : faible capacit de stockage, pas toujours accept par les clients, transit de toutes les informations chaque requte Problme de scurit : le cookie est stock en clair sur le client et peut donc tre modi facilement par celui-ciNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 26 / 31
Principes de fonctionnement des sessions
Les limites du protocole HTTPLe protocole HTTP est sans tat ("stateless") : pour le serveur chaque requte reue est indpendante de la prcdente et de la suivante Quand on dveloppe une application sur le web, on a besoin d'un mcanisme qui permet de se souvenir des actions ralises prcdemment par un utilisateur 1re rponse : le cookie qui permet de stocker sur l'ordinateur du client un petit chier texte contenant les informations Le cookie sera ensuite transmis dans l'en-tte de toutes les requtes HTTP vers le domaine associ et ses valeurs accessibles en PHP par la variable $_COOKIE Limites : faible capacit de stockage, pas toujours accept par les clients, transit de toutes les informations chaque requte Problme de scurit : le cookie est stock en clair sur le client et peut donc tre modi facilement par celui-ciNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 26 / 31
Principes de fonctionnement des sessions
Les limites du protocole HTTPLe protocole HTTP est sans tat ("stateless") : pour le serveur chaque requte reue est indpendante de la prcdente et de la suivante Quand on dveloppe une application sur le web, on a besoin d'un mcanisme qui permet de se souvenir des actions ralises prcdemment par un utilisateur 1re rponse : le cookie qui permet de stocker sur l'ordinateur du client un petit chier texte contenant les informations Le cookie sera ensuite transmis dans l'en-tte de toutes les requtes HTTP vers le domaine associ et ses valeurs accessibles en PHP par la variable $_COOKIE Limites : faible capacit de stockage, pas toujours accept par les clients, transit de toutes les informations chaque requte Problme de scurit : le cookie est stock en clair sur le client et peut donc tre modi facilement par celui-ciNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 26 / 31
Principes de fonctionnement des sessions
Les limites du protocole HTTPLe protocole HTTP est sans tat ("stateless") : pour le serveur chaque requte reue est indpendante de la prcdente et de la suivante Quand on dveloppe une application sur le web, on a besoin d'un mcanisme qui permet de se souvenir des actions ralises prcdemment par un utilisateur 1re rponse : le cookie qui permet de stocker sur l'ordinateur du client un petit chier texte contenant les informations Le cookie sera ensuite transmis dans l'en-tte de toutes les requtes HTTP vers le domaine associ et ses valeurs accessibles en PHP par la variable $_COOKIE Limites : faible capacit de stockage, pas toujours accept par les clients, transit de toutes les informations chaque requte Problme de scurit : le cookie est stock en clair sur le client et peut donc tre modi facilement par celui-ciNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 26 / 31
Principes de fonctionnement des sessions
Les limites du protocole HTTPLe protocole HTTP est sans tat ("stateless") : pour le serveur chaque requte reue est indpendante de la prcdente et de la suivante Quand on dveloppe une application sur le web, on a besoin d'un mcanisme qui permet de se souvenir des actions ralises prcdemment par un utilisateur 1re rponse : le cookie qui permet de stocker sur l'ordinateur du client un petit chier texte contenant les informations Le cookie sera ensuite transmis dans l'en-tte de toutes les requtes HTTP vers le domaine associ et ses valeurs accessibles en PHP par la variable $_COOKIE Limites : faible capacit de stockage, pas toujours accept par les clients, transit de toutes les informations chaque requte Problme de scurit : le cookie est stock en clair sur le client et peut donc tre modi facilement par celui-ciNicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 26 / 31
Principes de fonctionnement des sessions
Le mcanisme des sessions avec PHPPour pallier aux limites des cookies, PHP propose le mcanisme des sessions Les informations conserver sont stockes sur le serveur et un identiant de session de 32 caractres est gnr alatoirement Cet identiant est ensuite le seul lment envoy et stock ct client Pour permettre l'accs aux informations, l'identiant est transmis vers le serveur soit grce un cookie, soit dans l'URL des pages si les cookies ne sont pas accepts par le client Tout le mcanisme est gr automatiquement par PHP, vous devez simplement dmarrez une session pour l'utiliser Une session a une dure de vie limite (par dfaut 30 minutes) et se termine galement quand l'utilisateur ferme son navigateurhttp://php.developpez.com/cours/sessions/ http://beaussier.developpez.com/articles/php/session/Nicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 27 / 31
Principes de fonctionnement des sessions
Le mcanisme des sessions avec PHPPour pallier aux limites des cookies, PHP propose le mcanisme des sessions Les informations conserver sont stockes sur le serveur et un identiant de session de 32 caractres est gnr alatoirement Cet identiant est ensuite le seul lment envoy et stock ct client Pour permettre l'accs aux informations, l'identiant est transmis vers le serveur soit grce un cookie, soit dans l'URL des pages si les cookies ne sont pas accepts par le client Tout le mcanisme est gr automatiquement par PHP, vous devez simplement dmarrez une session pour l'utiliser Une session a une dure de vie limite (par dfaut 30 minutes) et se termine galement quand l'utilisateur ferme son navigateurhttp://php.developpez.com/cours/sessions/ http://beaussier.developpez.com/articles/php/session/Nicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 27 / 31
Principes de fonctionnement des sessions
Le mcanisme des sessions avec PHPPour pallier aux limites des cookies, PHP propose le mcanisme des sessions Les informations conserver sont stockes sur le serveur et un identiant de session de 32 caractres est gnr alatoirement Cet identiant est ensuite le seul lment envoy et stock ct client Pour permettre l'accs aux informations, l'identiant est transmis vers le serveur soit grce un cookie, soit dans l'URL des pages si les cookies ne sont pas accepts par le client Tout le mcanisme est gr automatiquement par PHP, vous devez simplement dmarrez une session pour l'utiliser Une session a une dure de vie limite (par dfaut 30 minutes) et se termine galement quand l'utilisateur ferme son navigateurhttp://php.developpez.com/cours/sessions/ http://beaussier.developpez.com/articles/php/session/Nicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 27 / 31
Principes de fonctionnement des sessions
Le mcanisme des sessions avec PHPPour pallier aux limites des cookies, PHP propose le mcanisme des sessions Les informations conserver sont stockes sur le serveur et un identiant de session de 32 caractres est gnr alatoirement Cet identiant est ensuite le seul lment envoy et stock ct client Pour permettre l'accs aux informations, l'identiant est transmis vers le serveur soit grce un cookie, soit dans l'URL des pages si les cookies ne sont pas accepts par le client Tout le mcanisme est gr automatiquement par PHP, vous devez simplement dmarrez une session pour l'utiliser Une session a une dure de vie limite (par dfaut 30 minutes) et se termine galement quand l'utilisateur ferme son navigateurhttp://php.developpez.com/cours/sessions/ http://beaussier.developpez.com/articles/php/session/Nicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 27 / 31
Principes de fonctionnement des sessions
Le mcanisme des sessions avec PHPPour pallier aux limites des cookies, PHP propose le mcanisme des sessions Les informations conserver sont stockes sur le serveur et un identiant de session de 32 caractres est gnr alatoirement Cet identiant est ensuite le seul lment envoy et stock ct client Pour permettre l'accs aux informations, l'identiant est transmis vers le serveur soit grce un cookie, soit dans l'URL des pages si les cookies ne sont pas accepts par le client Tout le mcanisme est gr automatiquement par PHP, vous devez simplement dmarrez une session pour l'utiliser Une session a une dure de vie limite (par dfaut 30 minutes) et se termine galement quand l'utilisateur ferme son navigateurhttp://php.developpez.com/cours/sessions/ http://beaussier.developpez.com/articles/php/session/Nicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 27 / 31
Principes de fonctionnement des sessions
Le mcanisme des sessions avec PHPPour pallier aux limites des cookies, PHP propose le mcanisme des sessions Les informations conserver sont stockes sur le serveur et un identiant de session de 32 caractres est gnr alatoirement Cet identiant est ensuite le seul lment envoy et stock ct client Pour permettre l'accs aux informations, l'identiant est transmis vers le serveur soit grce un cookie, soit dans l'URL des pages si les cookies ne sont pas accepts par le client Tout le mcanisme est gr automatiquement par PHP, vous devez simplement dmarrez une session pour l'utiliser Une session a une dure de vie limite (par dfaut 30 minutes) et se termine galement quand l'utilisateur ferme son navigateurhttp://php.developpez.com/cours/sessions/ http://beaussier.developpez.com/articles/php/session/Nicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 27 / 31
Principes de fonctionnement des sessions
Exemple simple d'utilisation d'une sessionsessionStart.php : cration de session et enregistrement d'une variable
session_start ( ) ; $_SESSION [ ' prenom ' ]
=
' Nicolas ' ;
sessionRead.php : ouverture de session et rcupration d'une variable
session_start ( ) ; if ( isset ( $_SESSION [ ' prenom ' ] ) ) { echo $_SESSION [ ' prenom ' ] ; } else { echo ' Aucun prenom enregistre . ' ; }
La session est cre ou r-ouverte avec la fonction session_start() Les informations sont stockes dans le tableau $_SESSION
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
28 / 31
Principes de fonctionnement des sessions
Exemple simple d'utilisation d'une sessionsessionStart.php : cration de session et enregistrement d'une variable
session_start ( ) ; $_SESSION [ ' prenom ' ]
=
' Nicolas ' ;
sessionRead.php : ouverture de session et rcupration d'une variable
session_start ( ) ; if ( isset ( $_SESSION [ ' prenom ' ] ) ) { echo $_SESSION [ ' prenom ' ] ; } else { echo ' Aucun prenom enregistre . ' ; }
La session est cre ou r-ouverte avec la fonction session_start() Les informations sont stockes dans le tableau $_SESSION
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
28 / 31
Principes de fonctionnement des sessions
Exemple simple d'utilisation d'une session
sessionSuppr.php : suppression de variables et de la session
session_start ( ) ; unset ( $_SESSION [ ' prenom ' ] ) ; / / s u p p r e s s i o n d ' u n e v a r i a b l e $_SESSION = array ( ) ; / / s u p p r e s s i o n d e t o u t e s l e s v a r i a b l e s session_destroy ( ) ; / / d e s t r u c t i o n c o m p l e t e d e l a s e s s i o n
Ne jamais faire unset($_SESSION) car cela rend impossible tout accs ultrieur aux variables de session jusqu' sa destruction
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
29 / 31
Principes de fonctionnement des sessions
Utilisation de sessions pour l'authenticationLes sessions permettent de mettre en place un systme d'authentication pour l'accs des fonctionnalits sensibles (ajout, suppression et modication de donnes) On va utiliser pour le TP une classe AccessControl qui permet de grer l'authentication d'un utilisateur grce un formulaire L'appel de la classe doit tre inclus dans toutes les pages que l'on souhaite scuriser Cette classe vrie que l'utilisateur est connect chaque fois qu'il demande l'accs une de ces pages La liste des utilisateurs autoriss, leur mot de passe et leur niveau d'accs sont stocks dans une base de donnes
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
30 / 31
Principes de fonctionnement des sessions
Utilisation de sessions pour l'authenticationLes sessions permettent de mettre en place un systme d'authentication pour l'accs des fonctionnalits sensibles (ajout, suppression et modication de donnes) On va utiliser pour le TP une classe AccessControl qui permet de grer l'authentication d'un utilisateur grce un formulaire L'appel de la classe doit tre inclus dans toutes les pages que l'on souhaite scuriser Cette classe vrie que l'utilisateur est connect chaque fois qu'il demande l'accs une de ces pages La liste des utilisateurs autoriss, leur mot de passe et leur niveau d'accs sont stocks dans une base de donnes
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
30 / 31
Principes de fonctionnement des sessions
Utilisation de sessions pour l'authenticationLes sessions permettent de mettre en place un systme d'authentication pour l'accs des fonctionnalits sensibles (ajout, suppression et modication de donnes) On va utiliser pour le TP une classe AccessControl qui permet de grer l'authentication d'un utilisateur grce un formulaire L'appel de la classe doit tre inclus dans toutes les pages que l'on souhaite scuriser Cette classe vrie que l'utilisateur est connect chaque fois qu'il demande l'accs une de ces pages La liste des utilisateurs autoriss, leur mot de passe et leur niveau d'accs sont stocks dans une base de donnes
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
30 / 31
Principes de fonctionnement des sessions
Utilisation de sessions pour l'authenticationLes sessions permettent de mettre en place un systme d'authentication pour l'accs des fonctionnalits sensibles (ajout, suppression et modication de donnes) On va utiliser pour le TP une classe AccessControl qui permet de grer l'authentication d'un utilisateur grce un formulaire L'appel de la classe doit tre inclus dans toutes les pages que l'on souhaite scuriser Cette classe vrie que l'utilisateur est connect chaque fois qu'il demande l'accs une de ces pages La liste des utilisateurs autoriss, leur mot de passe et leur niveau d'accs sont stocks dans une base de donnes
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
30 / 31
Principes de fonctionnement des sessions
Utilisation de sessions pour l'authenticationLes sessions permettent de mettre en place un systme d'authentication pour l'accs des fonctionnalits sensibles (ajout, suppression et modication de donnes) On va utiliser pour le TP une classe AccessControl qui permet de grer l'authentication d'un utilisateur grce un formulaire L'appel de la classe doit tre inclus dans toutes les pages que l'on souhaite scuriser Cette classe vrie que l'utilisateur est connect chaque fois qu'il demande l'accs une de ces pages La liste des utilisateurs autoriss, leur mot de passe et leur niveau d'accs sont stocks dans une base de donnes
Nicolas Moyroud
(Cemagref)
POO et interfaces web en PHP
26 Juin 2008
30 / 31
Principes de fonctionnement des sessions
Utilisation de la classe AccessControlCode inclure pour protger l'accs une page
require_once ' HTTP / AccessControl . class . php ' ; $acl = new AccessControl ( $dbconn , ' utilisateurs ' $acl >run ( ) ;
,1);
1er paramtre variable qui contient la connexion la base de donnes 2me paramtre nom de la table qui contient les utilisateurs (ses colonnes sont : id, login, password, userlevel) 3me paramtre niveau maximum que doit avoir l'utilisateur pour accder cette page (les utilisateurs de niveau 0 ont le maximum de droits)Nicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 31 / 31
Principes de fonctionnement des sessions
Utilisation de la classe AccessControlCode inclure pour protger l'accs une page
require_once ' HTTP / AccessControl . class . php ' ; $acl = new AccessControl ( $dbconn , ' utilisateurs ' $acl >run ( ) ;
,1);
1er paramtre variable qui contient la connexion la base de donnes 2me paramtre nom de la table qui contient les utilisateurs (ses colonnes sont : id, login, password, userlevel) 3me paramtre niveau maximum que doit avoir l'utilisateur pour accder cette page (les utilisateurs de niveau 0 ont le maximum de droits)Nicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 31 / 31
Principes de fonctionnement des sessions
Utilisation de la classe AccessControlCode inclure pour protger l'accs une page
require_once ' HTTP / AccessControl . class . php ' ; $acl = new AccessControl ( $dbconn , ' utilisateurs ' $acl >run ( ) ;
,1);
1er paramtre variable qui contient la connexion la base de donnes 2me paramtre nom de la table qui contient les utilisateurs (ses colonnes sont : id, login, password, userlevel) 3me paramtre niveau maximum que doit avoir l'utilisateur pour accder cette page (les utilisateurs de niveau 0 ont le maximum de droits)Nicolas Moyroud (Cemagref) POO et interfaces web en PHP 26 Juin 2008 31 / 31