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 : [Link] : 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 [Link] :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="[Link]
$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("[Link]", "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/[Link]";
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("[Link] "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="[Link]" 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