cours poo et ihm en php

Upload: khalidihajar

Post on 09-Jul-2015

247 views

Category:

Documents


2 download

TRANSCRIPT

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