POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php ›...
Transcript of POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php ›...
![Page 1: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/1.jpg)
PHP 5
1
POEC – PHP 2017
![Page 2: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/2.jpg)
Qu'est-ce que PHP ?
PHP (PHP Hypertext PreProcessor) est un langage de programmation.
Il s’agit d’un langage interprété et indépendant de la plate-forme d'exécution.
Il permet de générer des pages HTML dynamiques.
Il s’avère utile pour utiliser de ressources serveurs comme des bases de données.
Une large communauté d’utilisateurs PHP existe. De nombreuses documentations et ressources sont disponibles.
2
![Page 3: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/3.jpg)
Licence de PHP ?
PHP est distribué via une licence propre qui permet
sa rediffusion,
son utilisation,
sa modification.
PHP est distribué librement et gratuitement.
3
![Page 4: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/4.jpg)
Que faire avec PHP ?
Des sites Web
La partie serveur de tout type d’application :
Application Web
Application mobile
Applications utilisables en ligne de commande (scripting)
4
![Page 5: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/5.jpg)
Quelques technologies concurrentes à PHP
• JSP : Java-Server Pages
• Technologie de Sun
• Semblable à PHP mais la partie dynamique est écrite en Java
• ASP.Net: Active Server Pages
• Produit de Microsoft
• Contenu dynamique pouvant être écrit dans tous les langages de la plateforme .Net (les plus utilisés étant le C# et le VB.Net)
• Le choix entre PHP, JSP et ASP.Net est plus "politique" que technique.
5
![Page 6: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/6.jpg)
Intérêts d’utiliser PHP
• Très populaire et très utilisé– Utilisé par des sites internet à très fort trafic tels Yahoo ou Facebook
• Amène un certain nombre de personnes à améliorer le langage
– Simplifie l’accès à de la documentation
• Syntaxe simple à prendre en main (héritée du C, du Shell et du Perl)
• Très portable (fonctionne sous Windows, Linux, Mac…)
• Extensible par de nombreuses bibliothèques– calcul mathématique, – création dynamique d'images, – connexions sécurisées, – accès à la plupart des SGBD
6
![Page 7: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/7.jpg)
Intérêts d’utiliser PHP
• Un fichier PHP (.php) peut contenir
– du code HTML
– du code PHP
– du code JavaScript
• Logiciel open source (donc plus facilement extensible) et disponible gratuitement
• Conçu pour fonctionner efficacement avec le serveur Apache, lui aussi en open source
7
![Page 8: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/8.jpg)
Historique
• 1994 : créé par Rasmus Lerdorf pour ses besoins personnels
• très succinct
• savoir qui venait consulter son CV en ligne
• 1995 : première version publique
• interpréteur du code très simple (quelques macros) et quelques utilitaires
• gestion d'un livre d'or
• gestion d'un compteur d'accès
8
![Page 9: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/9.jpg)
Historique
• Eté 1995 : deuxième version
– Nommée PHP/FI pour Personnal Home Page Tools / Form Interpreter
• réécriture de l'interpréteur
• ajout de la gestion des formulaires (Form Interpreter)
• support pour MySql
• Eté 1997 : plus de 50 000 sites Web utilisent PHP/FI
• Fin 1997 : PHP devient un projet d'équipe
• réécriture complète de l'interpréteur par Zeev Suraski et Andi Gutmans
• donne naissance à PHP3
9
![Page 10: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/10.jpg)
Historique• Eté 1999 : succès de PHP3
• 150 000 sites Web utilisent PHP3
• PHP : Hypertext PreProcessor
• Une des principales nouveautés: une API modulaire. N’importe quel développeur peut créer ses propres modules.
• 2000 : PHP4
• le projet est maintenant dirigé par Zend, société privée créée par Suraski et Gutmansqui commercialise des logiciels complémentaires à PHP
• interpréteur optimisé par Zend et ouverture de PHP à d'autres serveurs HTTP qu'Apache
• 2004 : PHP5
– Sortie du moteur Zend Engine II avec un nouveau modèle objet
• Aujourd’hui PHP est utilisé par 78% de l’ensemble des sites internet.
10
![Page 11: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/11.jpg)
Mise en place de PHP
Installation et configuration
Installation d’un poste de développement
11
![Page 12: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/12.jpg)
Installation et configuration
• Dans la plupart des cas PHP est couplé à un serveur web.
• Il est donc nécessaire d’installer– PHP– Un serveur Web
• Le plus utilisé avec PHP est Apache (licence OpenSource)
– Un moteur de base de données relationnelles• Le plus utilisé avec PHP est MySQL (licence OpenSource)
• Une fois installés il est nécessaire de configurer les différents outils afin qu’ils fonctionnent bien ensemble.
12
![Page 13: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/13.jpg)
Installation d’un poste de développement
• Afin de faciliter la tâche aux développeurs il existe des outils installant directement des versions d’Apache, PHP et MySQL préconfigurées :– Wamp Server– EasyPHP– Xampp
• Ces outils intègrent aussi des utilitaires tels que PHPMyAdmin ou SQLiteManager qui facilitent la vie des développeurs
• Pour PHP 5 le plus utilisé est WAMP Server– www.wamp5.com
13
![Page 14: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/14.jpg)
Première utilisation de Wamp Server
14
Par défaut le serveur Apache crée un nom de
domaine virtuel (car local) http://127.0.0.1 ou
http://localhost.
La sélection du raccourci Localhost dans le menu de
Wamp Server ouvre http://localhost et affiche la
page par défaut (index.php).
Il s’agit du contenu du répertoire www du serveur
local (C:\wamp\www\)
![Page 15: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/15.jpg)
Installation d’un poste de développement
• Un éditeur de texte suffit à développer en PHP.
(bloc note, sublime text 2, notepad, …)
• Toutefois, pour faciliter le développement il est conseillé d’utiliser un environnement de développement intégré (IDE) :– Eclipse for PHP developers (Open source)
– Aptana (Open source)
– Zend Studio (payant, une version d’évaluation existe)
15
![Page 16: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/16.jpg)
Vérification du bon fonctionnement
• phpinfo() permet d'afficher les informations relatives à la configuration de PHP sur le serveur
– options de compilation, extensions, version, informations sur le serveur, environnement PHP, chemins, utilisateur, en-têtes HTTP, et licence GNU Public License
– contenu de toutes les variables EGPCS (Environnement, GET, POST, Cookie, Serveur)
16
<?php phpinfo(); ?>
![Page 17: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/17.jpg)
Le fichier de configuration de PHP
• Il s’agit du fichier php.ini
• Il est généralement dans /etc/php<version>/
• Il contrôle les principaux comportements de PHP
• Il est très clair et très facilement configurable:– Sa syntaxe est la suivante: clef="valeur"
– Un ; marque les lignes de commentaire
– Il est segmenté en parties : options du langage, ressources maximales allouées à PHP, gestion des erreurs, gestion des données HTTP, fichiers et répertoires, ajout et configuration des modules PHP (mail, SGBD, debugger, …)
17
![Page 18: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/18.jpg)
Principe de fonctionnement
Théorie
Mise en pratique
18
![Page 19: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/19.jpg)
Principe
• L'interpréteur de code PHP est intégré au serveur HTTP
• Le serveur lit les instructions PHP intégrées à la page HTML, interprète ces instructions et les remplace par le résultat de leur exécution
19
![Page 20: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/20.jpg)
Principe
20
Navigateurclient
Serveur WebDémon HTTP
1 Requête HTTPdemandant index.php
DD
4 Réponse HTTP
recherche de index.phpsur le disque
2
SGBD
Poste client Site serveur
InterpréteurPHP
requêtes SQL éventuelles
interprétation descommandes PHP3
code HTML/JavaScript
Affichage dela page
![Page 21: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/21.jpg)
Principe
• Fonctionnement de l'interpréteur PHP :
• Un bloc PHP est un groupe de lignes encadré par deux balises <?php ?>
• Toute ligne située à l'extérieur de ces balises n'est pas interprétée : elle est recopiée à l'identique sur la sortie standard,
• Toute ligne située à l'intérieur de ces balises est interprétée par le moteur comme une instruction PHP.
21
![Page 22: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/22.jpg)
Principe
– Les instructions PHP n'apparaissent pas dans le flux de sortie généré,
– Lorsqu'une erreur se produit, un message explicatif est intégré dans le flux de sortie et l'analyse du code est interrompue (sauf si warning).
22
![Page 23: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/23.jpg)
Balises d’ouverture et de fermeture• Le début et la fin des portions de code PHP sont signalés grâce à
des balises d’ouverture et de fermeture.
• Seul ce qui est entre ces balises est interprété.
• Il est conseillé d’utiliser la syntaxe suivante:
23
<?php echo "Bonjour !"; ?>
![Page 24: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/24.jpg)
Balises d’ouverture et de fermeture
• On trouve aussi couramment
Cette syntaxe peut poser des problèmes de compatibilité avec le langage XML.
Cette syntaxe est utilisé par Microsoft FrontPage (style ASP)
24
<? echo "Bonjour !"; ?>
<% echo "Bonjour !"; %>
![Page 25: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/25.jpg)
25
Les fichiers HTML portant du code PHP ont l'extension .php
Intégrer du PHP dans une page HTML
<html>
<head>
<title>PHP</title>
</head>
<body>
Première page PHP<br />
<?php
echo "Bonjour" ; // ou print "Bonjour";
?>
</body>
</html>
![Page 26: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/26.jpg)
26
Code PHP traduit en HTML
dans la page :
<html>
<head><title>Page PHP</title></head>
<body>
Première page PHP<br />
Bonjour
</body>
</html>
Page reçue par le client
![Page 27: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/27.jpg)
Intégrer du PHP dans une page HTML
• Le ; est le séparateur d'instructions
• Entrelacement de code HTML et PHP
27
<?php
echo "Bonjour Monsieur";
echo $nom;
?>
<?php
echo '<p>Ceci est du code PHP</p>';
echo '<img src="./image.gif" alt="Mon image">';
?>
![Page 28: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/28.jpg)
Les bases du langage PHP
Types, chaînes de caractères, tableaux, opérateurs, instructions conditionnelles,
boucles, fonctions, variables, objets
28
![Page 29: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/29.jpg)
Commentaires• PHP possède comme les langages Java ou C# des commentaires sur
ligne simple et des commentaires multi-lignes.
– La séquence // permet de commenter une ligne complète– Les commentaires multi-lignes sont introduits par la séquence /* et se
terminent par */
29
<?php
/*
commentaire sur plusieurs lignes
*/
// commentaire sur une seul ligne
echo "Ceci n’est pas un commentaire";
?>
![Page 30: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/30.jpg)
La casse
• Les noms de fonction sont insensibles à la casse:
• En revanche les noms de variables sont sensibles à la casse:
30
echo $nom; // etecho $NOM; // concernent deux variables différentes
echo "Bonjour"; etEcHo "Bonjour"; sont équivalents
![Page 31: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/31.jpg)
Types de données
Comme tout langage de programmation, PHP dispose de plusieurs types de données.
Type scalaire : String (chaînes de caractères) ‘bonjour’
Bool (true ou false) true
Int (entiers signés) 12
Float – double (réels signés) 4.63
Type composite : Object (objets) new stdClass()
Array (tableau) array(2, ‘matelli’)
Type spécial : Ressource (descripteur abstrait) fopen(...)
31
![Page 32: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/32.jpg)
Variables
Les noms de variables sont précédés d'un $
Le langage PHP est faiblement typé: Il n’est pas nécessaire de déclarer le type d’une variable avant de l’utiliser
Il n’est pas nécessaire de déclarer sa variable
32
<?php$i = 2;$texte = ‘Hello world !‘
?>
$maVariable;
![Page 33: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/33.jpg)
Nommage des variables
Ce qu'il faut éviter : Les variables trop longues
Les variables peu compréhensibles
Les variables quasi-semblables
Pour nommer une variable qui contient plusieurs mots, deux écritures sont recommandées : CamelCaseVars
plusieurs_mots
33
![Page 34: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/34.jpg)
Constantes
Les constantes sont déclarées grâce à la fonction define
Pour utiliser une constante, il suffit de l'intégrer dans son code. Sans quotes, ni rien d’autre...
Par convention, les constantes sont toujours écrites en majuscules
34
<?php
define ('MA_CONSTANTE' , 5);
/*...*/
$resultat = 100 * MA_CONSTANTE;
echo MA_CONSTANTE;
?>
![Page 35: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/35.jpg)
Booléens, entiers et flottants• Les booléens
• true ou false• sont considérés comme faux : le booléen FALSE, l'entier 0, le flottant 0.0,
"" ou "0", un tableau vide, un objet vide, la constante NULL
• Entiers positifs ou négatifs dans différentes bases
– Pas de division entière mais transtypage (cast) possible
• Les flottants
35
$i = -5; // Entier en base 10$i = 012; // Entier base 8$i = 0x12; // Entier en base 16
$i = (int) (7/3) // i aura pour valeur 2
$f = -1.3;$f = 1.2e-3; // f vaudra ici 0,0012
![Page 36: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/36.jpg)
Chaînes de caractères
• Les chaînes de caractères doivent systématiquement être entourées de
quotes. Ces quotes peuvent être simples ou doubles (apostrophe ou
guillemet)
• PHP tentera d’interpréter tout ce qui est entre doubles quotes tandis
qu’il n’interprétera pas ce qui est entre simples quotes.
36
$ch1 = 'Bonjour';
$ch2 = "$ch1 Monsieur !\n";
<?php
$hello = ‘bonjour';
echo "la variable vaut $hello";
//affiche : la variable vaut bonjour
echo 'la variable vaut $hello';
//affiche : la variable vaut $hello
?>
![Page 37: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/37.jpg)
Les tableaux
• Un tableau est un type de variable dit ‘composite’
• Ce type peut contenir d’autres variables
– De tout type
– Y compris tableau (tableau dans un tableau)
• On range des valeurs...
• Dans des index
– Numériques (tableau numérique)
– Ou littéraux (tableau associatif)37
![Page 38: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/38.jpg)
Les tableaux indexés numériquement
• Création
• Utilisation
38
$tab = array("Nicolas", "Paul", "Caroline" ,"Julie", "Jean");// ou$tab[0] = "Nicolas";$tab[] = "Julien";
echo $tab[1];
echo '<br />';
echo $tab[2];
Clé Valeur
0 Nicolas
1 Paul
2 Caroline
3 Julie
4 Jean
… …
![Page 39: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/39.jpg)
Les tableaux associatifs
39
• Création
• Utilisation
<?php$tableau = array(
'prenom' => 'Paul' ,'nom' => 'Paris' ,'adresse' => '1 avenue Victor Hugo''ville' => 'Paris'
);
echo $tab['prenom'];
echo '<br />';
echo $tab['adresse'];
Clé Valeur
prenom François
nom Dupont
adresse 3 Rue du Paradis
ville Marseille
![Page 40: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/40.jpg)
Les tableaux multidimensionnels
40
• Création Utilisation
<?php$tableau = array(
'prenom' => 'Cyril' ,'ville' => 'Paris' ,'poste' => 'Consultant informatique''telephone' =>
array('0145012345','0145321232')) ;
// ou bien$tableau[0] = array(2,4,6);$tableau[1] = array(1,3,5);
//ou bien$tab[0][] = 8;?>
<?php
echo 'Son premier numéro de téléphone est :
';
echo $tableau['telephone'][0];
echo 'Son second numero de téléphone est :
';
echo $tableau['telephone'][1];
echo 'Nombres pairs :';
echo $tableau[0][0];
echo $tableau[0][1];
echo $tableau[0][2];
?>
![Page 41: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/41.jpg)
Traitements de base
41
![Page 42: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/42.jpg)
Les opérateurs
• Les opérateurs sont des symboles qui permettent de manipuler des variables.
• Ils permettent notamment
– d'effectuer des opérations
– d'affecter des valeurs
– de comparer des valeurs
42
![Page 43: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/43.jpg)
Les opérateurs d’affectation
• affectation avec le signe =
• les opérateurs combinés : +=, -=, *=, /=, .=, &=, |=, ^=, <<=, >>=, ~=
• ++ est équivalent à += 1, -- est équivalent à -= 1
43
$a = ($b = 4) + 1; // $b vaut 4 et $a vaut 5
$a += 1; // équivalent à $a = $a + 1;
$ch .= "!"; // équivalent à $ch = $ch . "!";
$i = 0;
echo ++$i; // incrémente $i puis affiche 1
echo $i++; // affiche 1 puis incrémente $i
echo $i; // affiche 2
![Page 44: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/44.jpg)
Les opérateurs de comparaison
• Egal à : $a == $b
• Différent de : $a != $b
• Inférieur à : $a < $b
• Supérieur à : $a > $b
• Inférieur ou égal à : $a <= $b
• Supérieur ou égal à : $a >= $b
44
![Page 45: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/45.jpg)
L’opérateur ternaire
• L’opérateur fonctionne selon le principe suivant :
retour = (condition) ? (expr1) : (expr2);
• retour vaut expr1 si condition est vraie et expr2 si condition est fausse
45
$a = 2;$b = 3;$max = ($a >= $b) ? $a : $b; // $max vaudra $b, soit 3
![Page 46: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/46.jpg)
Les opérateurs binaires
• ET bit à bit : $a & $b
• OR bit à bit : $a | $b
• XOR bit à bit : $a ^ $b
• NON bit à bit : ~$a
• décalage à droite de $b bits : $a >> $b
• décalage à gauche de $b bits : $a << $b
46
![Page 47: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/47.jpg)
Les opérateurs logiques
• ET logique : and, && (les deux sont possibles)
• OU logique : or, ||
• XOR logique : xor
• NON logique : !
47
![Page 48: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/48.jpg)
La concaténation
• Concaténation de chaîne de caractère (.)
48
$ch1 = "Bonjour ";
$ch2 = "Monsieur";
$ch = $ch1 . $ch2
echo $ch . " Martin" . ' !';
// Affiche "Bonjour Monsieur Martin !"
![Page 49: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/49.jpg)
Les structures de contrôle
• Les structures de contrôles permettent de poser des conditions à l’exécution d’une instruction.
• Exemple:
– Si un visiteur a entre 12 et 25 ans
• Il a le profil jeune
– Si un visiteur a entre 25 et 65 ans
• Il a le profil adulte
49
![Page 50: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/50.jpg)
L’instruction if
50
<?php
$age = 25;
if($age < 18)
{
exit ('Vous êtes trop jeune pour entrer ici');
//La fonction exit() arrête l'exécution du script
}
?>
![Page 51: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/51.jpg)
L’instruction if / else
51
<?php
$temps = 'moche';
if($temps == 'ensoleillé')
{
echo 'Il fait beau';
}
else
{
echo 'Il ne fait pas beau';
}
?>
![Page 52: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/52.jpg)
L’instruction if / elseif
52
<?php
$nombre = 2 ;
if ($nombre > 1)
{
echo "$nombre est supérieur à 1";
}
elseif ($nombre < 1)
{
echo "$nombre est inférieur à 1";
}
else
{
echo "$nombre est égal à 1";
}
?>
![Page 53: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/53.jpg)
L’instruction switch
• Le switch a un comportement similaire à un long if / elseif / … / elsemais avec une syntaxe plus facile à lire
• Le Switch exécute les instructions dans l’ordre. D’où l’importance des break.
53
switch( $var )
{
case 1 :
echo '$var vaut 1';
break;
case 10 :
echo '$var vaut 10';
break;
default :
echo '$var ne vaut ni 1 ni 10';
break;
}
![Page 54: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/54.jpg)
La boucle while
• L'instruction while correspond à "tant que".
• On pourra exécuter des instructions tant qu'une condition sera remplie
• Le programme commence par tester si la condition est vraie.
54
![Page 55: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/55.jpg)
La boucle while
• La boucle while exécute le code du programme jusqu’à ce que la condition devienne fausse.
55
<?php
$i = 1;
while ( $i <= 10 )
{
echo $i;
$i++;
}
?>
![Page 56: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/56.jpg)
La boucle for
• Identique fonctionnellement à la boucle while
• La boucle for intègre un compteur sous la forme d'une variable
– for (initialisation ; condition ; incrémentation)
56
<?php
for ( $i = 0 ; $i < 10 ; $i++)
{
echo $i ;
}
// Affichera 0123456789
?>
![Page 57: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/57.jpg)
La boucle for each
• La boucle foreach s'applique à un tableau
• Elle permet de boucler sur chacune de ses cellules.
– foreach (tableau as clef => valeur)
57
<?php
$tab['prenom'] = ‘Victor';
$tab['nom'] = ‘Hugo';
foreach ($tab as $key => $value)
{
echo $key . ' = ' . $value . '<br>' ;
}
?>
![Page 58: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/58.jpg)
Fonctions utilisateur
58
![Page 59: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/59.jpg)
Les types de fonction
• Il existe deux types de fonctions en PHP :
– les fonctions dites natives :
• que vous pouvez employer sans faire appel à des librairies (phpinfo(), date()…)
– les fonctions dites « utilisateur » :
• qui sont déclarées par vous-même,
• qui sont en général définies dans un fichier précis (une bibliothèque).
59
![Page 60: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/60.jpg)
Fonctions utilisateur: déclaration
• La définition d'une fonction s'appelle déclaration et peut se faire n'importe où dans le code grâce au mot-clé function.
– Les fonctions sont insensibles à la casse
– Elles doivent commencer par une lettre ou un _
– 2 fonctions ne peuvent avoir le même nom
• attention aux noms des fonctions PHP natives
60
<?php
function dire_bonjour($qui)
{
echo "Bonjour $qui";
}
?>
<?php
function phpinfo()
{
echo "infos sur PHP";
}
// Fatal error
![Page 61: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/61.jpg)
Fonctions utilisateur: les arguments
• Les arguments peuvent être optionnels, pour cela , il suffit de leur donner une valeur par
61
<?php
function dire_bonjour($qui = ‘Paul')
{
echo "Bonjour $qui";
}
dire_bonjour ('Pierre');
// affiche 'Bonjour Pierre'
affiche_bonjour();
// affiche 'Bonjour Paul'
?>
![Page 62: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/62.jpg)
Fonctions utilisateur: valeur de retour
• La fonction peut renvoyer une valeur grâce au mot clé return.
• return renvoie la valeur spécifiée et arrête l'exécution de la fonction.
• On ne peut pas renvoyer plusieurs valeurs mais on peut renvoyer un tableau de valeurs.
62
<?phpfunction multiplier($var1,$var2) {
$resultat = $var1 * $var2;return $resultat;echo 'ce message ne sera jamais affiché';
}
echo multiplier(10,15);// affiche 150
?>
![Page 63: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/63.jpg)
Fonctions utilisateur: passage par copie
• Par défaut les arguments reçus par une fonction sont passés par copie.
– Les modifications effectuées sur les variables au sein de la fonction ne seront pas appliquées dans le programme principal.
63
<?php
function incrementer($var1)
{
$var1++;
}
$mavar = 10;
incrementer($mavar);
echo $mavar;
// affiche 10
?>
![Page 64: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/64.jpg)
Fonctions utilisateur: passage par référence
• On peut changer le comportement par défaut (passage par copie) en spécifiant dans la déclaration que la fonction reçoit ses arguments par référence.
– Il suffit de mettre un & devant l'argument dans la déclaration
64
<?phpfunction incrementer(&$var1) {
$var1++;} $mavar = 10;incrementer($mavar);echo $mavar;// affiche 11?>
![Page 65: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/65.jpg)
Fonctions utilisateur: portée des variables
• Les variables extérieures à une fonction ne sont pas disponibles dans cette fonction, et inversement.
• Mais il existe plusieurs niveaux de définition de variable :– Le niveau local (utilisé par défaut) : la variable ne sera visible
que dans la fonction en cours,– Le niveau global : la variable extérieure est visible dans la
fonction (importée),– Le niveau static : la variable locale à la fonction persiste durant
tout le temps d'exécution du script,– Cette variable conservera ses différentes valeurs à chaque
nouvel appel de la fonction.
65
![Page 66: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/66.jpg)
Notions avancées sur les variables
Les variables prédéfinies / Les variables globales / Les variables statiques / Les
variables dynamiques / Affichage de variables complexes
66
![Page 67: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/67.jpg)
Les variables prédéfinies
– Depuis PHP 4.1.0, des tableaux "super-globaux" sont prédéfinis
• Ils sont accessibles dans n'importe quel contexte d'exécution,
• Ils fournissent les infos sur les variables du serveur, les variables d'environnement, les variables de PHP...
– Le contenu de ces tableaux dépend de la version et de la configuration du serveur et de PHP.
67
![Page 68: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/68.jpg)
Les variables prédéfinies
– $GLOBALS : variables globales de l'exécution en cours
– $_SERVER : variables fournies par le serveur WEB
• 'PHP_SELF' (chemin du script sur le serveur),
– $_GET : variables fournies par HTTP/méthode GET
– $_POST : variables fournies par HTTP/méthode POST
– $_COOKIE : variables issues des cookies HTTP reçus
– $_FILES : variables fournies par HTTP suite à un téléchargement de fichier(s) par la méthode POST
68
![Page 69: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/69.jpg)
Les variables prédéfinies
– $_ENV : variables d'environnement positionnées au démarrage du serveur Web
– $_REQUEST : tableau associatif constitué de toutes les variables en entrée (contient en particulier $_GET, $_POST, $_COOKIE, $_FILES)
– $_SESSION : variables relatives à la session en cours
69
![Page 70: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/70.jpg)
Les variables globales
Déclarer une variable comme global dans un bloc créé une référence locale sur la variable globale
Il est aussi possible d’accéder à une variable globale grâce au tableau associatif $GLOBALS
70
<?php
$a1 = 1; $a2 = 2; // portée globale
function affiche() {
global $a1; // $a1 est la variable globale
echo $a1." et ".$GLOBALS['a2'];
$a1++;
}
affiche(); // affiche "1 et 2"
echo $a1; // affiche "2" ($a1 a été modifiée)
?>
![Page 71: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/71.jpg)
Les variables statiques
• Une variable statique a une portée locale à un bloc mais conserve sa valeur entre deux exécutions du bloc.
• Elles sont utiles pour les fonctions récursives
71
function up_to_10() {
static $cpt = 0;
$cpt++;
echo "$cpt ";
if ($cpt<10) up_to_10();
}
up_to_10(); // affiche 1 2 3 4 5 6 7 8 9 10
![Page 72: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/72.jpg)
Affichage de variables complexes
– var_dump() affiche les informations structurées d'une variable (type, valeur, …)
– print_r() affiche les informations lisibles pour une variable (par exemple affiche les clés et les valeurs d'un tableau)
72
$a = array (1, 2, "a"); var_dump ($a);
/* Affichage :
array(3) {
[0]=> int(1)
[1]=> int(2)
[2]=> string(1) "a"
} */
![Page 73: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/73.jpg)
Variables et types
– is_array(), is_bool(), is_callable(), is_double(), is_float(), is_int(), is_integer(), is_long(), is_null(), is_numeric(), is_object(), is_real(), is_resource(), is_scalar(), is_string(), gettype(), settype()
– gettype($var) retourne le type de $var : integer, double, string, array, object, ou unknown type
73
$foo = "5bar"; // chaîne
$bar = true; // booléen
settype($foo, "integer"); // $foo vaut maintenant 5
settype($bar, "string"); // $bar vaut maintenant "1"
![Page 74: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/74.jpg)
La valeur NULL
• Constante spéciale qui représente l'absence de valeur
• Valeur insensible à la casse, introduite en PHP4
• $var = NULL;
• isset($var) # retourne FALSE
• is_null($var) # retourne TRUE
• empty($var) # retourne TRUE
• $ch = "";
• isset($ch) # retourne TRUE
• is_null($ch) # retourne FALSE
• empty($ch) # retourne TRUE
74
![Page 75: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/75.jpg)
Les fichiers
• Ouvrir : fopen($nom_fichier,mode_ouverture)
• 4 modes : (r : lecture seule, r+ : lecture et écriture, a : écriture seule, a+ : lecture et écriture à la fin, création si inexistant)
• Lire : file_get_contents, fgets et fgetc pour lire tout le contenu, un caractère ou une ligne (exemple : $ligne = fgets($nom_fichier))
• Ecrire : fputs ($nom_fichier, $message)
• Fermer : fclose($nom_fichier)
75
![Page 76: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/76.jpg)
Premières applications web
Formulaires
Gestion de fichiers
76
![Page 77: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/77.jpg)
Intégration de fichiers externes• PHP a été pensé pour faciliter la conception de sites et d’applications
Web.
• L’intégration de fichiers externes permet de:
• de définir des "briques de base" qui peuvent être réutilisées plusieurs fois,
• de répercuter facilement un changement sur l'ensemble de l'application.
• Le fichier qui est inclus hérite de l'ensemble des variables du fichier qui effectue l'inclusion
• Les fichiers inclus sont analysés comme du code HTML qui peut contenir du code PHP
77
![Page 78: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/78.jpg)
Intégration de fichiers externes
Les fonctions d’inclusions sont les suivantes
– include()
• require() : similaire à include mais provoque une erreur fatale si le fichier n'existe pas (include émet seulement un warning)
• include_once et require_once : similaire à include et require. S'assurent toutefois que le fichier n'a pas déjà été inclus.
78
![Page 79: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/79.jpg)
Intégration de fichiers externes
79
//file2.php
<?php
$num = 10;
function carre($var){
return $var * $var;
}
?>
//file1.php
<?php
echo "var num avant include = $num <br/>"; //affiche var num avant include =
include 'file2.php';
echo "var num après include= " . $num . "<br/>"; //affiche var num après include =
10
echo carre(2); //affiche 4
?>
![Page 80: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/80.jpg)
Les formulaires
• Un formulaire permet d’effectuer différentes choses :
– Saisir du texte, des mots de passe
– Choisir un élément dans une liste
– Afficher un résultat
– Lancer des actions (appel de script ou ouverture de pages) avec des boutons 80
![Page 81: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/81.jpg)
Les Formulaires en HTML
• Toute la partie formulaire de la page doit se trouver entre les marqueurs <FORM> ....</FORM>
• Cette balise sert de conteneur pour accueillir les éléments ou composants du formulaire– un bouton, une ligne de texte, une liste de choix…
• Chacun de ces composants s'y trouve déclaré et est créé individuellement par une balise qui commence généralement par INPUT ou par SELECT
81
![Page 82: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/82.jpg)
Propriétés de la balise form
• Liste des propriétés :
• name : Nom du formulaire
• action : Adresse du script de serveur à exécuter
• method : Méthode d'appel du script (get ou post)
• enctype : Type d'encodage du formulaire
• target : Destination du retour du formulaire
82
![Page 83: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/83.jpg)
Méthodes de la balise form
• Liste des méthodes
• submit : Déclenche l'action du formulaire
• reset : Réinitialise les données du formulaire avec les valeurs par défaut
• Liste des événements
• onSubmit : Détecte la soumission du formulaire
• onReset : Détecte la réinitialisation
83
![Page 84: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/84.jpg)
Saisie par ligne de texte
• Ligne de texte<INPUT TYPE="text" NAME="Nom du champ"
VALUE="texte initial" SIZE=longueur ou MAXLENGTH=nb >
• L'objet INPUT permet d'afficher : – des champs texte
– des boutons
– des radio-boutons
– des cases à cocher
– un champ caché
– des champs password (***)
– les boutons spéciaux RESET et SUBMIT
84
![Page 85: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/85.jpg)
Propriétés de la balise input• Liste complète des propriétés :
• Name : nom du champ
• Type : type du champ text, button, radio, checkbox, submit, reset
• Value : Libellé texte
• Defaultvalue : valeur par défaut du champ (utile avec reset)
• Size : taille du champ
• Maxlength : taille maximale du champ de type texte
• Checked : case à cocher ou radio bouton coché ou non
• Disabled : grisé (modification impossible par le visiteur)
• readOnly : lecture seule
• Class : nom de la classe de style
• Style : chaîne de caractères pour le style
85
![Page 86: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/86.jpg)
Champ de saisie Bouton <INPUT type="button" value="Détruire la session">
Propriétés acceptées :name | value | defaultvalue | size | maxlength | disabled | readOnly | class | style
Méthodes acceptées:focus | blur | click (donne, reprend le focus, clic)
Evénements acceptés:onFocus | onBlur | onClick onFocus détecte la prise de focus onBlur détecte la perte de focus onClick détecte le clic utilisateur
86
![Page 87: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/87.jpg)
Liste de sélection
• Les listes sont définies par la balise <SELECT>. Cette balise définie la zone de la liste. Les lignes de contenu de la liste sont alimentées par la balises <OPTION>.
Voici la syntaxe générale pour créer une liste contenant des lignes :
87
<SELECT name="mono" size=1>
<OPTION value="1">ligne 1</OPTION>
<OPTION value="2">ligne 2</OPTION>
<OPTION value="3">ligne 3</OPTION>
<OPTION value="4">ligne 4</OPTION>
</SELECT>
ligne 1ligne 2ligne 3ligne 4
![Page 88: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/88.jpg)
Formulaire : Zone de texteZones de textes multi-lignes TEXTAREA
L'objet TEXTAREA est essentiellement utilisé pour permettre
au visiteur de saisir un texte assez long (message, descriptif...).
Voici la syntaxe classique pour définir une zone de texte :
88
<TEXTAREA name="texte" rows="5" cols="20">Ligne 1
Ligne 2
...
</TEXTAREA>
Ligne 1Ligne 2...
![Page 89: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/89.jpg)
Formulaires et PHP
• On associe un script PHP à un formulaire par :
• Bouton déclenchant l'action du formulaire :
• Ce formulaire déclenche une action qui ici consiste à appeler le programme ins.php
– et à l'exécuter sur le serveur
• On va utiliser les noms définis pour les champs texte : <INPUT type="text" name="nom"> pour récupérer les valeurs
89
<FORM action="ins.php" method="post">
….
</FORM>
<INPUT type="submit" value="CLIC">
![Page 90: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/90.jpg)
Exemple de formulaire
90
<FORM action="essai4.php" method="post">
NOM
<INPUT type=text name="nom"><BR>
PRENOM
<INPUT type=text name="prenom"><BR>
ADRESSE
<INPUT type=text name="adresse"><BR>
<INPUT type=submit value="CLIQUEZ ICI">
</FORM>
![Page 91: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/91.jpg)
Suite de l’exemple
91
Fichier essai4.php
Lorsqu'un formulaire est envoyé à un script PHP, toutes les variables du
formulaire seront automatiquement disponibles dans le script sous frome de
chaînes.
<html><body><H1 Mon quart d'heure de célébrité ! <BR>Bienvenue à Monsieur <? phpprint "<H1>".$_POST['prenom']";
print $_GET['nom']." </H1>" ;
?>
</body>
</html>
![Page 92: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/92.jpg)
Exemple de formulaire écrit en PHP
Ici on saisit le login et pwd, et on appelle une fonction de vérification
effectuée dans check.php.
On observera les guillemets internes à la chaîne :
echo "<form method=\"post\" action=\"check.php\">
Login : <input type=\"text\" name =\"login\"
value=\"$login\" /><br />
Password : <input type=\"password\" name =\"pass\"
value=\"$pass\" /><br />
<input type=\"submit\" value=\"Identifier\"/>
</form>";
92
Préférer les apostrophes aux guillemets doubles quand il n’y a pas besoin des deux, c’est
plus lisible et plus rapidement interprété
![Page 93: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/93.jpg)
Fonctions trim()et empty()
• La fonction trim() retire les espaces en début et fin de chaîne
– cela permet de ne pas traiter des informations vides (un utilisateur pourrait très bien n'entrer que des espaces dans le formulaire)
• La fonction empty() permet de savoir si une variable (chaîne ou bouton) a une valeur ou non.
• Cf un exemple avec formulaire.html et formul1.phpci-après
93
![Page 94: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/94.jpg)
Trim et empty (partie HTML)
94
<form action="formulaire.php" method="post">
<table>
<tr>
<td>Nom :</td>
<td><input type="text" name="nom" value=""></td>
</tr>
<tr>
<td>Prénom :</td>
<td><input type="text" name="prenom" value=""></td>
</tr>
</table>
<input type="submit" value="envoyer" name="send">
</form>
![Page 95: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/95.jpg)
Trim et empty (partie PHP)
95
<?php
$bouton = $_POST['send'];
if(!empty($bouton)) {
$nom = trim($_POST['nom']);
$prenom = trim($_POST['prenom']);
if(!empty($nom) && !empty($prenom)) {
echo 'Bonjour, '.$prenom.' '.$nom;
}
else {
echo "vous n\'avez pas rempli tous les champs";
}
}
?>
![Page 96: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/96.jpg)
Accéder à des variables de formulaire HTML
96
<?php
import_request_variables('p', 'p_'); // Importe les variables de
// POST dans l'environnement global, avec le préfixe ‘p_’ ->
// $_POST['nom'] $p_nom
echo $p_username;
// Disponibles depuis PHP 3:
echo $HTTP_POST_VARS['username'];
// echo $username;
// serait disponible si la directive ‘register_globals = on’ dans php.ini.
// Depuis PHP 4.2.0 la valeur par défaut de cette directive est à ‘off’
// Utiliser ou présumer sur cette méthode est
// fortement déconseillé; c’est une sécurité
// importante.
?>
![Page 97: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/97.jpg)
Accès aux variables avec GET
• Utiliser un formulaire de type GET est similaire, hormis le fait qu’il faut utiliser les variables prédéfinies de GET à la place.
• GET s'applique aussi à la QUERY_STRING (les informations disponibles après le '?' dans une URL).– De ce fait, par exemple,
http://www.example.com/test.php?id=3 contient les données de GET, qui sont accessibles via $_GET['id']
97
![Page 98: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/98.jpg)
Passer des variables par l’adresse URL avec _GET
98
http://www.toto.fr/index.php?var=12&a=1&b=2
Dans la page www.toto.fr/index.php, les 3 variables sont
utilisables:$_GET['var']=12
$_GET['a']=1
$_GET['b']=2
http://www.toto.fr/index.php?nom=cow&prenom=flying
<?php
$nom = $_GET['nom'];
$prenom = $_GET['prenom'];
echo 'Bonjour, '.$prenom.' '.$nom;
?>
Variables de
type String:
![Page 99: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/99.jpg)
Convention d'écriture PHP
• Localiser les parties "programme" en début de fichier
– avant tout code HTML
• Cela permet de bien séparer la partie traitement, maintenue par le programmeur
– de l'affichage, dévolue au Web designer
99
![Page 100: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/100.jpg)
Gestion des fichiers: lecture d’un fichier
• La fonction file_get_contents() prend en argument l'adresse du fichier et retourne une chaîne de caractères avec l'intégralité du contenu.
• La fonction file(), quant à elle, prend en argument une adresse de fichier et retourne le contenu dans un tableau ligne à ligne.
100
![Page 101: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/101.jpg)
Ecriture dans un fichier
• La fonction file_put_contents() prend en paramètre une adresse de fichier et une chaîne de caractères.
– La chaîne est alors écrite dans le fichier.
• Si le fichier existait déjà, son contenu est écrasé.
– Il existe une option FILE_APPEND pour ajouter du contenu à la fin.
101
![Page 102: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/102.jpg)
Tableaux : fonctions et exemples pratiques
102
![Page 103: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/103.jpg)
Compter / Supprimer
• Compter le nombre d’éléments d’un tableau
– count($tab);
• Retourne le nombre d'éléments du tableau $tab s'il existe, 1 si $tab n'est pas un tableau, 0 si $tab n'existe pas
– sizeof($tab);
• La fonction sizeof est un alias de count.
• Suppression d'un élément
– unset($tab["toto"]);
• Fonctionne aussi pour une variable
103
![Page 104: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/104.jpg)
Trier
– Le tri peut se faire sur les clés et/ou les valeurs ; l'association clé/valeur peut être cassée
– asort()/arsort() : trie le tableau par ordre croissant/décroissant de valeurs
– ksort()/krsort() : trie le tableau par ordre croissant/décroissant de clés
– sort() : trie le tableau par ordre croissant de valeurs et réassigne des clés (0,1,…) ; on perd l'association clé/valeur
– uasort()/uksort()/usort() : identiques à leur homologue mais la fonction de comparaison est fournie
104
![Page 105: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/105.jpg)
Tableaux et pointeurs
• A chaque tableau correspond un pointeur interne qui est une référence sur l'élément courant
• current($tab) désigne l'élément courant
• next($tab) déplace le pointeur vers l'élément suivant
• prev($tab) déplace le pointeur vers l'élément précédent
• end($tab) déplace le pointeur sur le dernier élément
• reset($tab) déplace le pointeur sur le premier élément
105
![Page 106: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/106.jpg)
Tableaux et pointeurs
106
$tab = array("a"=>1, "d"=>5, "b"=>8, "c"=>4);
$val = current($tab); echo "$val<br>"; // affiche "1<br>"
$val = next($tab); echo "$val<br>"; // affiche "5<br>"
asort($tab); end($tab); prev($tab); $val = prev($tab);
echo "$val<br>"; // affiche "4<br>"
![Page 107: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/107.jpg)
Extraction d’éléments d’un tableau
• list() permet d'extraire des valeurs d'un tableau
107
$tab = array(1, 8, 5); sort($tab);
list($v1, $v2) = $tab;
echo "$v1 $v2"; // affiche "1 5"
![Page 108: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/108.jpg)
Extraction d’éléments d’un tableau
– key($tab) permet d'extraire la clé de l'élément pointé par le pointeur interne du tableau
108
$tab = array("a"=>1,"b"=>8); next($tab);
$clé = key($tab); $val = $tab[$clé];
echo "$clé: $val"; // affiche "b: 8"
![Page 109: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/109.jpg)
Extraction d’éléments d’un tableau
– extract($tab) permet d'extraire d'un tableau toutes les valeurs, chaque valeur est recopiée dans une variable ayant pour nom la valeur de la clé.
– each($tab) retourne la paire clé/valeur courante du tableau et avance le pointeur de tableau ; cette paire est retournée dans un tableau de 4 éléments : 0=>clé, 1=>valeur, key=>clé et value=>valeur
109
$tab = array("a"=>1,"b"=>8); extract($tab);
echo "$b $a"; // affiche "8 1"
$tab = array("a"=>1, "d"=>5, "b"=>8, "c"=>4);
reset ($tab);
while (list ($k, $v) = each ($tab)) {
echo "$k => $v<br />\n"; }
// Quand le pointeur dépasse la fin de $tab, each retourne false
![Page 110: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/110.jpg)
chaînes de caractères : fonctions et exemples pratiques
110
![Page 111: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/111.jpg)
Chaînes de caractères
• Conversion de chaînes de caractères en valeur numérique
• la chaîne est de type flottant si elle contient '.', 'e' ou 'E' sinon elle est de type entier.
• la valeur est définie par la première partie de la chaîne (0 si c'est du texte).
111
$i = 1 + "4.5"; // $i vaut 5.5$i = 1 + "-1e3"; // $i vaut -999$i = 1 + "toto + 9"; // $i vaut 1$i = 1 + "9 + toto"; // $i vaut 10
![Page 112: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/112.jpg)
Chaînes et valeur null
• La constante NULL est convertie en "", un tableau en la chaîne "Array"
112
$i = null; echo "-$i-"; // affiche "--"$tab[0] = 1; echo "$tab"; // affiche "Array"
![Page 113: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/113.jpg)
Chaînes de caractères et affichage
• Accès aux caractères d'une chaîne
• Affichage de chaînes
• echo et print pour les affichages simples
• printf pour les variables formatées
• print_r et var_dump pour les variables complexes
113
$ch = 'Ceci est une chaîne.'; echo $ch{3}; // affiche "i"
$i = 2.98765;
printf("%.3f",$i);echo"<br/>"; // affiche 2,998
![Page 114: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/114.jpg)
Fonctions de chaînes de caractères
• Substitutions de chaînes
• addslashes(str) ajoute un \ devant tous les caractères spéciaux de la chaîne passée en argument - utile pour les requêtes aux bases de données
• stripslashes(str) effectue l'opération inverse (enlève les \)
• str_replace(search, replace, str) remplace dans str toutes les occurrences de search par replace
114
// la commande suivante affiche "Bonjour Jean"
echo str_replace("Paul", "Jean", "Bonjour Paul");
![Page 115: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/115.jpg)
Fonctions de chaînes de caractères
• Découpage de chaînes
• explode(sep, str) retourne un tableau de chaînes en scindant str à l'aide du séparateur sep
• implode(sep, tab) retourne une chaîne fabriquée par la concaténation des éléments du tableau et du séparateur sep entre chaque élément (join() fait la même chose)
• chop(str) ou rtrim(str), trim(str), ltrim(str) suppriment des caractères d'espacement dans str (" ", \t, \n, \r, \0)
115
![Page 116: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/116.jpg)
Fonctions de chaînes de caractères
• Comparaison et longueur
– strcmp(str1, str2) : comparaison binaire (comme en C)
– strlen(str) retourne la longueur de str
• Pour plus d’informations se reporter à http://www.php.net/manual/fr/ref.strings.php
116
![Page 117: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/117.jpg)
Quelques exemples pratiques sur les dates
117
![Page 118: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/118.jpg)
Date et heure
• L’affichage de la date et l'heure courante peut se faire via la fonction date
– date("format", $timestamp) retourne une chaîne de caractères qui contient la date $timestamp au format indiqué en premier argument
– $timestamp est la date Unix (nombre de secondes depuis le 1er janvier 1970)
– Si $timestamp est omis, il s'agit de la date actuelle
118
echo "Nous sommes le " . date("j m Y") . " et il est " .date("H \h i") . " mn";
![Page 119: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/119.jpg)
– La page suivante fournie l’ensemble options de formatage reconnues par la fonction date :
• http://php.net/manual/fr/function.date.php
• si le format est omis, date() retourne $timestamp
– mktime(h, m, s, M, J, A) retourne le timestamp associé à la date indiquée en paramètres
119
Date et heure
![Page 120: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/120.jpg)
GESTION DES SESSIONS UTILISATEURS
120
![Page 121: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/121.jpg)
Cookie
Jetons stockés sur le poste client contenant des informations relatives à un domaine.
Les informations sont stockés sous la forme :
clé = valeur
Uniquement des chaînes de caractères
121
![Page 122: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/122.jpg)
Cookie
Les cookies ont une durée de vie réglable (par défaut détruit lors de la fermeture du navigateur).
Ils sont disponibles via la super globale $_COOKIE
Pour ajouter un cookie en PHP il est possible d’utiliser la fonction setcookie(). Elle doit être impérativement appelé avant tout code html.
122
![Page 123: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/123.jpg)
Cookie
Cette fonction attend 2 paramètres obligatoires et 5 facultatifs :
name : le nom du cookie,
value : la valeur associés au cookie,
expire : le timestamp d’expiration,
path : le chemin relatif pour accéder à ce cookie,
domain : le domaine ou le cookie sera disponible (sous domaines)
secure : envois le cookie uniquement si la connexion est sécurisé (https)
httpOnly : envoi le cookie uniquement sur le protocole http et donc ne sera pas accessible en JavaScript.
123
![Page 124: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/124.jpg)
Session
• Un moyen de sauvegarder des informations entre 2 requêtes.
• Chaque client reçoit un identifiant de session stocké de 2 manières différentes :
– dans un cookie avec pour clé PHPSESSID
• impossibilité de garder la session si le client inhibe les cookies.
– dans l’url avec la constante SID
• le client voit sont SESSIONID et peut le modifier.
124
![Page 125: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/125.jpg)
• Lorsque le client effectue une requête, le serveur vérifie si une session a déjà été ouverte :
– Automatiquement : session.auto_start est à 1 dans php.ini
– Manuellement : avec les fonctions session_start() ou session_register().
125
![Page 126: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/126.jpg)
Session
La session peut être détruite de plusieurs façons :
Par le serveur
au bout d’un certain temps d’inactivité (30mn par défaut, configurable),
en appelant la fonction session_destroy().
Il faut néanmoins vider la session avec la fonction unset().
126
![Page 127: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/127.jpg)
Session
Par le client
lorsque l’on ferme son navigateur,
127
session_start();
$_SESSION['toto'] = 5;
echo '<a href="page.php">Page suivante</a>';
// echo $_SESSION['toto'] dans page.php
affichera "5"
![Page 128: POEC PHP 2017 - Laboratoire d'Informatique et Systèmes › elmouelhia › courses › php › coursPHP.pdf · –Un serveur Web • Le plus utilisé avec PHP est Apache (licence](https://reader033.fdocument.pub/reader033/viewer/2022042322/5f0c191d7e708231d433bb39/html5/thumbnails/128.jpg)
Header
PHP permet de modifier les en-tête http qui sont renvoyés au client.
lancer un code d’erreur (404, 500 …),
faire une redirection,
…
128
header( "HTTP/1.1 404 Not Found " );
header( "Location: index.php" );