128
PHP 5 1 POEC – PHP 2017

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

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

– 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

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

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

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

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

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

• 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

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

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

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" );