Vous êtes sur la page 1sur 110

Développement Web

LPTI 2

1
SOMMAIRE
I. Introduction aux pages web dynamiques

II. Programmation web avec PHP

III. Accès aux sources de données

IV. Les systèmes de Gestion de contenu (CMS)

2
Développement Web

I. Introduction aux pages web dynamiques

3
Introduction aux pages web dynamiques

● Communication client/serveur
● Le World Wide Web
● Technologies côté serveur

4
Communication client-serveur
● Dialogue entre processus 2 à 2
● Résultat : échange de données
● Client initie l’échange
● Serveur écoute en permanence une requête
éventuelle

Logiciel client Logiciel serveur


Protocoles
CLIENT SERVEUR
Communication client-serveur
● Services de l'Internet

Nom du service Logiciel client Logiciel serveur Protocoles


Messagerie Client de messagerie Serveur de POP3/IMAP/SMTP
électronique (Outlook, messagerie (Zimbra,
Thunderbird,...) Microsoft Exchange
Server,...)
Transfert de fichiers Client FTP (Filezilla, Serveur FTP FTP
Ftp (unix),..) (ProFTPd, FileZilla
Server,...)
WWW Navigateur web Serveur Web HTTP
(Apache, IIS, Nginx)
Le World Wide Web
● Principe original
● Accéder à des documents textuels situés sur des machines
accessibles par Internet reliés entre eux par un mécanisme
de lien « hypertexte » s'appuyant sur le protocole HTTP
(HyperText Transfer Protocol)
● Chaque document est identifié par une URL (Uniform
Resource Locator)
Le World Wide Web
● Un site Web est un serveur d'informations inscrit sur le WEB
grâce à son identifiant (URL) sa présentation (pages HTML) et
ses procédures d'accès (HTTP).
● Le serveur web est l'ensemble des matériels, logiciels et liaisons
sur lequel sont implémentés les sites WEB et qui permettent de
les rendre consultables sur le WEB.
● Le navigateur interprète le code HTML renvoyé par le serveur et
affiche la page.

Sous forme d'URL, http://...

<html>......</html>
8
Le World Wide Web
● 1991 :Tim Berners-Lee crée le World Wide Web

● 1994 : Naissance du W3C (World Wide Web Consortium) qui est un


organisme de normalisation chargé de promouvoir la compatibilité des
technologies du World Wide Web telles que HTML, XHTML, XML,
CSS, PNG, SVG et SOAP.

9
Le World Wide Web
● Actuellement
● Servir des ressources de différentes natures :
– texte, image, son, vidéo, contenu applicatif…
● Permettre à l’utilisateur :
– de rechercher de l’information, acheter un objet, accéder
à ses mails, consulter ses comptes en banque…
Le World Wide Web
● Les serveurs Web les plus connus sont:

● IIS (Internet Information Service) de Microsoft


● Apache
● Nginx

11
Technologies côté serveur
● Pages Web dynamiques
● Langages côté serveur
● Bases de données sur le Web

12
Technologies côté serveur
● Page statique

Le code HTML est stocké sur le serveur.

● Page dynamique
● Le principe d'une page dynamique est d'être construite à la demande (à la
volée) par le serveur (côté serveur), en fonction de critères spécifiques.

Le code HTML est généré par un moteur de scripts 13


Technologies côté serveur
● Langages de programmation
● Alors que les pages statiques font appel au html, les
pages dynamiques sont mises en oeuvre grâce à un
langage de programmation.
● Une page web dynamique est une page dont le code
HTML est produit par un langage de programmation.
● Le langage de programmation variera en fonction de la
technologie retenue (PHP, ASP,JSP, CGI, ColdFusion,
Python, Ruby, Node.js, etc.).

14
Technologies côté serveur
● Les langages les plus populaires

15
Technologies côté serveur
● JSP (Java Server Pages)
● Au départ simple extension du langage Java, JSP est devenu
un véritable langage de développement web.
● il permet d'intégrer des scripts, ici sous forme de code Java,
dans les pages html.
● Lorsqu'une page JSP est appelée pour la première fois, elle est
compilée et transformée en servlet (programme côté serveur).
Ce servlet est exécuté et produit un contenu au format html qui
est envoyé à l'internaute.

16
Technologies côté serveur

● ASP (Active Server Pages) et ASP.net


● Développée par Microsoft, la technologie ASP est basée sur des
scripts côté serveur, le plus souvent écrits en Vbscript.
● Ces scripts sont exécutés par le serveur et leur résultat est produit
sous forme de pages html standards.
● Cette technologie offre toutefois le désavantage d'être intimement
liée à l'environnement Windows et au serveur IIS de Microsoft.
● Depuis 2002, ASP est remplacé par ASP.net.

17
Technologies côté serveur

● PHP (PHP Hypertext PreProcessor)


● PHP connaît un succès toujours croissant sur le Web.
● L'environnement Linux est sa plateforme de prédilection.
● Combiné avec le serveur Web Apache et la base de
données MySQL, PHP offre une solution particulièrement
robuste, stable et efficace, offrant en outre l'avantage d'être
gratuite, tous ces logiciels venant du monde des logiciels
libres (Open Source).

18
Technologies côté serveur

● Coldfusion
● Coldfusion est un langage de scripts intégrés au code html.
Créé par la firme Allaire.
● Son principal avantage est lié à la rapidité d'apprentissage
et de développement. Il se prête très bien à la mise en
oeuvre de sites marchands ou d'information.
● Coldfusion est disponible pour la plupart des plateformes de
développement classiques: Windows, Mac, Linux, Solaris,
etc.

19
Technologies côté serveur

● Perl (Practical Extracting and Report Language)


● Perl est un langage de développement employé sur de
nombreux serveurs.
● Perl est né du besoin de disposer d'un langage optimisé pour
l'extraction d'informations de fichiers textes et la génération
de rapports.
● Même s'il n'est pas vraiment un langage destiné au Web, il
s'y est particulièrement bien adapté et aujourd'hui de très
nombreux utilisateurs de Perl sont des développeurs Web.

20
Technologies côté serveur

● CGI (Common Gateway Interface)


● Les CGI sont des composants exécutables (fichiers .exe
ou .dll) qui produisent sur le serveur des contenus html à
envoyer aux clients.
● Ils peuvent accomplir des tâches très variées comme écrire
dans des fichiers, accéder à des bases de données ou
produire du html.
● A la différence des langages de scripts (ASP, JSP, PHP, etc.),
les CGI sont compilés.

21
Technologies côté serveur

● Le moteur de scripts

22
Technologies côté serveur

Exemple de script côté serveur :


<html>
<head>
<title>Exemple de page dynamique</title>
</head>
<body>
Cette partie est statique, la partie qui suit a été traitée
par le serveur:
<?php
echo" Il est ",date(H)," heures ",date(i)," sur le serveur";
?>
</body>
</html>

23
Technologies côté serveur

Résultat :

24
Technologies côté serveur
● Bases de données sur le Web
requête Page
appel de Html
Client Internet Serveur
la page
réponse
Script

exécution

Base de extraction Serveur Moteur


Connexion
données de données de base de scripts
de données 25
Technologies côté serveur
● Du client vers le serveur:
● L’utilisateur remplit un formulaire en ligne. Les
données sont envoyées au serveur web.
● Le logiciel serveur réagit en transmettant les
données à un script
● L’exécution du script se fait par un moteur de
scripts.
● Une connexion au serveur de base de données est
établie pour interroger la base de données.

26
Technologies côté serveur

● Du serveur vers le client


● Les pages web sont assemblées à partir des résultats
produits par le serveur de bases de données et
renvoyées à l’utilisateur dans une enveloppe http, en
format HTML.
● Lorsque les données arrivent sur le poste client, le
navigateur fait de son mieux pour les afficher.

27
Développement Web

II. Programmation web avec PHP

28
Programmation web avec PHP
● Les bases du langage PHP
● Transmission de données par formulaire
● Gestion des sessions

29
Programmation web avec PHP

Les bases du langage PHP

30
Qu'est-ce que php ?
● PHP
● (PHP Hypertext Preprocessor) est un langage de
programmation web.
● Il est principalement utilisé pour
– le développement de sites web dynamiques,
– le développement d’applications web pour internet,
intranet ou extranet.
● Il est libre distribué sous une licence Open Source et
pour l’ensemble des systèmes d’exploitation
courants :
– Unix, Linux, Solaris, Mac OS X, Windows, etc. 31
Qu'est-ce que php ?
● Historique
● Début 1995: Personnal Home Page Tools,
bibliothèque Perl créé par Rasmus Lerdorf pour
compter les visiteurs de son site personnel.
● Été 1995: PHP/FI (Personnal Home Page/Forms
Interpreter), la bibliothèque Perl s’est muée en une
implémentation directement en C. On peut alors
communiquer avec les bases de données, créer des
applications dynamiques pour le web, gérer des
formulaires, etc.
● Novembre 1997: PHP/FI 2.0 32
Qu'est-ce que php ?
● Historique – suite
● Juin 1998: PHP 3.0 (PHP Hypertext
Preprocessor) refonte de PHP/FI par Andi
Gustman et Zeev Suraski (fondadeur de Zend) et
Rasmus.
● Mai 2000: PHP 4.0, intégration d’un nouveau
moteur de script, le Zend Engine.
● 2005: PHP 5.0, avec un nouveau moteur, le Zend
Engine 2

33
Qu'est-ce que php ?
● Exemple:
<html>
<head>
<title>Exemple1</title>
</head>
<body>
<h1 align="center">BIENVENUE!</h1>
<?php
$nom="Pierre";
echo"<h2 align=‘center’>sur le site web
personnel de $nom</h2>";
?>
</body>
</html>

34
Qu'est-ce que php ?
● La règle du traitement par le serveur est la
suivante :
● Le code PHP est inclus entre une balise de début (<?php), et
une balise de fin (?>).
● Lorsque le programme d'analyse détecte la balise de début <?
php, il passe en « mode PHP » et exécute les instructions qu’il
lit jusqu'à ce que la balise de fin ?> soit rencontrée.
● Lorsque le programme d'analyse rencontre la balise de fin , il
considère que les instructions qui suivent ne sont plus des
scripts PHP et il les traite comme un code HTML, il se contente
donc de les envoyer au navigateur client pour qu’il les
interprète.
35
Les scripts PHP

● Instructions
● Toute instruction PHP se termine par un ";"
● Commentaires
● Commentaire sur une ligne: // ou #
● Commentaire sur plusieurs lignes:
/* ...
……......*/

36
Les applications PHP
● Les solutions PHP
● Certaines de ces solutions sont produites par la communauté Open
Source. On peut citer :
– eGroupware (travail collaboratif),
– SPIP (gestion de contenu),
– phpBB (forum),
– SquirrelMail (webmail),
– PhpMyAdmin (interface d’administration de MySQL),
– FPDF (bibliothèque pour la création de fichier PDF).
● Manuel PHP
● https://php.net/manual/fr/index.php
37
Les applications PHP
● Les ressources d’aide
● Le site de référence PHP: propose un accès à la
documentation en ligne (site Internet: http://php.net )‫‏‬
● Afup: Association française des utilisateurs de PHP
(site Internet: http://www.afup.org)‫‏‬
● PHPindex.com: site pionners français sur PHP
(site Internet: http://phpindex.com)‫‏‬
● Nexen.com: propose de nombreux articles sur
l’utilisation de PHP (site Internet: http://phpfrance.com)‫‏‬
38
Structures de base
● Les types
● Le type d'une variable ou d'une constante est défini
par la valeur qui lui a été affectée lors de sa création.
Il existe cinq types de données.
Type mots clés
Entier integer
Décimal   real, double, float
chaîne de caractère string
tableau array
Objet  object
Booléen bool 39
Structures de base
● Les constantes
● Pour créer une constante, il faut un identifiant (un nom)
valide et la créer en utilisant la fonction :
define("nom_de_la_constante",valeur_de_la_constante );
● L'appel de la constante ainsi créée se fait par le nom
choisi

40
Structures de base
Les constantes
<?php
define(“SALUTATION", “Bonjour!");
define("ANNEE", 1970);
echo SALUTATION, " est du type ", gettype(SALUTATION), "<br>";
echo ANNEE, " est du type ", gettype(ANNEE), "<br>";
?>

● La fonction gettype() retourne le type de la constante (ou de la variable).

41
Structures de base
● Les constantes prédéfinies
● PHP_VERSION, (donne la version PHP)‫‏‬
● PHP_OS, (renvoie le nom du SE)‫‏‬
● __FILE__, (renvoie le nom du fichier en cours d’exécution)‫‏‬
● __LINE__, (renvoie le numéro de la ligne en cours d’exécution)
● ‫‏‬Les valeurs des constantes prédéfinies et des variables
d'environnement peuvent être obtenues à partir de l'appel de la
fonction phpinfo().
● <?php phpinfo(); ?>

42
Structures de base
● Les variables
● Pour définir une variable, il suffit de l'initialiser.
● Il n’existe pas de partie déclarative dans PHP.
● Les variables PHP sont toutes précédées du signe $

43
Structures de base
● Les variables
● Il est possible de réaliser des conversions. Dans ce
cas, le type de données ciblées doit être
explicitement mentionné
<?php
$ma_variable=1;     // $ma_variable est de type integer et vaut 1
$chaine = (string) $ma_variable ; /* $chaine est de type
"string" chaîne de caractère et vaut "1" */
?>

• il est possible de supprimer une variable, à tout moment, en utilisant la


fonction unset.
unset($ma_variable) ; // $ma_variable est supprimée du programme
44
Structures de base
● Les opérateurs
● Opérateurs arithmétiques :
– + (addition), - (soustraction), * (multiplié), / (divisé), % (modulo),
– ++ (incrément), --(décrément).
● Opérateurs d’assignement :
– = (affectation),
– *= ($x*=$y équivaut à $x=$x*$y),
– /=, +=, -=, %=
● Opérateurs logiques :
– and, && (et), or, || (ou), xor (ou exclusif), ! (non)‫‏‬
● Opérateurs de comparaison :
45
– == (égalité), < (inférieur strict), <= (inférieur large), >, >=, != (différence)‫‏‬
Structures de base

● Les fonctions
● PHP permet l’écriture de fonctions.
● Les fonctions peuvent prendre des arguments dont il
n’est pas besoin de spécifier le type.
● L’appel à une fonction peut ne pas respecter son
prototypage (nombre de paramètres).

46
Structures de base
Les fonctions

function mafonction($toto) {
$toto += 15;
echo ‘’Salut !’’;
return ($toto+10);
}
$nbr = MaFonction(15.1);

47
Structures de base
Structures conditionnelles
● Structures conditionnelles
● Même syntaxe qu’en langage C
if (expression1) {
instructions…
} elseif (expression2) {
instructions…
} else {
instructions…
}

48
Structures de base
● Structures conditionnelles
switch (variable ou expression) {
case valeur1 : {instructions… } break;
case valeur2 : {instructions… } break;

default : { … }
}

49
Structures de base
Structures conditionnelles
<?php
if ($i == 0)‫‏‬
{ print "i &eacute;gale 0"; }
if ($i == 1)
{ print "i &eacute;gale 1"; }
if ($i == 2)
{ print "i &eacute;gale 2"; }
?>

<?php
switch ($i) {
case 0: print "i &eacute;gale 0"; break;
case 1: print "i &eacute;gale 1"; break;
case 2: print "i &eacute;gale 2"; break;
}
?>

50
Structures de base
● Structures itératives
● for
– Les boucles for sont les boucles les plus complexes en PHP.
Elles fonctionnent comme les boucles for du langage C. La
syntaxe des boucles for est la suivante:
<?php
for (expr1; expr2; expr3) {
instructions…
}
?>

51
Structures de base
Structures de boucle (for)‫‏‬
<?php
for ($i = 1; $i <= 10; $i++) {
print $i;
}
?>

<?php
for ($i = 1; ; $i++) {
if ($i > 10) break;
print $i;
}
?>

52
Structures de base
● Structures itératives
● while
– La boucle while est le moyen le plus simple d'implémenter
une boucle en PHP. Cette boucle se comporte de la même
manière qu'en C. La syntaxe est la suivante :
<?php
while (expression) {
instructions…
}
?>

53
Structures de base
Structures de boucle (while)‫‏‬

<?php
$i = 1;
while ($i <= 10) {
print $i;
$i++;
}
?>

54
Structures de base

● Structures itératives
● do..while
– Les boucles do..while ressemblent beaucoup aux
boucles while, mais l'expression est testée à la fin de
chaque itération plutôt qu'au début.
<?php
do {
instructions…
} while (expression);
?>

55
Structures de base
Structures itérative (do .. while)‫‏‬

<?php
$i = 1;
do {
print $i;
$i++;
}while ($i < 10);
?>

56
Les variables d'URL
● Les Query-String
● Une query-string: emballage « nom=valeur », permet
de transmettre des données (Méthode GET) à partir
d’un poste client vers le serveur web.
● Chaque nom (query) est automatiquement
transformé en variable par PHP

script.php?nom1=val1&nom2=val2&nom3=val3
http://monsite.com/monscript.php?nom=preira&prenom=jm

57
Les bases du langage PHP

● Les Query-String
● Les variables d’URL générées par PHP peuvent
se présenter sous 2 formes suivant la valeur du
paramètre register_globals du fichier php.ini:
● $nom (On)
● $_GET[‘nom’] (Off)

58
Les tableaux
● Principe
● Création à l’aide de la fonction array()
● Uniquement des tableaux à une dimension
– Les éléments d’un tableau peuvent pointer vers d’autres
tableaux
● Les éléments d’un tableau peuvent appartenir à des
types distincts
● L’index d’un tableau en PHP commence de 0
● Pas de limites supérieures pour les tableaux
● La fonction count() donne le nombre d’éléments d’un
tableau 59
Les tableaux
● Les tableaux indicés
● Accéder aux éléments par l’intermédiaire de numéros
//$tableau[indice] = valeur; 
$jour[3] = "Mercredi";
$note[0] = 20;

//$tableau = array(valeur0, valeur1,..., valeurN);


$jour = array("Dimanche", "Lundi", "Mardi", "Mercredi",
"Jeudi", "Vendredi", "Samedi");
$note = array(20, 15, 12.6, 17, 10, 20, 11, 18, 19);

//$variable = $tableau[indice];
$JJ = $jour[6]; // affecte "Samedi" à $JJ
echo $note[1] + $note[5];

60
Les tableaux
● Les tableaux associatifs (ou table de hachage)
● Les éléments sont référencés par des chaînes de
caractères associatives en guise de nom: la clé
d’index
//$tableau["clé"] = valeur;
$jour["Dimanche"] = 7
$jour["Mercredi"] = "Le jour des enfants"

//$tableau = array(clé0 => val0, clé1 => val1,..., cléN => valN); 
$jour = array("Dimanche" => 1, "Lundi" => 2, "Mardi" => 3,
"Mercredi" => 4, "Jeudi" => 5, "Vendredi" => 6, "Samedi" => 7);

//$variable = $tableau["clé"];
$JJ = $jour["Vendredi"]; //affecte 6 à $JJ
echo $jour["Lundi"]; //retourne la valeur 2
61
Les tableaux

● Tableaux multidimensionnels
● Pas d'outils pour créer directement des tableaux
multidimensionnels
// $tab1 = array(Val0, Val1,..., ValN);
● L'imbrication des tableaux est possible
// $tab2 = array(Val0, Val1,..., ValN);
// Création d'un tableau à deux dimensions
// $tableau = array($tab1, $tab2);
$mois = array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin",
"Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
$jour = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi",
"Samedi");
$element_date = array($mois, $jour);

// $variable = $tableau[indice][indice];
$MM = $element_date[0][0]; //affecte "Janvier" à $MM
echo $element_date[1][5] . " 7 " . $element_date[0][2] . "2002"; // retourne
"Vendredi 7 Mars 2002"
62
Les tableaux

● Lecture des éléments d’un tableau


● Avec une boucle for
for ($i=0; $i<count($tab) ; $i++){
if ($tab[$i]== "a") {echo $tab[$i], "<br />"; }
}
● Avec une boucle while
$i=0;
while ($tab[$i]){
if ($tab[$i][0] =="a" ) {
echo $tab[$i], "<br /> "; }
$i++;
} 63
Les tableaux

● Lecture des éléments d'un tableau


● Avec La boucle foreach
$jour = array("Dimanche", "Lundi", "Mardi",
"Mercredi", "Jeudi", "Vendredi", "Samedi");
$i = 0;
foreach($jour as $JJ) {
echo "La cellule n° ". $i . " : " . $JJ . "<br>";
$i++;
}

64
Les tableaux

● Lecture des éléments d’un tableau


● Parcours d'un tableau associatif
– Réalisable en ajoutant avant la variable $valeur, la clé
associée
$tableau = array(clé1=>val1, clé2=>val2, ..., cléN=>valN);
foreach($tableau as $clé => $valeur) {
echo "Valeur ($clé): $valeur";
}
$jour = array("Dimanche"=>7,"Lundi"=>1,"Mardi"=>2,
"Mercredi"=>3,"Jeudi"=>4,"Vendredi"=>5,"Samedi"=>6);
foreach($jour as $sJJ => $nJJ) {
echo "Le jour n° ". $nJJ . " de la semaine est: " . $sJJ .
"<br>"; 65

}
Les tableaux
● Fonctions de tri
● Tri selon les valeurs
– La fonction sort() effectue un tri sur les valeurs des éléments d’un tableau
selon un critère alphanumérique :selon les codes ASCII :
● « a » est après « Z » et « 10 » est avant « 9 »)
● Le tableau initial est modifié et non récupérables dans son ordre

original
● Pour les tableaux associatifs les clés seront perdues et remplacées

par un indice créé après le tri et commencant à 0


– La fonction rsort() effectue la même action mais en ordre inverse des
codes ASCII.
– La fonction asort() trie également les valeurs selon le critère des codes
ASCII, mais en préservant les clés pour les tableaux associatifs
– La fonction arsort() la même action mais en ordre inverse des codes ASCII
– la fonction natcasesort() effectue un tri dans l’ordre alphabétique non
ASCII (« a » est avant « Z » et « 10 » est après « 9 ») 66
Les tableaux
● Fonctions de tri
● Tri sur les clés
– La fonction ksort() trie les clés du tableau selon le critère des
codes ASCII, et préserve les associations clé /valeur
– La fonction krsort() effectue la même action mais en ordre
inverse des codes ASCII
<?php
$tab2 = array
("1622"=>"Molière","1802"=>"Hugo","1920"=>"Vian") ;
ksort ($tab2);
echo "<h3 > Tri sur les clés de \$tab2 </h3>" ;
foreach ($tab2 as $cle=>$valeur) {
echo "<b> l’élément a pour clé : $cle; et pour valeur :
$valeur </b> <br />";
} 67

?>
Les tableaux
● Les fonctions de tableaux
● $tableau = array_count_values($variable);
– retourne un tableau comptant le nombre d'occurrences des valeurs
d'un tableau.
● $tableau = array_diff($var_1, $var_2, .., $var_N);
– retourne dans un tableau contenant les valeurs différentes entre deux
ou plusieurs tableaux.
● $tableau = array_filter($variable, "fonction")
– retourne un tableau contenant les enregistrements filtrés d'un tableau
à partir d'une fonction.
● $tableau = array_flip($variable);
– intervertit les paires clé/valeur dans un tableau.
● $tableau = array_intersect($var_1, ..., $var_N);
– retourne un tableau contenant les enregistrements communs aux
68
tableaux entrés en argument.
Chaînes de caractères
● Principe
● Elles peuvent être constituées de n'importe quel
caractère alphanumérique et de ponctuation, y
compris les caractères spéciaux
– \tLa nouvelle monnaie unique, l' €uro, est
enfin là...\n\r
● Une chaîne de caractères doit être toujours entourée
par des guillemets simples (')ou doubles (")
– " Ceci est une chaîne de caractères valide."
– 'Ceci est une chaîne de caractères valide.'
– "Ceci est une chaîne de caractères invalide.'

69
Chaînes de caractères
● Caractères spéciaux
● Des caractères spéciaux à insérer directement dans
le texte, permettent de créer directement certains
effets comme des césures de lignes
– Caractère Description
● \car échappe un caractère spécifique.
● "" un espace simple.
● \t tabulation horizontale
● \n nouvelle ligne
● \r retour à chariot
● \0 caractère NUL
● \v tabulation verticale
70
Chaînes de caractères
● Quelques fonctions de manipulation
● chaîne_result = addCSlashes(chaîne,
list_caract);
– ajoute des slashs dans une chaîne
● chaîne_result = addSlashes(chaîne);
– ajoute un slash devant tous les caractères spéciaux.
● chaîne_result = chop(chaîne);
– supprime les espaces blancs en fin de chaîne.
● echo expression_chaîne;
– affiche à l'écran une ou plusieurs chaînes de caractères.
● $tableau = explode(délimiteur, chaîne);
– scinde une chaîne en fragments à l'aide d'un délimiteur
71
et retourne un tableau.
Fonctions de base PHP

Fonction Description Exemple


La commande require_once() se
remplace elle-même par le contenu du
require_once()‫‏‬ fichier spécifié, comme les require_once(‘connexion_db.php’);
préprocesseurs C le font avec la
commande #include.

La fonction include() inclus et évalue le include(‘fichier_externe.php’);


include()‫‏‬
fichier spécifié en argument.

72
Fonctions de base PHP
Fonction Description Exemple
Écrit une chaîne de caractères dans le code
echo echo "Bonjour le monde";
source HTML

header("Location:
http://www.php.net/");
/* Redirige le client vers le site PHP */
header()‫‏‬ Envoie un en-tête HTTP.
exit();
/* Garantit que le code ci-dessous n'est
jamais exécuté. */

calcule le MD5 de la chaîne de caractères str


en utilisant l'algorithme RSA Data Security,
md5()‫‏‬ Inc. MD5 Message-Digest Algorithm. Le $motdepasse=md5("passer");
résultat est un nombre de 32 caractères
hexadécimaux.

73
Fonctions de base PHP

Fonction Description Exemple


isset()‫‏‬ Détermine si une variable est <?php
affectée $a = "test"; echo isset ($a); // TRUE
unset($a);
echo isset ($a); // FALSE
?>

session_start()‫‏‬ Crée une session ou restaure une <?


session sur le serveur session_start();
If(isset($_SESSION[‘login’])) { /*Si la variable
session a été initialisée*/
………..
}
?>

74
Variables prédéfinies
Variable Description
VARIABLES DE SERVEUR
Le nom du fichier du script en cours d'éxécution, par rapport
$_SERVER['PHP_SELF']
au document root.

Le nom du serveur hôte qui éxécute le script suivant. Si le


$_SERVER['SERVER_NAME'] script est exécuté sur un hôte virtuel, ce sera la valeur
définie pour cet hôte virtuel.

VARIABLES HTTP
Tableau associatif des valeurs passées au script courant via le
$_GET[‘string’]
protocole HTTP et la méthode GET
Tableau associatif des valeurs passées au script courant via le
$_POST[‘string’]
protocole HTTP et la méthode POST
VARIABLES DE SESSION
Tableau associatif des valeurs stockées dans les sessions, et
$_SESSION[‘string’]
accessible au script courant
75
Programmation web avec PHP

Transmission de données par formulaire

76
Variables de formulaire
● Formulaire HTML
● Les formulaires HTML constituent une excellente
méthode de transfert des données d'un poste client
à un serveur web.
● Chaque nom indiqué dans un formulaire pour
identifier une zone de saisie (champ texte, case à
cocher, champ masqué, bouton,...) est
automatiquement transformé en une variable par
PHP

77
Variables de formulaire

● Les variables de formulaire


● Les variables de formulaire générées par PHP
peuvent se présenter sous différentes formes suivant
la valeur du paramètre register_globals(=Off ou
On) du fichier php.ini:
● $nom (On)
● $_POST[‘nom’] (Méthode POST) (Off)
● $_GET[‘nom’] (Méthode GET) (Off)

78
Variables de formulaire
● Exemple :

79
Variables de formulaire
● Résultat:

80
Envoi de mails
● La fonction mail
● Elle envoie un message électronique.
● Syntaxe :
mail($recipient, $subject, $message[, $headers, $params]);
● Exemple :
$message = "Contenu de votre <b>message</b>";
mail("destinataire", "sujet_message", $message);
● Les arguments obligatoires sont le destinataire, le
sujet du message ainsi que le message proprement
dit.
● Les entêtes et paramètres additionnels sont
facultatifs.
81
Programmation web avec PHP

Gestion des sessions

82
Gestion des sessions
● Utilité
● Les sessions sont un moyen de sauvegarder et de
modifier des variables tout au cours de la visite d’un
internaute sans qu’elles ne soient visibles dans l’URL et
quelque soient leurs types (tableau, objet…).
● Cette méthode permet de sécuriser un site, d’espionner
le visiteur, de sauvegarder son panier (e-commerce),
etc.
● Les informations de sessions sont conservées en local
sur le serveur tandis qu’un identifiant de session est
posté sous la forme d’un cookie chez le client (ou via
l’URL si le client refuse les cookies).
83
Gestion des sessions
● Quelques fonctions :
● session_start() : démarre une session
● session_write_close() : termine la session
courante, après avoir stocké les données.
● session_destroy() : détruit les données de session
et ferme la session
● session_register("var") : enregistre la variable
$var dans la session en cours, attention, ne pas mettre
le signe $ (dollars) devant le nom de variable.
● session_unregister("var") : détruit la variable
$var de la session en cours
84
Gestion des sessions
● Mode de fonctionnement
● Les variables de session sont accessibles comme des variables
globales du script.
● Exemple :
<?php
session_start(); // démarrage de la session
$_SESSION['nom']="JM";//création d'une variable session
session_write_close() ;
?>
... utilisation de la variable session dans une autre page
<?php
session_start();
session_write_close() ;
.....
echo $_SESSION['nom'];
?>

85
Développement Web

III. Accès aux sources de données

86
Accès aux sources de données
● Interfaçage d'une base de données
● Accès aux données via mysqli
● Bases de la POO avec PHP5
● Accès aux données via PDO

87
Interfaçage avec une base de
données
● Principe
● PHP propose de nombreuses API permettant de
travailler avec la plupart des SGBDR
– Oracle, Sybase, Microsoft SQL Server, PostgreSQL ou
encore MySQL
● Il y a trois API principales pour se connecter à
MySQL :
– L'extension mysql (obsolète)
– L'extension mysqli
– PHP Data Objects (PDO)

88
Interfaçage avec une base de
données
● PHP fournit un grand choix de fonctions
permettant de manipuler les bases de données.
– Quatre fonctions sont essentielles:
● La fonction de connexion au serveur et à la source de
données
● La fonction de requête (exécution)
● La fonction d'exploitation des données retournées par le
serveur de bases de données
● La fonction de déconnexion

89
Accès aux données via mysqli
Connexion : mysqli_connect()
/*adresse du serveur: adresse IP ou le nom de la Hote (localhost=serveur
local).*/

$server="localhost";
/*nom de l'utilisateur ayant droit sur la bdd, ici c'est l'administrateur
général root*/

$user="root";
//mot de passe de cet utilisateur
$pwd="";
/*nom de la base de données.*/
$db = "seminaire_db";
// connexion au serveur MYSQL et à la source de données
$conn=mysqli_connect ($server, $user, $pwd, $db); 90
Accès aux données via mysqli

Exécution : mysqli_query()

/*Définition requête SQL */


$requete="requête SQL";
/*execution de la requête et affichage si
erreur*/
$execution=mysqli_query($conn, $requete) or
die(mysqli_error($conn));
91
Accès aux données via mysqli

Exploitation: mysqli_fetch_row()
/*Retourne une ligne de résultat sous la forme d'un
tableau. Chaque élément du tableau étant la valeur d'un
champ.*/
While($ligne=mysqli_fetch_row($execution)) {
//tant qu'il y a des lignes de résultat
echo "$ligne[0]<br>"; //valeur du 1er champ
echo $ligne[1]; //valeur du 2e champ
echo"<br>";
}

92
Accès aux données via mysqli

Exploitation: mysqli_fetch_array()
mysqli_fetch_assoc()
/*Retourne une ligne de résultat sous la forme d'un tableau
associatif.*/
While($ligne=mysqli_fetch_array($execution)){
//tant qu'il y a des lignes de résultat
echo "$ligne['chp1']<br>";//valeur attribut chp1
echo $ligne['chp2']; //valeur attribut chp2
echo"<br>";
}

93
Accès aux données via mysqli

Exploitation: mysqli_fetch_object()
/*Retourne une ligne sous forme d' objet dont les attributs
sont les noms des champs*/
While($ligne=mysqli_fetch_object($execution)){
//tant qu'il y a des lignes de résultat
echo "$ligne->chp1 <br>";//valeur attribut chp1
echo $ligne->chp2; //valeur de attribut chp2
echo"<br>";
}

94
Accès aux données via mysqli
Autres fonctions
Autres fonctions
Retourne le nombre de ligne
$nb=mysqli_num_rows($execution);
d'un résultat

mysqli_close($conn); Ferme la connexion MySQL

Retourne le texte associée avec


$erreur=mysqli_error($conn); l'erreur générée lors de la
dernière requête

Retourne l'identifiant généré


$dernier_id=mysqli_insert_id($conn); par la dernière requête
INSERT.
95
Bases de la POO avec PHP5
Déclaration des classes et objets
class nom_classe {
//liste des attributs
private $attr1=0;
protected $attr2;
...
//constructeur
public function __construct() {
//code constructeur
}
...
//liste des méthodes
public function methode1(){
//code méthode1
}
... 96
}
Bases de la POO avec PHP5
Déclaration des classes et objets
class Client{
private $id;
private $nom;
public function __construct($id){
$this -> id = $id;
}
public function getId(){
return $this -> id;
}
public function getNom(){
return $this -> nom;
}
public function setNom($nom){
$this -> nom = $nom;
} 97

}
Bases de la POO avec PHP5
Destructeurs
● On l'utilise généralement pour fermer proprement des
ressources encore ouvertes : connexion à la base de
données, fichiers ouverts..
class Foo{
private $logFile;
public function __construct(){
$this -> logFile = fopen("/tmp/log","w+");
}
public function __destruct(){
fclose($this -> logFile);
}
} 98
Bases de la POO avec PHP5
Constantes de classe
● Elle se déclare par l'emploi du mot-clé const.
● On accède à une constante de classe en employant le
double deux-point “ ::”.
● NomDeClasse::NOM_CONSTANTE
class Foo{
const DEFAULT_DATE='2015-01-01';
function getDefaultDate(){
echo self::DEFAULT_DATE;
}
}
99
Bases de la POO avec PHP5
Attributs et méthodes statiques
● La classe Client possède un attribut statique count et une
méthode statique getCount. L'appel se fait par :
● Client::getCount() ;
class Client{
private static $count;
public function __construct(){
$this::$count++;
}
public function __destruct(){
$this::$count--;
}
public static function getCount(){
return self::$count;
} 100

}
Bases de la POO avec PHP5

Héritage et Interfaces

● PHP autorise l'héritage simple mais pas multiple.


● L'héritage est spécifié à l'aide du mot clé extends.
● Les interfaces sont déclarées à l'aide du mot clé interface.
● Contrairement aux classes, les interfaces peuvent hériter de
plusieurs interfaces mères
● L'implémentation d'une interface par une classe se fait par le
mot clé implements.
● Le mot clé final permet d'indiquer qu'une méthode ou une
classe sont finales, c'est à dire que la méthode ne peut
être surchargée et la classe ne peut être étendue. 101
Accès aux données via PDO
La classe PDO
● La classe PDO (PHP Data Object) implemente une
interface unique de connexion à un serveur de bases de
données, quel que soit son type : MySQL, Oracle, SQL
Server, etc.
● Elle permet de prendre en charge les différentes
commandes utilisées pour se connecter et exécuter les
requêtes, et permet au développeur de s’affranchir du type
de SGBD utilisé.
● Autres classes pour l'accès aux données
– PEAR::MDB2
– ADODB
102
Accès aux données via PDO
Connexion à une source de données
● La connexion à la source est établie dès l'appel au constructeur de
la classe PDO, qui prend en paramètres les informations de
connexion (Data Source Name, login et password)
● PDO::__construct() émet une exception PDOException si la
tentative de connexion à la base de données échoue.
$login = 'login';
$pwd = 'mdp';
$dsn = 'mysql:host=localhost;dbname=NomDeLaBase';
try {
$pdo = new PDO($dsn, $login, $pwd);
}
catch (PDOException $e) {
die("Erreur de connexion : " . $e->getMessage() ); 103

}
Accès aux données via PDO

Construction et exécution de requêtes

● La méthode query($sql) exécute une requête et retourne le


résultat sous forme d'un PDOStatement.
● La méthode exec($sql) exécute une requêtes et retourne le
nombre de lignes affectées On l'utilise pour des requêtes en
modification de type UPDATE, DELETE, etc.

$sql = "INSERT INTO clients (id, nom) ".


" VALUES (null,'PREIRA')";

if($pdo->exec($sql)){
echo"Le client a été inséré";
} 104
Accès aux données via PDO
Requêtes préparées
● Les requêtes préparées s'exécutent en deux ou trois temps ,
elles améliorent la sécurité et le temps d'exécution
i. Préparation de la requête à l'aide de marqueurs nommés;
$sql = "INSERT INTO clients (id, nom) VALUES (:id,:nom)";
$rp=$pdo->prepare($sql) ;
ii. Exécution de la requête par la méthode execute qui prend en
paramètre un tableau associatif contenant les valeurs à affecter aux
marqueurs;
$rp->execute(array('id'=>$_GET['id'],'nom'=>$_GET['nom']));
● Une étape intermédiaire peut s'effectuer pour l'association des
données aux marqueurs grâce à la méthode bindParam ;
$rp->bindParam(':id',$_GET['id'],PDO::PARAM_INT);
$rp->bindParam(':nom',$_GET['nom'],PDO::PARAM_STR);
● Dans ce cas l'exécution par la méthode execute se fait sans 105
paramètres ;
Accès aux données via PDO

Exploitation des données


● Le parcours du résultat d'une requête se fait par le biais de
quatre méthodes de l'objet PDOStatement :
● fetch(fetch_style) : renvoie la ligne de résultat suivant. Elle
prend en paramètre fetch_style qui indique la forme que devront
prendre les données retournées :
● fetchAll(fetch_style) : renvoie un tableau de toutes les
lignes de résultats.
● fetchColumn(column_number) : renvoie la donnée de la
colonne spécifiée en paramètre sur la ligne de résultat suivant.
● fetchObject(nom_de_la_classe) : renvoie la prochaine
ligne de résultat sous forme d'un objet de classe fournie en 106
paramètre.
Accès aux données via PDO
Exploitation des données
● Les valeurs possibles pour fetch_style sont :
● PDO::FETCH_NUM renvoie un tableau de paires numéro_de_colonne =>
valeur.
● PDO::FETCH_ASSOC renvoie un tableau nom_de_colonne => valeur.
● PDO::FETCH_BOTH renvoie un tableau indexé sur les noms de colonnes et
sur leur numéro.
● PDO::FETCH_OBJ renvoie un objet ayant pour attributs les noms des
colonnes retournées.
$sql = "SELECT * FROM clients";
$resultat=$pdo->query($sql) ;
while ($ligne = $resultat->fetch(PDO::FETCH_NUM)){
echo"<td>$ligne[0]</td>
<td>$ligne[1]</td>" ; 107
}
Développement Web

IV. Les Systèmes de Gestion de Contenu

108
Les Systèmes de Gestion de
contenu
● Les CMS,
● Content Management System ou Système de gestion de Contenu
sont des programmes accessibles en général par un navigateur
et qui permettent de gérer le contenu d'un site WEB sans avoir de
connaissances informatiques poussées dans la conception de
sites WEB.
● Le CMS est l'outil idéal pour les sites communautaires,
associatifs, ou liés à l'actualité.
● Exemples de CMS:
● JOOMLA,
● DRUPAL,
● SPIP,
● WORDPRESS 109
Les Systèmes de Gestion de
contenu
● Caractéristiques
● Dissociation du design du site (le graphisme, la mise en page) et de son contenu.
● Le contenu est stocké dans une base de données.
● Facilité pour les rédacteurs de créer des pages sans avoir de grandes
compétences en programmation WEB.
● La Maintenance du site est décentralisée.
● Il y a une définition de droits d'accès des utilisateurs.
● Panorama des CMS
● http://www.cmsmatrix.org
● Téléchargement WordPress
● https://fr.wordpress.org/

110