Vous êtes sur la page 1sur 43

Développement des applications web (2ème année licence informatique)

Chapitre 03: langages coté serveur

PHP… la
dernière pièce
qui manque

http://elearning.univ-skikda.dz/
laroumtoufik@yahoo.fr 1
Définition :

1. PHP est un langage de script qui s’inclut dans la page HTML et traité par le serveur web
(langage coté serveur) (PHP est né en 1994 avec le site de Rasmus Lerdof ).

2. PHP permet aux développeurs de site web d’écrire rapidement des pages web qui
peuvent contenir les résultats de calculs ou de requêtes SQL adressées à un système de
gestion de bases de données (SGBD).

3. La syntaxe du langage PHP provient des langages C, Java et Perl, avec un petit nombre
de fonctions inédites par rapport à ces langages.

4. PHP est un langage qui conviendra autant au débutant désireux de se familiariser “sans
douleur” avec les techniques du web dynamique, qu’au professionnel cherchant une
solution simple mais toutefois puissante et fiable pour des sites de taille moyenne.

5. PHP a permis de créer un grand nombre de sites web célèbres,


comme Facebook, YouTube, Wikipédia, etc.

2
Fonctionnement :

1- PHP est un langage interprété par le serveur. Donc pour développer un site web avec
PHP on doit disposer d’un serveur c’est un programme qui se charge de lire les requêtes et
délivrer les pages aux visiteurs (le plus connu est Apache).

2- le serveur web lit le code PHP, et génère la page HTML. Pour fonctionner, il a donc
besoin d'un interpréteur PHP. c'est un plug-in pour Apache qui le rend capable de traiter
des pages web dynamiques en PHP. En clair, en combinant Apache et PHP, notre ordinateur
sera capable de lire des pages web en PHP.

De ce fait une plateforme minimale de base pour l’exécution d’un site web développé en
PHP comprend :

- un serveur web (Apache, IIS, …)

- l’interpréteur PHP (serveur PHP)

- SGBD mySQL (pour manipuler la base de données)

3
outils:
De ce fait une plateforme minimale de base pour l’exécution d’un site web développé en
PHP comprend :

- un serveur web (Apache, IIS, …)

- l’interpréteur PHP (serveur PHP)

- SGBD mySQL (pour manipuler la base de données)

Nous pouvons installer ces 3 outils un à un, mais il existe des « packs » tout prêts qui
contiennent tous ces éléments. 2 packs sont utilisés (les deux sont disponible gratuitement
sur internet):

1- EasyPhp.

2-wampServer.

4
outils:
Pour développer une application web avec PHP, on doit :

1- ouvrir DreamWaver et éditer la page.php puis l’enregistrer sur le serveur (dans le


dossier www dans le répertoire d’installation de EasyPhp (ou de wampServer).

2-lancer EasyPhp (ou wampserver) pour démarrer Apach (serveur web) et MysQl (le sgbd).

3- consulter la page.php (qui se trouve sur le serveur). Pour ce faire on doit taper dans la
barre d’adresse la chaine localhost ou l’adresse 127.0.0.1 (ou bien afficher le web Local
avec un clic droit sur l’icone de EasyPhp).

5
Fonctionnement :

Lorsqu'un visiteur demande à consulter une page Web, son navigateur envoie une requête
au serveur. Si la page contient du code PHP, l'interpréteur PHP du serveur le traite et
renvoie du code généré (HTML).

De ce fait le code PHP n’est jamais visible sur la page finale consultée par le client. Ainsi en
éditant le source de la page on n’y trouvera que du code HTML.

Serveur
web
Requête HTTP
Interpréteur PHP
Exécute le code PHP
pour produire HTML

Réponse
(Page HTML)

6
Syntaxe de PHP:

- Le code PHP peut être mis n’importe où dans la page.

- Pour insérer un code PHP on doit le mettre dans une balise <?php ….. ?>

<body>
code html
code html
<?php
…mettre ici le code php…..
?>
code html
code html

<?php
… mettre ici le code php…..
?>
code html <?php …code php.. ?> code html
…… etc
</body>

Attention: Ce n’est pas une balise en pair.

7
Syntaxe de PHP:
Exemple:

l'instruction echo "xxxx"; la plus simple et la plus basique de toutes les instructions. Elle
permet d’écrire le texte entre guillemets dans le code de la page. (équivalente à
l’instruction document.write() en javaScript.

maPage.php maPage.php
<html> <html>
<body> <body>
<?php
echo "Hello World"; Hello World
?>
</body> </body>
</html> </html>

Code source de la page Code source de la page Affichage de la page


sur le serveur reçue par le navigateur sur le navigateur

8
Syntaxe de PHP:
Exemple:

l'instruction echo "xxxx"; la plus simple et la plus basique de toutes les instructions. Elle
permet d’écrire le texte entre guillemets dans le code de la page. (équivalente à
l’instruction document.write() en javaScript.

maPage.php maPage.php
<html> <html>
<body> <body>
<?php
echo "<u>Hello World<u/>"; <u>Hello World</u>
?>
</body> </body>
</html> </html>

Code source de la page Code source de la page Affichage de la page


sur le serveur reçue par le navigateur sur le navigateur

9
Les variables:
- PHP n’est pas un langage fortement typé. C'est-à-dire y a pas une déclaration explicite des
variables avec leurs types, c’est PHP qui décide à l’exécution, en fonction du contenu, quel
type sera le plus indiqué pour la variable (parmi integer, double , string array).

- Le nom d’une variable commence toujours par le symbole $.

Exemple:

<body>
<?php
$a= 'Bonjour 1'; //Affectation d’une chaîne avec guillemets simple
$b= ''Bonjour 2''; // Affectation d’une chaîne avec guillemets double
$c= 5; // Affectation d’un entier
$x= 2 + (3 * 5); // Affectation d’un résultat d’opération
$y= true; // Affectation Booléenne
?>
</body>

10
Les variables:
- Pour afficher une variable on utilise la fonction echo.

- Le point (.) est l’opérateur de concaténation (pour afficher plusieurs choses à la fois).

Exemple:

<body>
<?php

$nom= "ali";
Echo "bonjour" . $nom ; Bonjour ali
?>
</body>

On peut également écrire (ça marche uniquement avec les guillemets doubles:

<body>
<?php

$nom= "ali";
Echo "bonjour $nom" ; Bonjour ali
?>
</body>

11
Structures de contrôle:
Les structures de contrôle ont la même syntaxe que java (et JavaScript):

conditions Boucle while Boucle for


<?php
if($i == ’condition’) <?php <?php
{ While (condition) for($i=0; condition ; $i++)
……. { {
} //Traitements //Traitements réalisés
Elseif (condition2) } }
{ ?>
……. /*************/
} Do{……} while (condition);

Else {…..} ?>


?>

12
Structures de contrôle:
Exemple:

maPage.php Résultat reçu par le navigateur


<body> <body>
<?php <h1> titre h1 </h1>
Interpréteur PHP <h2> titre h2 </h2>
for($i=1; $i<=6; $i++) <h3> titre h3 </h3>
echo "<h$i> titre h$i </h$i>" ; <h4> titre h4 </h4>
?> <h5> titre h5 </h5>
</body> <h6> titre h6 </h6>
</body>

Résultat sur le
navigateur

13
Structures de contrôle:
Exemple:

maPage.php Résultat reçu par le navigateur


<body> <body>
<?php <h1> titre h1 </h1>
Interpréteur PHP <h2> titre h2 </h2>
for($i=1; $i<=6; $i++) <h3> titre h3 </h3>
echo "<h$i> titre h$i </h$i>" ; <h4> titre h4 </h4>
?> <h5> titre h5 </h5>
</body> <h6> titre h6 </h6>
</body>

Résultat sur le
navigateur

14
Structures de contrôle:
Exemple 2: créer un tableau de 10 lignes.

maPage.html
<body> maPage.php
<table>
<tr> <td> ligne1 </td></tr> <body>
<tr> <td> ligne2 </td></tr> <table>
<tr> <td> ligne3 </td></tr> <?php
… for($i=1; $i<=10; $i++)
<tr> <td> ligne8 </td></tr> echo "<tr><td> ligne $i </td></tr>" ;
<tr> <td> ligne9 </td></tr> ?>
<tr> <td> ligne10 </td></tr> <table>
</table> </body>

</body>

15
Structures de contrôle:
Exemple 2: créer un tableau de 10 lignes.

maPage.html
<body> maPage.php
<table>
<tr> <td> ligne1 </td></tr> <body>
<tr> <td> ligne2 </td></tr> <table>
<tr> <td> ligne3 </td></tr> <?php
… for($i=1; $i<=10; $i++)
<tr> <td> ligne8 </td></tr> echo "<tr><td> ligne $i </td></tr>" ;
<tr> <td> ligne9 </td></tr> ?>
<tr> <td> ligne10 </td></tr> <table>
</table> </body>

</body>

16
Structures de contrôle:
Exemple 2: créer un tableau de 10 lignes.

maPage.html maPage.php
<body> <body>
<table> <table>
<tr> <td> ligne1 </td></tr> <?php
<tr> <td> ligne2 </td></tr> for($i=1; $i<=10; $i++)
<tr> <td> ligne3 </td></tr> { ?>
… <tr> <td> ligne <?php echo $i; ?> </td></tr>
<tr> <td> ligne8 </td></tr> <?php } ?>
<tr> <td> ligne9 </td></tr>
<tr> <td> ligne10 </td></tr> <table>
</table> </body>
</body>

17
Include (‘unFichier’):
La fonction include(‘unFichier’) de PHP est très utilisée. Elle permet d’inclure un fichier dans
un autre lors de son exécution, c’est-à-dire: elle prend le contenu du fichier spécifié et le
dans le fichier courant.

Par exemple l’entête d’un site web est isolé dans un fichier indépendant appelé head.html.
pour afficher le même etête dans toutes les pages il suffit d’utiliser l’instruction :

<?
Include ("head.html") ;
?>
……..
Le corps de la page….
……..

Il est claire que pour changer l’entête de toutes les pages du site, il suffit de modifier
uniquement la page head.html.

18
Exemple: soit le site vu au TP:

Pour changer l’entête de toutes les page du site:

1- Mettre la partie entête dans un fichier indépendant: head.html

2- Insérer ce fichier dans toutes le autres page avec : include(‘head.html’);

19
Exemple: soit le site vu au TP:

Head.html

20
PHP et formulaires:
1) Quand un formulaire est rempli, le contenu des champs saisis est transféré à la page
destination indiquée dans l’attribut action du formulaire.

2) L’envoi des variables (les valeurs saisies par l’utilisateur) peut se faire de deux
manières : en GET ou en POST.

<form method="post" action="page2.php">


<input type="texte"…. name="nom1">
</form>

3) La réception du formulaire dans la page destination (page2.php) dépend de la méthode


utilisée pour l’envoi, on distingue 2 cas:

Page2.php
<?php
$variable1=$_POST["nom1"] ; // si la méthode est post

$variable1=$_GET["nom1"] ; // si la méthode est get


?>

21
PHP et formulaires:

Page1.html page2.php

22
PHP et formulaires:

Page1.html page2.php

Page1.html
<html>
<body>
<form method="post" action="page2.php">
votre pseudo: <input type="text" name="pseudo">
<input type="submit" value="OK">
</form>
</body>
</html>

23
PHP et formulaires:

Page1.html page2.php

Page1.html page2.php
<html> <html>
<body> <body>
<form method="post" action="page2.php"> <?php
votre pseudo: <input type="text" name="pseudo"> $x= $_POST["pseudo "] ;
<input type="submit" value="OK"> echo "bonjour: ".$x;
</form> ?>
</body> </body>
</html> </html>

24
transmission de variables par hyperlien :

Des paramètres ou variables peuvent passer d’une page source vers une page destination
sans transiter par un formulaire pour leur envoi mais en utilisant les hyperliens :

La forme du lien devient comme suit:

<a href=destination.php?variable1=valeur1&variable2=valeur2&…>un Lien </a>

On récupère les variables dans la page destination par $_GET:

<?php
$v1=$_GET["variable1"] ;
$v2=$_GET["variable2"] ;

?>

Variable1=valeur1&variable2=valeur2

Page1.html destination.php

25
transmission de variables :

Remarque importante:

Il est parfois utile de tester la réception (ou non) des variables dans la page php avant de
lire leurs valeurs. Cette situation viens quand c’est la même page qui envoi et qui reçoit le
formulaire.

Par exemple :

<?php
if (isset($_POST['pseudo'] && isset($_POST['passe'])
{
p= $_POST['pseudo'];
m=$_POST['passe'];
}
?>

Cela signifie que:

si la page a reçu les variables pseudo et mot de passe alors récupérer les dans les
variables p et m pour faire des traitements ultérieurs.

26
PHP et base de données :
 PHP fonctionne nativement avec une base de données MYSQL. MYSQL est un système de
gestion de base de données (SGBD) qui permet de structurer les données (Base, Tables,
Champs, Enregistrements) et les manipuler via un langage spécifique: le SQL.

 Lorsque le serveur reçoit une demande d'un client de consultation d’une page en PHP
qui fait appel à des données stockées sous MYSQL:

27
PHP et base de données :
1. Le serveur WEB envoie le nom de la page PHP demandée à l’interpréteur PHP.

2. PHP exécute le script existant dans la page. Sitôt que des instructions relatives à la
connexion à une base de données trouvées, PHP se charge d’envoyer les requêtes
d’exécution à MYSQL.

3. MySQL exécute la requête et renvoie à PHP le jeu de données résultat.

4. PHP termine son traitement et renvoie la page HTML générée au serveur web qui la
transmet à l’internaute.

28
PHP et base de données :

Derrière tout
site web
dynamique il y
a une base de
données !!

29
PHP et base de données :

page1 Page2.php

1- Récupérer le pseudo et le mot de passe.

2- Chercher (SELECT) dans la base de données


le compte ayant ce pseudo et ce mot de passe.

3-rédiger le contenu de la page et la renvoyer


au client.

30
PHP et base de données :

page1 Page2.php

1- récupérer le formulaire (nom, prénom, email…

2- créer un nouveau compte dans la base de


données (INSERT INTO).

3-renvoyer la page au navigateur.

31
PHP et base de données :
- La base de données est créer par le sgbd Mysql dans la page PHPMyAdmin.

- c’est une fenêtre qui facilite la créations des bases de données, des tables et même la
saisie des valeurs.

- Une fois créée, la base de données est stockées dans le dossier Mysql/data dans le
répertoire d’installation du EasyPhp (ou de wampServer)

32
1-Connection à un serveur MYSQL :

La première opération a réaliser pour accéder à MYSQL via un script PHP correspond à la
connexion au serveur de la base de données en utilisant la commande suivante qui
retourne un objet de type mysqli:

$conn = new mysqli ($db_host, $db_user, $db_pass, $db_name);

Où:

$db_host: le nom du serveur (adresse du serveur): par défaut: "localhost" ou 127.0.01.

$db_user: nom de l’utilisateur. Par défaut: "root".

$db_passe: lemot depasse. Par défaut: "".

$db_name: le nom de la base de données (il y en a plusieurs bdd sur le serveur).

On doit toujours tester la connexion et afficher un message d’erreur.

33
1-Connection à un serveur MYSQL :

Exemple: on veut établir la connexion avec le serveur pour manipuler la base de données
gestionEtudiant.

On écrit:

$conn = new mysqli ("localhost", "root", "", "gestionEtudiant");


if ($conn->connect_error)
die("Connection impossible: " . $conn->connect_error);

Remarque:

- die signifie que si la connexion échoue on affiche un message d’erreur et on arrête tout.

- Il est utile de mettre la commande de connexion à la base de données dans un fichier


indépendant (connecterBDD.php par exemple) puis on l’invoque dans toute page
manipulant la bdd par la commande include("connecterBDD.php").

- En cas de problème, utiliser l’adresse 127.0.01 au lieu de localhost.

34
2- Envoi de requêtes SQL au serveur
Pour exécuter une requête, il faut employer la méthode query() de l’objet mysqli dont la

syntaxe est :

$resultat=$conn–>query($laRequete);

Cette méthode retourne soit true (requête insert ou delet ou update) ou un objet de type
mysqli_result pour les commandes SQL de sélection comme SELECT.

L’exécution de la requête peut échouer (retourne false), donc on doit toujours tester la
bonne exécution de la requête pour afficher un message d’erreur.

35
2- Envoi de requêtes SQL au serveur
Exemple requête SELECT:

$conn = new mysqli ("localhost", "root", "", "gestionEtudiant");


if ($conn->connect_error) die("Connection impossible: " . $conn->connect_error);
$laRequete= "select * from etudiant";
$resultat=$conn–>query($laRequete);
if (!$resulat) die ("problème d’exécution de la requête: " . $conn->error);
else echo " il y a ". $result->num_rows. " étudiants "

- $result->num_rows :donne le nombre de résultat.

- Si l’exécution de la requête se déroule correctement, le résultat cette exécution sera un


objet de type mysqli_result : c’est un tableau contenant la liste de tous les étudiants. On
aura besoin d’une boucle pour le parcourir et l’afficher.

36
3-Lecture et affichage du résultat d’une requête
- Le résultat d’une requête SELECT* from étudiant est une liste d’éléments (un tableau
contenant tous les étudiants) donc on va les afficher un par un.

- L’instruction: $ligne= $resultat->fetch_assoc() ; permet de lire un élément du résultat et


de le mettre dans le tableau associatif $ligne pour l’afficher.

- Donc pour afficher tous les résultat on doit utiliser une boucle while.

$conn = new mysqli ("localhost", "root", "", "gestionEtudiant");


if ($conn->connect_error) die("Connection impossible: " . $conn->connect_error);
$laRequete= "select * from etudiant";
$resultat=$conn–>query($laRequete);
if (!$resulat) die ("problème d’exécution de la requête: " . $conn->error);

while($ligne=$resultat–>fetch_assoc()) code nom moyenne


{
echo $ligne["code"]; L2tc1 Ali 12,5

echo $ligne["nom"]; L2tc5 Sami 15,33


echo $ligne["moyenne"]; L2tc10 Mohammed 10
}
… … …

37
Exécution d’une requête INSERT
- Pour insérer un nouvel enregistrement on utilise la commande sql insert.

- L’exécution de la requête retourne true en cas de réussite et false en cas d’erreur.

- La requête sql est une chaine de caractère.

- Les valeurs des champs de type string doivent être mises entre guillemets.

$conn = new mysqli ("localhost", "root", "", "gestionEtudiant");


if ($conn->connect_error) die("Connection impossible: " . $conn->connect_error);

$laRequete = "INSERT INTO etudiant (code, nom, moyenne) VALUES ('L2tc13', 'sara',13) ";
$resultat = $conn->query($laRequete );
if (!$resultat) die ("problème d’exécution de la requête: " . $conn->error);

code nom moyenne

L2tc1 Ali 12,5

L2tc5 Sami 15,33

L2tc10 Mohammed 10

L2tc13 sara 13

38
Les sessions:
Les sessions permettent de créer et d'enregistrer des variables et les réutiliser tout au long
de la visite du site, c’est-à-dire en passant d’une page à l’autre l’utilisateur peut utiliser
ces variables sans les redéfinir!! Cela permet notamment de construire des applications
personnalisées.

Par exemple:

Bonjour xxxx : une phrase affichées et haut de toutes les pages de votre boite Email ou ton
compte Facebook! Pourtant le pseudo est saisi une seule fois!!!

L’utilisateur saisie son pseudo et son mot de passe quand il se connecte au site. En créant
une session avec la variable pseudo on ne va plus demander de l’utilisateur de saisir encore
une fois son pseudo car il sera connais tout au long de sa navigation dans le site!

Session
$Pseudo=‘xxx’

39
Démarrer une session:
1. Une session est démarrée en utilisant la fonction: session_start(), cette instruction doit
être placée toujours en premier du document c’est-à-dire avant toute balise HTML.

2. une fois on a créé la session, on peut déclarer autant de variables qu’on veut comme
suit: $_SESSION[‘varaible’]=‘valeur;

3. Pour lire la variable d’une session o n écrit: $i=$_SESSION[‘varaible’].

Exemple:

La page connexion.php va créer une session et définir une variable appelé user:

connexion.php
<?php session_start(); ?>
<html>
<body>
<?php
Session
$_SESSION["user"] = "Ali";
$user=‘Ali’
?>

</body>
</html>

40
Démarrer une session:
1. Une session est démarrée en utilisant la fonction: session_start(), cette instruction doit
être placée toujours en premier du document c’est-à-dire avant toute balise HTML.

2. une fois on a créé la session, on peut déclarer autant de variables qu’on veut comme
suit: $_SESSION[‘varaible’]=‘valeur;

3. Pour lire la variable d’une session o n écrit: $i=$_SESSION[‘varaible’].

Exemple:

La page connexion.php va créer une session et définir une variable appelé user:

connexion.php autrePage.php
<?php session_start(); ?> <?php session_start(); ?>
<html> <html>
<body> <body>
<?php <?php
Session
$_SESSION["user"] = "Ali"; $nom= $_SESSION["user"] ;
$user=‘Ali’
?> Echo "bonjour $nom";
?>
</body>
</html> </body>
</html>

41
Détruire une session:
1. Pour détruire (supprimer) une session, généralement quand on quitte le site, on utilise
la fonction: session_destroy();

Remarque:

- Avec les session on évite de demander à l’utilisateur de saisir la même information


plusieurs fois.

- Avec les sessions on peut personnaliser le site: c’est-à-dire afficher un contenu différent
pour chaque utilisateur:

Exemple: le site du département peut être visité par un administrateur ou par un visiteur
simple. Ce dernier a un accès limité.
page.php
<?php session_start(); ?>
<html>
<body> Session
<?php $user=‘……’
$visiteur= $_SESSION["user"] ;
If($visiteur==‘administrateur’)
echo "Bienvenu monsieur";
Else echo "désolé, espace réservé";
?>
</body>
</html>
42
Développement des applications web (2ème année licence informatique)
Chapitre 03: langages coté serveur

http://elearning.univ-skikda.dz/
laroumtoufik@yahoo.fr 43

Vous aimerez peut-être aussi