Vous êtes sur la page 1sur 33

Cours : Ingéniérie des application web et mobiles

Leçon 2 : Le PHP

Rodrigue DJEUMEN

6 octobre 2019

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 1 / 33
Installation et configuration Installation de Devserver

Installation de DevServer
Installer DevServer
Afficher le tableau de bord devServer

Le tableau de bord s’affiche dans la navigateur à l’adresse : 127.0.0.1 : 1111

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 2 / 33
Installation et configuration Publier sa page web

Publier sa page Web sur Apache


Publier un site web revient à copier tous les fichiers HTML dans le dossier publique
d’apache eds-www dont le chemin est ...\EasyPHP-Devserver-17\eds-www. un fichier
doit porter le nom index avec une extension htm, html ou php.
Ouvrir son navigateur
Taper dans la barre d’adresse 127.0.0.1 :8080, le fichier index. ? ? ? s’affichera dans le
navigateur.

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 3 / 33
Installation et configuration Créer une BD MySql

Créer une BD MySQL


Ouvrir phpMyAdmin à partir du bouton open dans le tableau de bord de DevServer
Créer son compte utilisateur
Créer une base de donnée miage avec une table info, contenant les champs listé
ci-dessous :

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 4 / 33
Le langage PHP Les script php

Le script PHP

<?php
echo "The current date is ";
echo date("l F d, Y");
?>

Peut être inséré dans toute page web entre les balise HEAD ou BODY
Chaque instruction se termine par “ ;”

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 5 / 33
Le langage PHP Les variables

Les variables en PHP

Le PHP regroupe dans des tableaux associatifs, les identificateurs des


variables, en fonction du rôle de ces variables. Ainsi :
GLOBALS : tableau des variables globales du script
GET ou POST : tableau des variables utilisées pour le transfert des
données du formulaire,
REQUEST : toutes les valeurs quelle que soit la méthode utilisée,
COOKIE : pour la récupération des cookies
SESSION : variables de session
une variable ident est accessible via le tableau où son identificateur est
stocké par : TABLEAU[“ident”]
la valeur stockée par une variable est donnée par $ident ou
$ TABLEAU[“ident”]

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 6 / 33
Le langage PHP L’adressage

L’adressage en PHP

L’opérateur d’adressage indirect est & :


<?php
$B=5; $A=12; echo "A=$A; ";
$A=&$B; $B=123; echo "A=$A; ";
?>
//affichera A=12;A=123;

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 7 / 33
Le langage PHP Structures de contrôles

Les instructions de choix en PHP

Instruction if :
if(condition){action1;} else {action2;}
L’opérateur ?
(condition) ? action1 : action2;
L’instruction switch
switch(expression){
case valeur1: action1; break;
case valeur2: action2; break;
...
default: action par défaut;
}

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 8 / 33
Le langage PHP Les boucles

Les boucles en PHP

Instruction while :
while (condition){ actions;}
Instruction do..while
do{ actions; }while(condition);
Instruction for

for(initialisation; condition; incrémentation){ actions; }


Instruction foreach (tableaux)
foreach($tableau as $clé => $valeur){ actions; }

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 9 / 33
Le langage PHP Les boucles

Les débranchements

break arrête l’exécution de la boucle et donne le contrôle à l’instruction


suivante dans la boucle ;
continue arrête l’exécution en cours de la boucle et reprend au tour suivant ;
exit interrompt l’exécution du script, plus rien n’est envoyé vers le
navigateur ;
die fonctionne comme exit, mais prend une chaı̂ne de caractères qui sera
envoyé au navigateur avant l’arrêt du script.
return interrompt du script en cours

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 10 / 33
Le langage PHP Les fonctions

Les fonctions en PHP

Déclarer une fonction :


function nom(paramètres){ ...}

Retour d’une fonction :


Une fonction renvoie la valeur false par défaut ;
L’instruction return en fin de fonction, permet de retourner une ou
plusieurs valeurs
function plusieurs(){
return array("a",1,"b");
}
Ces valeurs sont récupérées par :
list($V1,$V2,$V3)= plusieurs();

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 11 / 33
Le langage PHP Les fonctions

Les fonctions en PHP


Les variables déclarées dans une fonction, sont locales ; elles n’ont
d’existence que le temps de l’exécution de la fonction.
Les variables déclarées à l’extérieur d’une fonction, sont dites globales. Elles
ne sont pas directement accessibles dans la fonction ; pour les utiliser, il faut
les référencer.
Les variables déclarées statique dans une fonction, ne sont pas détruites une
fois la fonction terminée.
$a="variable globale";
function test(){
static $c=1;
$b="variable locale";
global $a;
$c+=1;
echo "Dans la fonction: a=$a, b= $b, c =", $c,"<br>";
}
test();
echo "Hors de la fonction: a= $a<br>";
test();
Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 12 / 33
Le langage PHP Les fonctions

Paramètres & Appels dynamiques

Il est possible re passer les paramètres par valeur ou par référence :


function maFonction($valeur, &$ref){...}
Il est possible de placer le nom d’une fonction dans une variable, puis
utiliser cette variable comme une fonction :
if($v<0){
$Mavar = ‘‘maFonction1’’;
else
$Mavar = ‘‘maFonction2’’;
On peut donc ainsi placer plusieurs fonctions dans un tableau, et
déterminer dynamiquement grâce aux indices, la fonction à utiliser.

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 13 / 33
Le langage PHP Les tableaux

Les tableaux en PHP

PHP implémente les tableaux suivant le mécanisme des tableaux


associatif, donné par une suite de couples clé =>valeur.
clé peut être soit littéral, numérique ou mixte (littéral et numérique).
Deux méthodes d’initialisation de tableau sont possibles :
En listant les valeurs une par une
En utilisant le constructeur array()
l’accès à la valeur d’un élément du tableau $TAB se fait par $TAB[clé]

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 14 / 33
Le langage PHP Les tableaux

Les tableaux à clé littérale

Initialisation individuelle
Exemple :
$CAP0["Cameroun"]="Yaoundé";
$CAP0["Gabon"]="Libreville";
$CAP0["Nigeria"]="Abuja";
Constructeur Array()
Exemple
$CAP1=array(
"France"=>"Paris",
"Espagne"=>"Madrid",
"Italie"=>"Rome");
Accès : $CAP0[“Cameroun”]

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 15 / 33
Le langage PHP Les tableaux

Les tableaux à clé numérique


Initialisation individuelle : indices commençant à zéro (par défaut)
Exemple :
$Ville0[]="Yaoundé";
$Ville0[]="Libreville";
$Ville0[]="Abuja";
Initialisation individuelle : choix du début d’indices
Exemple :
$Ville1[2]="Paris";
$Ville1[]="Madrid";
$Ville1[]="Rome";
Constructeur Array()
Exemple
$Ville0=array("Yaoundé","Libreville","Abuja");
$Ville1=array(2=>"Paris","Madrid","Rome");
Accès : $Ville0[1] ou $Ville1[3]
Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 16 / 33
Le langage PHP Les tableaux

Les tableaux à clé mixte

Initialisation individuelle : indices commençant à zéro (par défaut)


Exemple :
$Ville[]="Yaoundé";
$Ville[]="Libreville";
$Ville[]="Abuja";
$Ville["A"]="Douala";
$Ville["B"]="Port-Gentil";
$Ville["C"]="Lagos";
Constructeur Array()
Exemple
$Ville1=array("Yaoundé","Libreville","Abuja",
"A"=>"Douala","B"=>"Port-Gentil","C"=>"Lagos");
Accès : $Ville[2] ou $Ville[“C”]

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 17 / 33
Le langage PHP Les tableaux

Fonctions utiles pour les tableaux

reset($T) place le curseur au début du tableau


next($T) déplace le curseur d’une position vers la droite
prev($T) déplace le curseur d’une position vers la gauche
end($T) place le curseur sur le dernier élément du tableau
current($T) renvoie la valeur de l’élément courant
key($T) renvoie la valeur de clé de l’élément courant
count($T) renvoie le nombre d’éléments du tableau
asort($T) trie le tableau dans l’ordre croissant des valeurs. les clés suivent les valeurs

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 18 / 33
Le langage PHP Les tableaux

Parcourir un tableau

Forme générale :
for(reset($CAP1); $CLE=key($CAP1); next($CAP1)){
$val=pos($CAP1);
echo "La valeur = $val et la clé = $CLE<br>";
}

Avec foreach
foreach($Ville as $CLE=>$VAL){
echo "La valeur = $VAL et la clé = $CLE<br>";
}

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 19 / 33
Le langage PHP Les tableaux

Les tableaux multidimensionnels

Les clés sont simples, mais les valeurs sont des tableaux
$pieces=array(
"Voitures" => array("roue","volant","portière"),
"Velo" => array("guidon","rayon","pedalier","cha^ ıne"),
"bateau" => array("voile","proue","poupe","pont")
);

Parcours
foreach($pieces as $CLE=>$VAL){
echo "La clé = $CLE<br>";
foreach($VAL as $C=>$V){
echo "La valeur = $V et la clé = $C<br>";
}
}

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 20 / 33
Le langage PHP Les chaines de caractères

Manipulation des chaines de caractères


Transformation d’une chaı̂ne en tableau et tableau en chaı̂ne :
implode(tableau,délimiteur)
echo implode($Ville,"**");
explode(délimiteur,chaı̂ne)
$T = explode("-","je-penses-donc-je-suis");
foreach($T as $C=>$V){
echo $C, "--",$V,"<BR>";
}
Codage d’URL
urlencode() permet de coder une URL
$ch="texte à coder; 10% de remise";
echo urlencode($ch);
Affiche : texte+%C3%A0+coder%3B+10%25+de+remise où :
% marque le début du codage,
C3, A0, ... caractère codé en hexadécimal
Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 21 / 33
Le langage PHP Les chaines de caractères

Manipulation des chaı̂nes de caractères

parse url(url) : renvoie un tableau associatif contenant les différents éléments de


l’URL passés en paramètre.
$ch="http://www.fs.udouala.fr:8080/monCours/";
$VAL= parse url($ch);
foreach($VAL as $C=>$V){
echo "$C : $V <br>";
}
crypt(chaı̂ne,base) : retourne une chaı̂ne cryptée suivant la base
echo crypt("Bonjour","abc");

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 22 / 33
Le langage PHP Les fichiers textes

Les fichiers textes


fopen(nomFichier,mode) ouvre un fichier et renvoie un identificateur ou false si
l’ouverture a échoué.
les valeurs de mode sont : w (écriture seule), r (lecture seule) et a
(ajout en écriture)
$fich = fopen("donnee.txt", "w")
fputs(identificateur,chaı̂ne) écris une chaı̂ne de caractères dans un fichier
fgets(identificateur,long) lit dune chaı̂ne de caractère de longueur long dans un fichier
feof(identficateur) teste la fin de fichier et renvoie true ou false selon que la fin est
atteinte ou non.
fclose(identificateur) ferme le fichier
file exists(nomFichier) teste l’existence d’un fichier
$fich = "../rep/monfich.txt";
if(file exists($fich)){
echo "le fichier ", $fich," existe";
}else{
echo "le fichier ", $fich," n’existe pas";
}

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 23 / 33
Le langage PHP Les fichiers textes

Les fichiers textes

unlink(nomFichier) détruit le fichier nomFichier, s’il est fermé


filesize(nomFichier) envoie la taille du fichier en nombre d’octets
file(nomFichier) transfère tout le contenu du fichier dans un tableau
Un nom de fichier peut être une URL.
$fich = fopen("http://www.google.com", "r")

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 24 / 33
Interactions client-serveur Accès aux répertoires sur le serveur

Accès aux répertoires du serveur

getcwd() retourne le répertoire courant ou false en cas de problème.


chdir(nomRepertoire) permet de changer de répertoire.
echo "Vous travaillez dans le repertoire:", getcwd();
chdir("../");
echo "<br>Vous travaillez maintenant dans le repertoire:",getcwd();

Liste des entrées d’un répertoire :


$chemin="../";
if(is dir($chemin)){
if($lien=opendir($chemin)){
while(($entree = readdir($lien) !== false)){
echo "fichier:$entree--type:",filetype($chemin.$entree),"<br>";
}
closedir($lien);
}
}

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 25 / 33
Interactions client-serveur Upload de fichier

Côté client

Code HTML
<h1>Transfert de fichier c^oté client</h1>
<form name="form2" action="trans.php" method="post"
enctype="multipart/form-data">
Choisissez un fichier <br>
<input type="file" name="fichclient"><br>
<input type="hidden" name="MAX FILE SIZE" value="20000">
<input type="submit" name="transfert" value="Transférer"><br>
</form>

La méthode doit impérativement être post.

Le champ caché max FILE SIZE est imposé, et indique la taille maximum
autorisée.
L’encodage du fichier doit être multipart/form-data.

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 26 / 33
Interactions client-serveur Upload de fichier

Côté serveur

Script PHP
<?php
//nom du fichier temporaire crée sur le serveur
$temp = $ FILES["fichclient"]["tmp name"];
//nom du fichier chez le client
$fich = $ FILES["fichclient"]["name"];
$taille = $ FILES["fichclient"]["size"];
if(is uploaded file($temp)){
$nfich= "rep/".$fich;
if(copy($temp,$nfich)){
echo "Le fichier transféré est sauvegardé sous le
nom: $nfich<br>\n";
echo "taille du fichier: $taille Octets\n";
}else{ echo "problème de mise en place du fichier"; exit;}
}else{ echo "problème de transfert du fichier"; exit; }
?>

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 27 / 33
Interactions client-serveur Interagir avec une base de donnée

Le web dynamique

Sur un site web dynamique, les pages peuvent ne pas être explicitement
stockées dans un format HTML
Le processus d’interaction est le suivant :
1 Le client par une requête, sollicite une page
2 La requête est adressée au serveur d’application, qui génèrera la page,
3 Le serveur d’application sollicite éventuellement des données du SGBD
4 Le SGBD fournit les données attendues
5 Le serveur d’application renvoie la page générée au serveur web

6 Le serveur web répond au client

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 28 / 33
Interactions client-serveur Interagir avec une base de donnée

Étapes du processus

L’interaction avec un SGBD sous PHP ce fait suivant les 4 étapes


ci-après (et dans cet ordre) :
Connexion au SGBD
Choix de la base de données
Soumission de la requête
Récupération et exploitation des résultats

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 29 / 33
Interactions client-serveur Interagir avec une base de donnée

Connexion au SGBD MySQL

Pour accéder à un SGBD MySQL, 3 informations sont nécessaires :


L’adresse du serveur,
Le login du client,
Le mot de passe du client.

Script PHP
$host="localhost";
$user="root";
$passwd="";
if(!($lien=mysqli connect($host,$user,$passwd))){
echo "problème de connexion au serveur";
echo mysql error($lien); exit;
}else{
echo "dans la base";
mysqli close($lien);
}

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 30 / 33
Interactions client-serveur Interagir avec une base de donnée

Choix de la BD

Script PHP
$bd= "miage";
if(!mysqli select db($lien,$bd)){
echo "Problème de connexion à la BD $bd";
echo mysqli error($lien); exit;
}else{
echo "dans la bd $bd";
}

mysqli select db(connexion,nomBD) permet de sélectionner une BD


particulière sur le serveur.

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 31 / 33
Interactions client-serveur Interagir avec une base de donnée

Soumission de requête

Script PHP
function formToDB($lien,$table){
//Récupération des données du formulaire
$prenom = $ POST["prenom"];
$nom = $ POST["nom"];
$mail = $ POST["mail"];
$hobbies= $ POST["hobbies"];
//formalisation de la requ^ ete SQL
$req =" INSERT INTO ‘info‘ (‘nom‘, ‘prenom‘,‘email‘, ‘hobbies‘)
VALUES (’$nom’, ’$prenom’,’$mail’, ’$hobbies’)";
//tentative d’écriture dans la BD
if(!mysqli query($lien,$req)){
echo "Problème d’exécution de la requ^
ete $req";
echo mysqli error($lien); exit;
}
}

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 32 / 33
Interactions client-serveur Interagir avec une base de donnée

récupération et exploitation du résultat

Script PHP
function getData($lien,$table){
//formalisation de la requ^ ete SQL
$req =" SELECT * FROM ‘info‘";
//tentative d’écriture dans la BD
if(!($rep=mysqli query($lien,$req))){
echo "Problème d’exécution de la requ^
ete $req";
echo mysqli error($lien); exit;
}else{
$nbre = mysqli num rows($rep);
echo "<H3> Nous avons déja $nbre enregistrements dans la BD";
echo "<table>\n";
echo "<thead><tr> <th>Noms</th> <th>Prénoms</th> <th>Emails</th>
<th>Hobbies</th></tr></thead>";
while($data = mysqli fetch row($rep)){
echo "<tr><td>",$data[0],"</td><td>",$data[1],
"</td><td>",$data[2],"</td><td>", $data[3],"</td><tr>";
}
echo "</table>\n";
}
}

Rodrigue DJEUMEN Cours : Ingéniérie des application web et mobiles 6 octobre 2019 33 / 33

Vous aimerez peut-être aussi