PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les...
-
Upload
gisele-husson -
Category
Documents
-
view
112 -
download
6
Transcript of PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les...
PHP- Table des matières
1. Introduction2. Les données3. Les instructions de contrôle4. Les chaînes de caractères5. Les tableaux6. Les formulaires7. Les fonctions8. Les dates9. Les fichiers10. Les cookies11. Les sessions12. Les e-mails
1PHP chap 1 introduction
PHP- INTRODUCTION
1. Qu’est-ce que PHP ?2. Structure d’un fichier HTML3. Rôle de PHP4. Cycle de vie d’une page PHP5. Inclusion de fichiers externes6. Ajout de commentaires7. Séparateur d’instructions – bloc d’instructions8. Minuscules-majuscules
2PHP chap 1 introduction
PHP- INTRODUCTION
1. Qu’est-ce que PHP ?PHP est :
- un langage de programmation.- destiné à être interprété sur un serveur WEB- offre la possibilité de développer des sites WEB dynamiques
Ce langage permet d’insérer des instructions de programmation puissantes dans des pages de type HTML.
Une page dynamique PHP est un document HTML envoyé par le serveur vers le poste client.
Exemple : nous allons créer un fichier « texte » appelé template contenant des tags HTML classiques et de la programmation PHP. Les tags de début et de fin du « mode php » (<?php et ?>) sont interprétés par le serveur avant que le document soit envoyé au client qui est à l’origine de la requête.
3PHP chap 1 introduction
PHP- INTRODUCTION
2. Structure d’un fichier HTML :<html><head><title> premier programme PHP</title> </head><body><?php echo "<h1> hello world </h1>" ; echo "<h2> bienvenue sur le site de l’isat </h2>" ;?> </body></html>
4PHP chap 1 introduction
PHP- INTRODUCTION
3. Rôle de PHPLe langage PHP possède les mêmes fonctionnalités que les autres
langages (C, C++, Perl,…) :
- collecte et analyse de données- génération dynamique de pages Web- envoi et réception de cookies- gestion de sessions…
Rôles de PHP :
client
Serveur Web
PHP DB
5PHP chap 1 introduction
PHP- INTRODUCTION
4. Cycle de vie d’une page PHP :
- envoi d’une requête HTTP par le navigateur client vers le serveurex : http://www.monserveur.com/codephp.php
- interprétation par le serveur du code PHP contenu dans la page
- envoi par le serveur d’un fichier dont le contenu est purement HTML
6PHP chap 1 introduction
PHP- INTRODUCTION
5. Inclure des fichiers externesCela permet de modulariser le code, de créer une bibliothèque de fonctions
d’utilisation courante.Les fichiers de code php peuvent avoir l’une des extensions suivantes : .php .inc .inc.php
7PHP chap 1 introduction
PHP- INTRODUCTION
6. Ajout de commentaires // ceci est un commentaire
/* commentaire sur plusieurs lignes */
# commentaire
7. Séparateur d’instructions – bloc d’instructionsSéparateur ; { bloc }
8. minuscules-majusculesPhp fait la distinction entre les caractères min et maj.
8PHP chap 1 introduction
PHP- INTRODUCTION
<html><head><title> premier programme PHP</title> </head><body><?php $name="Paul"; $Name="Pierre"; echo " hello $name,<br/> " ; echo " où est $Name ? " ;?> </body></html>
9PHP chap 1 introduction
PHP- VARIABLES – CONSTANTES - TYPES
1. Les variables
2. Les constantes
3. Les types de données
4. Les données numériques
5. Les booléens
6. Les chaînes
PHP chap 2 - types de données 10
PHP- VARIABLES – CONSTANTES - TYPES
7. Les tableaux
8. Les objets
9. Le type ressource
10. Le type NULL
PHP chap 2 - types de données 11
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
1. Les variablesLes noms de variables :
- commencent par $ suivi de lettres min-maj, chiffres, _ - sont sensibles à la casse- ne sont pas déclarées
On peut créer des variables n’importe où. La déclaration des variablesn’est pas obligatoire. L’initialisation des variables n’est pas obligatoire.
<?php$a = 1;$b = $a + 5;$c = "hello ";$c = $b = $a = 1;?>
12
PHP- VARIABLES – CONSTANTES - TYPES
1. Les variables
- on ne déclare pas le type d’une variable, c’est sa valeur qui détermine son type.
- excepté lorsqu’elle est déclarée dans une fonction, la portée d’une variable est GLOBALE (elle concerne tout le script à partir de sa déclaration)
PHP chap 2 - types de données 13
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
1. Les variables
- on ne déclare pas le type d’une variable, c’est sa valeur qui détermine son type.
- excepté lorsqu’elle est déclarée dans une fonction, la portée d’une variable est GLOBALE (elle concerne tout le script à partir de sa déclaration)
14
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
1. Les variables exemple
<html><head><title> e2_1.PHP</title> </head><body><?php $name="Paul"; $Name="Pierre"; echo " hello $name,<br/> " ; echo " où est $Name ? " ;?> </body></html>
15
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
1. Les variables exemple<html><head><title> e2_2.PHP</title> </head><body><?php $color1 = "#ff0000"; $color2 = "#00ff00"; $color3 = "#0000ff"; echo "<font color=\"$color1\">red</font><br/>"; echo "<font color=\"$color2\">green</font><br/>"; echo "<font color=\"$color3\">blue</font><br/>";?> </body></html>
16
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
1. Les variables prédéfinies
les variables prédéfinies contiennent des infos sur le serveur et sur les données qui peuvent transiter entre le poste client et le serveur.
Exemple : les valeurs saisies dans un formulaire (ch 6)
$GLOBALS$_COOKIE
$_ENV$_FILES$_GET
$_POST$_REQUEST$_SERVER$_SESSION
17
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
18
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
2. Les constantes
Constantespersonnalisées
Constantesprédéfinies
Définies au fur et à mesure des
besoins
// définitiondefine ( "PI ", 3.14159,TRUE)//utilisationecho "la constante PI vaut " ,PI, "</br>« ;
Sensible à la casseou non
non précédée de $,donc la séparer avec ,de ce qui précède dans echo
19
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
3. Les types de données
Types de base Types composés Types spéciaux
- Entiers (base 10,8,16) (integer)- Flottants (double ou float)chaînes (string)- booléens (boolean)
- Tableaux (array)- Objets (object)
- Type ressource- Type null
20
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
3. Les types de données
- déterminer le type : string gettype ($mavar)
- vérifier le type d’une variable : is_integer ($var) …
Retourne une chaîne contenantle type de la variable
$var = 73;if (is_int ($var)){ $var++; }
21
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
3. Les types de données
- convertir le type d’une variable : $result = (type-desire) $var
- contrôler l’état d’une variable :
lors de l’envoi de données d’un formulaire vers le serveur, le script qui reçoit les infos doit pouvoir détecter l’existence d’une réponse dans les champs du formulaire.
$var= "3.52 km" ;$var2=(double)$var;echo "$var2";
22
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
3. Les types de données
- contrôler l’état d’une variable : boolean isset ($var) boolean empty ($var)
- FALSE si $var non initialiséesi valeur Null
- TRUE si valeur quelconque
- TRUE si $var non initialiséesi valeur Null ou 0 ou chaîne "0"
- FALSE si valeur quelconque
23
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
4.1 Les entiers en 32bits de – 231 à +231 - 1
base 10 base 8 base 16
4.2 Les flottants précision de 14 chiffres
4.3 Les opérateurs affectation numériques
$int = 1245;$int = -18;
$oct = 01245;echo $oct;
$hex = OxFAC7;Echo $hex;
Valeur décimale affichée
$dbl = 1245.8;$dbl = 1.2458E3;
+= -= *= /= %= .=
+ - * / %++ --
24
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
4.4 Les fonctions mathématiques
25
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
26
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
27
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
5.1 Les booléens
affiche 1
5.2 règles d évaluation false true
$a = 80;$b= ($a<95);echo $b
$bool = TRUE;$bool = FALSE;
$a=15;If ($a)…
True si $a existe et a une valeur !=0
- Mot clé FALSE- entier = 0 ou Double = 0.0- String = " 0" - var de type NULL- var non initialisée- tableau vide- expr logique fausse
- toutes les autres possibilitésy compris - entier = -1 - chaine " false " - var de type ressource
28
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
5.3 Les opérateurs de comparaison logiques
== != ou < > < <= > >==== !==
OR ||XORAND &&!Teste l’identité
- des valeurs- des types
- équivalents-pas même priorité
29
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
6.1 Les chaînes
2 types de délimiteurs : apostrophes simples ‘ apostrophes doubles «
6.2 La concaténation symbole .
echo " <a href =\ " p2.html\ " >page suivante</a> ";
- Variables remplacées par leur valeur- car \ permet de protéger un car spécial (échappement)
\’ affiche ‘\ " affiche " \ $ affiche $\\ affiche \\ n saut de ligne\r retour chariot\t tabulation horizontale
- Variables non substituées- car \ sans effet
Les " de l’attribut HTML href sont protégés par \
30
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
<?php
# Assignation d'une chaîne de caractères $phrase = "Hello World"; echo "$phrase<br>"; # Ajout d'une nouvelle chaîne de caractères $phrase = $phrase . " this is a PHP test\n"; echo "$phrase<br>";
# L'expression suivante donnera : <p>Number: 9</p> $num = 9; $str = "<p>Number: $num</p>"; echo "$str<br>";
?>
31
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
<?php
# L'expression suivante donnera : <p>Number: $num</p> $num = 9; $str = '<p>Number: $num</p>'; echo "$str<p>";
# Récupération du premier caractère d'une chaîne$str = 'This is a test.'; $first = $str[0]; echo "$first<p>";
# Récupération du dernier caractère d'une chaîne $str = 'This is still a test.';$last = $str[strlen($str)-1];echo "$last<p>";
?>
32
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
7.1 Les tableaux
- PHP supporte les tableaux scalaires associatifs
-Tableaux scalaires :Quand les éléments d'un tableau peuvent être sélectionnés via des indices $members[2].
- Tableaux associatifs : Quand les éléments d'un tableau peuvent être sélectionnés via des clés (représentées par des valeurs quelconques) $users["admin"].
-On peut définir des tableaux à une ou plusieurs dimensions
- ici tableaux à 1 dim (suite cfr chap 5)
33
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
7.2 Les tableaux scalaires
$tab[0] = 20; $tab[1] = 12; $tab[10] = 28; $tab[ ] = 15; echo "nombre d’éléments :" , count ($tab); echo " la deuxième valeur est : $tab[1] <br/> ";
7.3 Les tableaux associatifs (e2_3.php)
$utilis [" prenom "] = "stephane";$utilis [" nom "] = "Dumont" ; $utilis [" privilege "] = "admin" ; echo " le nom est : {$utilis[" nom "] } <br/> ";echo " le nom est " , $utilis [" nom "], "<br/> ";
$utilis
Stéphane Dumont admin
34
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
$tab["php"] = "php.net";$tab["mysql"] = "mysql.com";$tab["xhtml"] = "w3.org";echo "<h2> mes liens préférés </h2>";echo "<ul> <li><a href=\"http://www.{$tab["php"]}\" title=\" le site du php.net\">PHP</a> </li>";echo "<li> <a href=\"http://www.{$tab["mysql"]}\" title=\" le site du mysql.com\">MySql</a> </li>";echo "<li> <a href=\"http://www.{$tab["xhtml"]}\" title=\" le site du W3C\">XHTML</a> </li> </ul>";
Exemple d’utilisation de tableaux (e2_4.php)
35
PHP chap 2 - types de données
PHP- VARIABLES – CONSTANTES - TYPES
8 Les objets (cfr chap 9)
9Le type ressource (cfr chap 15) utilisé pour les connexions aux bases de données
10Le type NULLattribué à une variable qui n’a pas de contenu
qui a été initialisée avec NULL
dès qu’une valeur est donnée à la variable, elle prend le type correspondant.
Règles : 1) une var contenant une chaîne vide ou la valeur "0" a le type string.
2) une var contenant la valeur 0 a le type integer.
36
PHP chap 3 - instructions de contrôle 37
PHP- INSTRUCTIONS DE CONTROLE
1. Les instructions conditionnelles1.1 if1.2 if else1.3 opérateur ?1.4 switch
2. Les instructions de boucle2.1 for2.2 while2.3 do while2.4 foreach
3. La gestion des erreurs3.1 suppression des messages d’erreur
PHP chap 3 - instructions de contrôle
38
PHP- VARIABLES – CONSTANTES - TYPES
1.1 if
if (condition) instruction; if (condition){
// bloc}
1.2 if else
if (condition){
// bloc}
else {
// bloc}
PHP chap 3 - instructions de contrôle
39
PHP- VARIABLES – CONSTANTES - TYPES
<?php // e3_1.php
$prix = 35; if ($prix > 100) { echo " pour un achat de $prix &euro , la remise est de
<b>15%</b><br/>"; $pnet = $prix * 0.85; echo " le prix net est de $pnet"; }elseif ($prix > 50) { echo " pour un achat de $prix &euro , la remise est de
<b>1O%</b><br/>"; $pnet = $prix * 0.90; echo " le prix net est de $pnet"; }
PHP chap 3 - instructions de contrôle
40
PHP- VARIABLES – CONSTANTES - TYPES
else { echo " pour un achat de $prix &euro , la remise est de
<b>O5%</b><br/>"; $pnet = $prix * 0.95; echo " le prix net est de $pnet"; }?>
1.3 opérateur ?
<?php //e3_2.php
$ch=" bonjour "; $sexe="M"; $ch .= ($sexe=="F") ? "Madame" : "Monsieur"; echo "<h2>$ch</h2> <br/>";?>
PHP chap 3 - instructions de contrôle
41
PHP- VARIABLES – CONSTANTES - TYPES
1.4 switch
<?php $dept=75; switch ($dept) { case 75: echo "<h2>Paris</h2> <br/>"; break; case 83: echo "<h2>Var</h2> <br/>"; break; default : echo "departement inconnu"; }?>
PHP chap 3 - instructions de contrôle
42
PHP- VARIABLES – CONSTANTES - TYPES
2.1 La boucle for
<?php //e3_4.php
for ($i=1;$i<7;$i++) { echo "<h$i>titre de niveau $i</h$i> "; }?>
<?php //e3_5.php
for ($i=1,$j=9;$i<10,$j>0;$i++,$j--) { echo "<span style =\" border-style:double;border-width:3;\"> $i + $j =
10</span> "; }?>
PHP chap 3 - instructions de contrôle
43
PHP- VARIABLES – CONSTANTES - TYPES
2.2 La boucle while
<?php //e3_6.php
$n=1; while ($n%7!=0) { $n = rand (1,100); echo $n," "; }?>
PHP chap 3 - instructions de contrôle
44
PHP- VARIABLES – CONSTANTES - TYPES
2.3 La boucle do while
<?php //e3-7.php
do { $n = rand (1,100); echo $n," "; } while ($n%7!=0);?>
PHP chap 3 - instructions de contrôle
45
PHP- VARIABLES – CONSTANTES - TYPES
2.4 La boucle foreachUtilisée pour parcourir l’ensemble des éléments d’un tableau.
Pour lire les valeurs :
foreach ($tableau as $valeur) {
//bloc utilisant l’élément $valeur }
Pour lire les valeurs et les indices :
foreach ($tableau as $indice=>$valeur) {
//bloc utilisant l’élément courant }
- $valeur contient successivement les valeurs du tableau
- $valeur contient successivement les valeurs du tableau-- $indice contient successivement l’indice
PHP chap 3 - instructions de contrôle
46
PHP- VARIABLES – CONSTANTES - TYPES
<?php //e3_8.php for ($i=0;$i<7;$i++) { $tab [$i] = pow (2,$i); } foreach ($tab as $ind => $val) { echo "2 exposant $ind vaut $val <br/>"; }?>
Rem : 1)$tab [$i][0] permet de récupérer la première lettre de la chaîne de caractères contenue dans tab[$i]. 2)Count($tab) retourne le nombre d’éléments contenus dans $tab
PHP chap 3 - instructions de contrôle
47
PHP- VARIABLES – CONSTANTES - TYPES
3 La gestion des erreurs
Un bon script ne doit pas générer d’erreurs.
Les actions de l’utilisateur peuvent générer des erreurs :- Saisies erronées provoquant l’arrêt du script (ex : division par 0)- Tentative d’accès à une ressource inexistante
La gestion des erreurs a pour buts :- Éviter l’affichage des messages bruts tels que PHP les envoie au navigateur- Signaler « proprement » les problèmes au visiteur (vu en 2ème)
PHP chap 3 - instructions de contrôle
48
PHP- VARIABLES – CONSTANTES - TYPES
3.1 La suppression des messages d’erreur
<?php //e3_9.php $a = 10; $b = 0; echo $a/$b;
fopen(" inconnu.txt", "r");?>
Pour éviter les messages :
1) Ajouter @ devant l’appel d’une fonction .
@fopen (" inconnu.txt ", " r ");
Warning : division par zéro in c:\wamp\e3_9.php on line 14Warning: (fopen inconnu.txt) [function open] : failed to open to stream : nosuch file or directory….
PHP chap 3 - instructions de contrôle
49
PHP- VARIABLES – CONSTANTES - TYPES
3.1 La suppression des messages d’erreur
Pour éviter les messages :
2) Utiliser la fonction error_reporting ( ) qui permet de n’afficher que les erreurs d’un certain niveau.
error_reporting (E_WARNING | E_PARSE)
PHP chap 4 - chaînes de caractères
50
PHP – CHAINES CARACTERES
1. Affichage des chaînes
2. Affichage formaté
3. Longueur d’une chaîne et code des caractères
4. Mise en forme d’une chaîne
4.1 modification de la casse 4.2 gestion des espaces 4.3 entités HTML et caractères spéciaux
PHP chap 4 - chaînes de caractères
51
PHP – CHAINES CARACTERES
5. Recherche de sous-chaînes
5.1 une chaîne vue comme un tableau5.2 les fonctions strstr ( ) et stristr ( )5.3 la fonction strrchr ( ) 5.4 les fonctions substr ( ), substr_count ( ), str_replace () 5.5 les fonctions strpos ( ), stripos ( ), strrpos( ), strripos( )5.6 capture de sous-chaînes dans des variables
6. Comparaison de chaînes
7. Transformation de chaînes en tableaux
PHP chap 4 - chaînes de caractères
52
PHP – CHAINES CARACTERES
1. affichage des chaînes
Dans une page WEB, l’essentiel du contenu est constitué de chaînes de caractères. - Quand le contenu de la page est créé dynamiquement à partir
d’un fichier ou d’une DB, ce sont surtout des chaînes de caractères qui sont manipulées.
- toutes les variables issues de l’envoi d’un formulaire sont de type string.
Pour afficher des données : echo
PHP chap 4 - chaînes de caractères
53
PHP – CHAINES CARACTERES
1. affichage des chaînes
La fonction « echo » est utilisable de plusieurs façons pour afficher plusieurs
chaînes à la suite l’une de l’autre.
<?php // e4_1.php
$nom="isat"; echo "vous êtes à l'école <b>".$nom."</b> aujourd'hui le ".date('d')."<br/>"; echo "vous êtes à l'école <b>", $nom, "</b> aujourd'hui le
",date('d'),"<br/>"; echo "vous êtes à l'école <b> $nom </b> aujourd'hui le date('d')<br/>";?>
Concaténation
avec .
Séparation des
expressions par ,Les fonctions ne peuvent être
incluses dans une chaîne unique
PHP chap 4 - chaînes de caractères
54
PHP – CHAINES CARACTERES
2. Affichage formatéLes fonctions « printf » et « sprintf » permettent d’obtenir des résultatsuniformes :- Aligner des chaînes sur plusieurs lignes- Superposition correcte de chiffres en colonnes pour des montants
void printf (string " format ", string $ch1, string $ch2, …,$chn);
string sprintf (string " format ", string $ch1, string $ch2, …,$chn);
Affiche directement le contenu des chaînes $ch1,$ch2,…selon le format spécifié dans la chaîne " format "
Retourne une chaîne unique composée des chaînes $ch1,$ch2,…selon le format spécifié dans la chaîne " format "
PHP chap 4 - chaînes de caractères
55
PHP – CHAINES CARACTERES
2. Affichage formaté
void vprintf (string " format ", array $tab);
string vsprintf (string " format ", array $tab);
string str_repeat (string $ch, int N);
rôle équivalent à printf et sprintf mais les chaînes sont passées en argument dans un tableau
Crée une chaîne contenant N fois la chaîne $ch
PHP chap 4 - chaînes de caractères
56
PHP – CHAINES CARACTERES
Définition de la chaîne de formatage
Elle est composée de
- un texte ordinaire explicatif- directives d’affichage (= caractères spéciaux qui indiquent la manière dont les chaînes passées en paramètres doivent être intégrées dans la chaîne)
% R - N1 . N2 L
caractère remplissage (0 espace ‘autre) pr compléter la chaîne si long fixe
caractère – pour aligner à droite, par défaut alignement à gauche
Nombre de caractères de la chaîne
Nombre de décimales à afficher pour les décimaux
Lettre indiquant le type de la valeur à afficher OBLIGATOIRE
PHP chap 4 - chaînes de caractères
57
PHP – CHAINES CARACTERES
Caractères de formatage du type de données
PHP chap 4 - chaînes de caractères
58
PHP – CHAINES CARACTERES
Caractères de formatage du type de données
PHP chap 4 - chaînes de caractères
59
PHP – CHAINES CARACTERES
<?php //e4_2.php
echo "<h3> votre facture</h3>"; echo sprintf("<b>%'_25s%'_25s<br/> </b>","prix HT","prix TTC"); $ht[0] = 30; $ht[1] = 100; $total=0; for ($i=0;$i<2;$i++) { echo sprintf ("article %d %'_17.2f %'_24.2f<br/>",$i+1,$ht[$i],$ht[$i]*1.25); $total += $ht[$i]; } echo str_repeat ("*",50),"<br/>"; echo sprintf ("TOTAL %'_17.2f%'_24.2f<br/>",$total,$total*1.25); ?>
PHP chap 4 - chaînes de caractères
60
PHP – CHAINES CARACTERES
3. Longueur d’une chaîne et code des caractères
int strlen (string $ch)
int ord (string $car)
string chr (int $code)
Détermine le nombre de caractères d’une chaîne
Retrouve le code UNICODE d’un caractère
Obtient un caractère à partir de son code UNICODE
PHP chap 4 - chaînes de caractères
61
PHP – CHAINES CARACTERES
<?php //e4_3.php
//contrôle de login (max 8 car) $login="admin"; if (strlen($login) > 8) echo "login erroné"; else echo "votre login est : $login <br/>"; //génération d'un mot de passe $motpasse = ""; for ($i=1;$i < 6; $i++) { $nb=rand(65,90); $motpasse .= chr($nb); } echo "votre mot de passe est ", $motpasse;?>
PHP chap 4 - chaînes de caractères
62
PHP – CHAINES CARACTERES
4. Mise en forme d’une chaîne 4.1 modification de la casse
string strtolower (string $ch)
string strtoupper (string $ch)
string ucwords (string $ch)
string ucfirst (string $ch)
Retourne la chaîne en minuscules
Retourne la chaîne en majuscules
Retourne la chaîne avec les initiales des mots qui la composent en majuscules
Retourne la chaîne avec uniquement la première lettre en majuscules
PHP chap 4 - chaînes de caractères
63
PHP – CHAINES CARACTERES
4. Mise en forme d’une chaîne 4.2 gestion des espaces
string ltrim (string $ch [, string liste])
string rtrim (string $ch [, string liste])
string trim (string $ch [, string liste])
Supprime les espaces en début de chaîne
Supprime les espaces en fin de chaîne
Supprime les espaces en début et en fin de chaîne
PHP chap 4 - chaînes de caractères
64
PHP – CHAINES CARACTERES
4. Mise en forme d’une chaîne 4.2 gestion des espaces
string wordwrap (string $ch [, int N [, string car [, boolean coupe ] ] ] )
<?php //e4.4php
$ch="cette chaîne anticonstitutionnelle est vraiment beaucoup trop longue pour être affichéee en une ligne"; echo wordwrap ($ch, 10, "<br/>", 1);?>
Affiche un texte long avec une largeur maximale déterminée
N définit la largeurcar contient le caractère à insérer tous les N caractères
coupe (= TRUE) permet d’effectuer une césure des mots dont la longueur dépasse N
PHP chap 4 - chaînes de caractères
65
PHP – CHAINES CARACTERES
4. Mise en forme d’une chaîne 4.3 entités HTML et caractères spéciaux
Définitions :1. le code Unicode est un système de codage des caractères sur 16 bits mis
au point en 1991. Le système Unicode permet de représenter n'importe quel caractère par un code sur 16 bits, indépendamment de tout système d'exploitation ou langage de programmation. Il regroupe ainsi la quasi-totalité des alphabets existants (arabe, arménien, cyrillique, grec, hébreu, latin, ...) et est compatible avec le code ASCII.
2. Entité HTML : Les entités sont des mots mnémotechniques qui s'emploient entre un & initial et un point-virgule final.
à ou à représente à ô représente ô
Entité HTML
Code unicode
Car affiché
PHP chap 4 - chaînes de caractères
66
PHP – CHAINES CARACTERES
4. Mise en forme d’une chaîne 4.3 entités HTML et caractères spéciaux
Utilité des entités :- Le code source HTML qui sert à produire la page que vous êtes en train de lire
contient, entre autres, le texte proposé à la lecture, en clair ou presque.Or, de nombreuses langues contiennent des signes qui n'existent pas dans la plupart des autres.
Par exemple le français a des caractères accentués "é", "è", "à", " î " , "ç", signes qu'on ne retrouve pas du tout en anglais. Ces caractères, dans le code source HTML, doivent être remplacés par les entités HTML afin que les navigateurs paramétrés pour d'autres langues que le français les affichent correctement.
- Certains caractères ont des significations spéciales en HTML, et doivent être remplacés par des entités HTML pour être affichés. (&, ", ’,<,>)
PHP chap 4 - chaînes de caractères
67
PHP – CHAINES CARACTERES
4. Mise en forme d’une chaîne 4.3 entités HTML et caractères spéciaux
string addslashes (string $ch )
Utile avant d’enregistrer des chaînes dans une base de données
string stripslashes (string $ch )
Rem : la fonction addslashes () est inutile pour les données en provenance d’un formulaire si la directive magic_quotes_runtime est active dans le php.ini
Ajoute le caractère \ devant les caractères spéciaux ‘ " \ NULL
enlève les caractères \
PHP chap 4 - chaînes de caractères
68
PHP – CHAINES CARACTERES
4. Mise en forme d’une chaîne 4.3 entités HTML et caractères spéciaux
Certains caractères ont des significations spéciales en HTML, et doivent être remplacés par des entités HTML pour être affichés. 2 fonctions sont pratiques pour éviter que des données fournies par les utilisateurs contiennent des balises HTML : htmlspecialchars () et htmlentities ()
string htmlspecialchars (string $ch [, string charset]]))
"&" devient "&""" devient """ lorsque ENT_NOQUOTES n'est pas utilisée."'" (guillemet simple) devient "'" uniquement lorsque ENT_QUOTES est
utilisée.
"<" (inférieur à) devient "<" ">" (supérieur à) devient ">"
Désigne l’alphabet utilisé, par défaut ISO-8859-1 (Europe occidentale)
Chaîne à convertir
PHP chap 4 - chaînes de caractères
69
PHP – CHAINES CARACTERES
4. Mise en forme d’une chaîne 4.3 entités HTML et caractères spéciaux
Très pratique par exemple si vous faites un mini-chat et que vous voulez empêcher vos visiteurs d'utiliser du HTML !
<?php //e4_5.php
$variable_html = '<em>Ceci est une variable qui contient du HTML</em>'; $variable_sans_html = htmlspecialchars($variable_html);
echo 'Avant : ' . $variable_html . '<br />Après : ' . $variable_sans_html; ?>
affichage
Avant : Ceci est une variable qui contient du HTMLAprès : <em>Ceci est une variable qui contient du HTML</em>
PHP chap 4 - chaînes de caractères
70
PHP – CHAINES CARACTERES
4. Mise en forme d’une chaîne 4.3 entités HTML et caractères spéciaux
Si on veut remplacer tous les caractères spéciaux en HTML (code unicode > 128) par des entités HTML
string htmlentities (string $ch [, string charset])
<?php //e4_6.php
$titre = 'Découvrir PHP , et "apprendre à programmer"'; echo "<form method = \"post\" action = \"insert.php\">"; echo "Titre : "; echo "<input type = \"text\" name =\"titre\" size = \"60\" value
= \"".htmlentities ($titre)."\">"; echo "</form>";?>
Désigne l’alphabet utilisé, par défaut ISO-8859-1 (Europe occidentale)
Chaîne à convertir
PHP chap 4 - chaînes de caractères
71
PHP – CHAINES CARACTERES
5. Recherche de sous-chaînes 5.1 une chaîne vue comme tableau
Une chaîne peut être considérée comme un tableau de caractères (indices de 0 à N) .
on peut récupérer le caractère d’indice cste : $ch [cste]
ou encore si $ind contient un entier : $ch[$ind]
<?php //e4_7.php
$ch = "bonjour Worldtrade"; echo "le 9ème caractère est : $ch[8] ";?>
PHP chap 4 - chaînes de caractères
72
PHP – CHAINES CARACTERES
5. Recherche de sous-chaînes5.2 les fonctions strstr ( ) et stristr ( )
Elles permettent d’extraire une sous-chaîne d’une chaîne donnée et renvoient tous les caractères allant de la première occurrence de $ch2 jusque la fin de $ch1. (false sinon)
string strstr (string $ch1, string $ch2)
string stristr (string $ch1, string $ch2)
<?php //e4_8.php
$ch= " Perette et le pot au lait "; $ssch = strstr($ch, " pot "); echo $ssch;
?>
Sensible à la casse
insensible à la casse
PHP chap 4 - chaînes de caractères
73
PHP – CHAINES CARACTERES
5. Recherche de sous-chaînes5.3 la fonction strrchr ( )
Elle permet d’extraire une sous-chaîne d’une chaîne donnée et renvoie tous les caractères allant de la dernière occurrence de $ch2 jusque la fin de $ch1.
string strrchr (string $ch1, string $ch2)
<?php //e4_9.php
$ch= "Perette et le pot au lait, c’est pas de pot !"; $ssch = strrchr($ch, "pot"); echo $ssch;
?>
sensible à la casse
PHP chap 4 - chaînes de caractères
74
PHP – CHAINES CARACTERES
5. Recherche de sous-chaînes5.4 les fonctions substr ( ), substr_count ( ), str_replace ()
Elles permettent d’extraire des sous-chaînes en fonction des indices de caractères dans la chaîne analysée (le premier étant l’indice 0)
string substr (string $ch, integer ind [, integer N])
<?php //e4_10.php
$url = "http://www.linux.org/"; if (substr ($url, 0,7) != "http://") echo "l ’adresse URL n’est pas complète"; else
echo "enregistrement de l'adresse : $url";
?>
Retourne la chaîne contenant N caractères de $ch extraits à partir de l’indice ind inclus . (Si N est omis, la sous-chaîne extraite va jusque la fin de $ch.
PHP chap 4 - chaînes de caractères
75
PHP – CHAINES CARACTERES
5. Recherche de sous-chaînes5.4 les fonctions substr ( ), substr_count ( ), str_replace ()
Elles permettent d’extraire des sous-chaînes en fonction des indices de caractères dans la chaîne analysée (le premier étant l’indice 0)
int substr_count (string $ch, string $ssch)
<?php //e4_11.php
$ch= "Perette et le pot au lait, c’est pas de pot !"; $ch2 = "pot"; $nb = substr_count($ch, $ch2); echo "le mot \"$ch2\" est présent $nb fois dans \"$ch\"";?>
Retourne le nombre d’occurrences d’une sous-chaîne $ssch dans une chaîne $ch. (sensible à la casse)
PHP chap 4 - chaînes de caractères
76
PHP – CHAINES CARACTERES
5. Recherche de sous-chaînes5.4 les fonctions substr ( ), substr_count ( ), str_replace ()
string str_replace (string $ch1, string $ch2, string $ch [, string $var ] )
<?php //e4_12.php
$text = "HTML est un langage de description de contenu"; $newtext = str_replace ("HTML", "XML", $text); echo $newtext;?>
Retourne la chaîne $ch dans laquelle toutes les occurrences de $ch1 sont remplacées par $ch2. $var contient le nombre de remplacements à effectuer
PHP chap 4 - chaînes de caractères
77
PHP – CHAINES CARACTERES
5. Recherche de sous-chaînes5.5 les fonctions strpos ( ), stripos ( ), strrpos( ), strripos( )
Rem : elles ont une syntaxe identique
int strpos (string $ch, string $ssch, [, int N ] )
Retourne la postion du premier caractère de la première occurrence d’une sous-chaîne $ssch ou FALSE
Retourne la postion du premier caractère de la dernière occurrence d’une sous-chaîne $ssch ou FALSE
Identique à strpos ( ) insensible à la casse
Identique à strrpos ( ) insensible à la casse
N désigne la position à partir de laquelle la recherche s ’effectue dans $ch
PHP chap 4 - chaînes de caractères
78
PHP – CHAINES CARACTERES
5. Recherche de sous-chaînes5.5 les fonctions strpos ( ), stripos ( ), strrpos( ), strripos( )
<?php //e4_13.php
$text = "HTML est un langage. XML est différent de HTML. "; $n = strpos ($text, "HTML"); if ($n === FALSE) echo "pas d'occurence"; else echo $n;?>
Opérateur d’identité
PHP chap 4 - chaînes de caractères
79
PHP – CHAINES CARACTERES
5. Recherche de sous-chaînes5.6 capture de sous-chaînes dans des variables
La fonction sscanf ( ) permet de récupérer chacun des éléments d’une chaîne dans des variables séparées.
<?php //e4_14.php
$personne = "1685-1750 Jean-Sébastien Bach"; $format = "%d-%d %s %s"; $nb = sscanf ($personne, $format, $dtnai, $dtmort, $prenom, $nom); echo "$prenom $nom est né en $dtnai et mort en $dtmort <br/>"; echo "nous avons $nb infos";
?>
PHP chap 4 - chaînes de caractères
80
PHP – CHAINES CARACTERES
6. Comparaison de chaînes6.1 utilisation des opérateurs usuels de comparaison
== === < > <= >=
Exemples :<?php //e4_15.php
$nb = 59;$ch = "59 rue noire";if ($ch==$nb) echo "TRUE <br/>« ;if ($ch===$nb) echo "TRUE <br/>";
mêmes caractères pour que l’égalité soit vérifiée
même valeur et même type
Selon code ASCII
Égalité , seuls les nombres sont pris en compte car une des 2 chaînes est un nombre
Pas d’égalité , car les types sont différents
PHP chap 4 - chaînes de caractères
81
PHP – CHAINES CARACTERES
6. Comparaison de chaînes6.2 utilisation des fonctions strcmp() , strcasecmp()
elles permettent de comparer 2 chaînes et retournent :- -1 si $ch1 < $ch2 - 0 en cas d’égalité- 1 si $ch1 > $ch2
int strcmp (string $ch1, string $ch2)
int strcasecmp (string $ch1, string $ch2)
Sensible à la casse
insensible à la casse
PHP chap 4 - chaînes de caractères
82
PHP – CHAINES CARACTERES
6. Comparaison de chaînes6.2 utilisation des fonctions strncmp(), strncasecmp()
elles sont identiques aux précédentes mais en limitant la comparaison aux n premiers caractères
int strncmp (string $ch1, string $ch2, int N)
int strncasecmp (string $ch1, string $ch2, int N)
Sensible à la casse
insensible à la casse
<?php //e4_16.php$ch1 = " Blanc ";$ch2 = " Bleu";$ch3 = " blanc";echo strcmp($ch1,$ch2) ;echo strcasecmp($ch1,$ch3) ;echo strncmp($ch1,$ch2,2) ;
PHP chap 4 - chaînes de caractères
83
PHP – CHAINES CARACTERES
6. Comparaison de chaînes6.2 utilisation des fonctions strnatcmp(), strnatcasecmp()
elles sont identiques aux précédentes mais en respectant l’ordre naturel
int strnatcmp (string $ch1, string $ch2)
int strnatcasecmp (string $ch1, string $ch2)
Sensible à la casse
insensible à la casse
<?php //e4_17.php$ch4 = " page2 ";$ch5 = " page12";echo strcmp($ch4,$ch5) ;echo strnatcmp($ch4,$ch5) ;
PHP chap 4 - chaînes de caractères
84
PHP – CHAINES CARACTERES
6. Comparaison de chaînes6.2 utilisation de la fonction similar_text ()
elle recherche le nombre de caractères communs à 2 chaînes (plus éventuellement le pourcentage de similarité)
int similar_text (string $ch1, string $ch2 [, $pourcent])
Sensible à la casse
<?php //e4_18.php$ch4 = " MySQL ";$ch5 = " PgSQL";echo similar_text($ch4,$ch5,$pourc), "caractères communs" ;echo "similarité :" , $pourc, "%" ;
PHP chap 4 - chaînes de caractères
85
PHP – CHAINES CARACTERES
7. Transformation de chaînes en tableaux7.1 utilisation de la fonction explode ()
elle extrait chacun des « mots » d’une chaîne et les place dans un tableau
array explode (string sep, string $ch [, int N ])
$ch : chaîne à analysersep : critère de séparation (souvent espace)N : nombre max d ’éléments du tableau (le dernier contient toute la fin de la chaîne)
PHP chap 4 - chaînes de caractères
86
PHP – CHAINES CARACTERES
7. Transformation de chaînes en tableaux7.2 utilisation de la fonction implode ()
elle retourne une chaîne composée des éléments d’un tableau séparés par un caractère donné
string implode (string sep, string $tab)
<?php //e4_18.php
$ch4 = "nous étudions PHP et MySQL";$result = explode(" ", $ch4);foreach ($result as $valeur){ echo $valeur."<br/>"; } ?>
PHP chap 5 - les tableaux 87
PHP – LES TABLEAUXPlan
1. Principes
2. Créer des tableaux 2.1 Définir directement les valeurs du tableau 2.2 Utiliser la fonction array() 2.3 La fonction count($tableau) 2.4 Les tableaux multi dimensions
3. Créer des suites
4. Créer un tableau à partir d’une chaîne
5. Comptage du nombre de valeurs d’un tableau
6. Lecture d’un tableau6.1 boucle FOR6.2 boucle WHILE6.3 La fonction EACH()6.4 La fonction EACH() associée à la fonction LIST()6.5 La fonction FOREACH()
PHP chap 5 - les tableaux 88
PHP – LES TABLEAUXPlan
7 . Manipuler des tableaux7.1 Extraire une partie d’un tableau7.2 Ajouter et enlever des éléments
8. Opérations sur plusieurs tableaux8.1 Fusionner des tableaux8.2 Intersection et différence de deux tableaux
9. Tri des tableaux9.1 Tri des tableaux indicés9.2 Tri des tableaux associatifs 9.2.1. Tri des valeurs 9.2.2. Tri des clés
10. Opérer une sélection des éléments
11. Appliquer une fonction à un tableau
12. L’objet ArrayObject
PHP chap 5 - les tableaux 89
PHP – LES TABLEAUX1. PRINCIPES
Les tableaux (arrays) permettent de stocker plusieurs valeurs sous un même nom de variable.
Chaque variable peut être de type différent (entier, chaîne, booléen, date, array, objects, etc...)
Chaque élément peut être identifié par :– un indice numérique (le 1er est ZERO) tableaux indicés
ex. $tab[0] $tab[2] $tab[$i + 1]
– une étiquette (de type string) appelée CLE (Key)
ex. $tab[ "nom "] tableaux associatifs
PHP chap 5 - les tableaux 90
PHP – LES TABLEAUX2. CRÉER DES TABLEAUX
2.1 Définir directement les valeurs du tableau :$tab[0] = 25;$tab[1] = " php " ;$tab[20] = 10.50; // les éléments 2 à 19 n’existent pas (valeur NULL)
$tab[21] = TRUE;$tab[ ] = " exemple "; // si indice non précisé indice suivant (ici 22)
$ind = 8; $tab[$ind] = 50; // l’indice est une variable integer
$tab2[" nom " ] = " Dupont "; // tableau associatif
$prenom= " Jean ";$tab2[" prenom "] = $prenom;ATTENTION : Les clés des tableaux associatifs sont sensibles à la casse
PHP chap 5 - les tableaux 91
PHP – LES TABLEAUX2.2 Utiliser la fonction array() :
Tableau indicé :
$tab = array(val0,val1,val2,…..,valN);
Tableau associatif :
$tab = array("cleA " =>valA, " cleB " => valB, … " cleZ " =>valZ);
2.3 La fonction count($tableau)
La fonction count(t) retourne le nombre d’éléments actifs (non nuls) d’un tableau t donné en paramètre.
PHP chap 5 - les tableaux 92
PHP – LES TABLEAUX2.4 Les tableaux multi dimensions :
En PHP, pas de méthode explicite pour la création d’un tableau à n dimensions car un élément d’un tableau peut être un tableau lui-même.
$tabmulti=array (array(" Li0Col0 " , " Li0Col1 " , " Li0Col2 " ),array(" Li1Col0 " , " Li1Col1 " , " Li1Col2 " ),array(" Li2Col0 " , " Li2Col1 " , " Li2Col2 " ));
Ecriture : $tabmulti[2][1] = 25; // modifie contenu Li2Col1
Lecture : $el = $tabmulti[2][1] ;
NB : En test , utilisez la fonction print_r($tabmulti) ou var_dump ($tabmulti) qui affichera le contenu de toute la table.
PHP chap 5 - les tableaux 93
PHP – LES TABLEAUX Lecture d’un tableau multi dimensions : boucles imbriquées
for ($i=0;$i < count($tabmulti);$i++){
for ($j=0;$j < count($tabmulti [ $i ] );$j++){
print $tabmulti[$i][$j] . ‘<br>’ ; }}
PHP chap 5 - les tableaux 94
PHP – LES TABLEAUX 3. CRÉER DES SUITES range(début,fin)
Suite de nombres : $tab = range(1,10) ; // nbres de 1 à 10
Suite de lettres : $tab=range("A " , " M " ); // lettres A à M
4. CRÉER TABLEAU A PARTIR D’UNE CHAÎNE explode(sép, ch)
$chaine= " La cigale et la fourmi" ;
$tabl = explode(" " ,$chaine); // -> $tabl[0] = La , $tabl[4] = fourmi
PHP chap 5 - les tableaux 95
PHP – LES TABLEAUX 5. COMPTAGE DU NOMBRE DE VALEURS D’UN TABLEAUUne seule dimension : $nbre = count($tableau) ou sizeof($tableau)
N dimensions :$nbre = 0;for ($i=0;$i< count($tm);$i++){
if gettype($tm[$i] == " array "){
$nbre+= count($tm[$i]); }
else{
$nbre++;}
}
PHP chap 5 - les tableaux 96
PHP – LES TABLEAUX array_count_value(array)Cette fonction compte le nombre de valeurs différentes dans un tableau
$resu = array_count_values($tab);
$resu sera un tableau associatif ayant pour clé les valeurs du tableau $tab et pour valeur associée le nbre d’occurrences de cette valeur dans $tab
Attention : ne s’utilise qu’avec un tableau une dimension
Exemple :<?php$tab = array (" Web ", " Internet ", " PHP ", " Javascript ", " PHP ", " ASP ", "
PHP ", " ASP ");$result=array_count_values($tab);echo " le tableau \$tab contient ",count($tab) , " éléments <br> ";echo " le tableau \$tab contient ",count($result) , " valeurs différentes
<br> ";print_r($result);?>
PHP chap 5 - les tableaux 97
PHP – LES TABLEAUX 6. LECTURE DES TABLEAUX
6.1 Boucle FOR
for ($i=0;$i < count($tab);$i++)
{ echo $tab[$i]; }
6.2 Boucle WHILE
$i=0;While (isset($tab[$i])) // isset() retourne TRUE si l’élément existe
{ echo $tab[$i]; $i++;
}
PHP chap 5 - les tableaux 98
PHP – LES TABLEAUX6.3 La fonction EACH()
$element = each($tableau)$element est un tableau de 4 éléments :
$element[0] -> indice de l’élément courant
$element[1] -> valeur de l’élément courant
$element[ "key" ] -> clé de l’élément courant
$element[ " value" ] -> valeur de l’élément courant
while($element=each($tableau)){ echo " l’élément indice .$element[0] . Contient . $element[1] " ;echo " l’élément de clé .$element[‘key’] . Contient . $element[‘value’] " ;}Attention la fonction each() déplace le pointeur sur l’élément suivant. Pour
réinitialiser le pointeur, ,utilisez la fonction reset($tableau)
PHP chap 5 - les tableaux 99
PHP – LES TABLEAUX6.4 La fonction EACH() associée à la fonction LIST()La fonction list(variableList) permet d’affecter à N variables la valeur des n
premiers éléments d’un tableau indicélist($x,$y,$z)=$tab; // $x=$tab[0] $y = $tab[1] etc …
list($x,,$y,,$z)=$tab; // $x=$tab[0] $y=$tab[2] $z=$tab[4]
list($x,$y) = each($tab); $x = indice de l’élément en cours $y = valeur de l’élément en cours
while(list($indice,$valeur) =each($tab){ echo " l’élément indice .$indice . contient . $valeur " ; }
Attention, la fonction list() ne s’applique pas aux tableaux associatifs
PHP chap 5 - les tableaux 100
PHP – LES TABLEAUX6.5 La fonction FOREACH()Par rapport à la boucle FOR, FOREACH() ne doit pas connaître à l’avance le
nombre d’éléments d’un tableau
Tableaux indicés
foreach($tab as $valeur) {bloc de code utilisant $valeur }
foreach($tab as $indice=>$valeur){bloc de code utilisant $indice $valeur }
Tableaux associatifs
foreach($tab as $cle=>$valeur) { bloc utilisant $cle et $valeur}
Exemple :
foreach($tab as $cle=>$valeur){ echo " l’élément de clé .$cle . contient . $valeur <br>" ; }
PHP chap 5 - les tableaux 101
PHP – LES TABLEAUXforeach() avec un tableau multidimensionnel
$clients = array("client1"=>array("nom1"=> "Leparc" , "ville1"=> "Paris"),"client2"=>array("nom2"=> "Laforet" , "ville2"=> " Bruxelles"),"client3"=>array("nom3"=> "Lechamp" , "ville3"=> " Madrid"));foreach($clients as $cle=>$tab){ echo " <B> $cle </B>" ;
foreach($tab as $key=>$valeur){
echo " $key - $valeur" ;}
}
PHP chap 5 - les tableaux 102
PHP – LES TABLEAUX7. MANIPULER LES TABLEAUX
7.1 Extraire une partie d’un tableauLa fonction array_slice() retourne un tableau qui est un sous-ensemble d’un
tableau initialExemple : $soustab=array_slice($tab, $indicedeb, $indicefin);
7.2 Ajouter et enlever des éléments- La fonction $int = array_push($tab, val1,val2, …valn);Ajoute en fin de $tab les éléments passés en paramètres et retourne le nouveau
nombre d’éléments du tableau
- La fonction $int = array_unshift($tab, val1,val2, …valn);Ajoute en début de $tab les éléments passés en paramètres et retourne le
nouveau nombre d’éléments du tableau
PHP chap 5 - les tableaux 103
PHP – LES TABLEAUX- La fonction $v = array_pop($tab)Supprime le dernier élément du tableau et retourne sa valeur (ou NULL) dans $v
- La fonction $v = array_shift($tab)Supprime le premier élément du tableau et retourne sa valeur (ou NULL) dans $v
- La fonction array_unset($tab[cle ou indice])Supprime l’élément du tableau dont on précise l’indice ou la clé Nb : les autres éléments conservent leurs valeurs
Exemples : array_unset($tab[3]) array_unset([" nom" ])
- La fonction $tab2 = array_unique($tab)Retourne un tableau ne contenant que la dernière occurrence des doublonsNB les doublons éliminés conservent leurs indices et sont vides
PHP chap 5 - les tableaux 104
PHP – LES TABLEAUX8. OPERATIONS SUR PLUSIEURS TABLEAUX
8.1 Fusionner des tableaux
La fonction $tab = array_merge($tab1, $tab2, …$tabn)
Renvoie en un seul tableau, l’union des différents tableaux passés en paramètres
Attention :Pour les tableaux associatifs, si des clés sont communes, seule l’association clé-valeur du dernier paramètre sera conservée
Pour ne pas perdre de telles valeurs, il faut utiliser la fonction
array_merge_recursive() qui conserve la clé en double et lui associera un tableau avec les différentes valeurs de cette cle
La fonction $tab=array_combine($tabcles,$tabvaleurs)
Crée un tableau associatif. $tabcles et $tabvaleurs étant des tableaux indicés contenant respectivement les clés et les valeurs associées
PHP chap 5 - les tableaux 105
PHP – LES TABLEAUX8.2 Intersection et différence de deux tableaux
La fonction $tab = array_intersect($tab1, $tab2)
Renvoie en un seul tableau, reprenant les éléments communs aux 2 tableaux
Attention : Les indices conservés correspondent à ceux du premier tableau
La fonction $tab = array_diff($tab1, $tab2)
Renvoie en un tableau, reprenant les éléments présents dans le premier tableaux et pas dans le deuxième.
Remarques : • On peut fournir plus de 2 tableaux comme paramètres.• Ces 2 fonctions peuvent être appliquées à des tableaux associatifs• L’ordre des paramètres fourni est important
PHP chap 5 - les tableaux 106
PHP – LES TABLEAUX9. TRI DES TABLEAUX9.1 Tri des tableaux indicésLa fonction sort($tabind) trie le tableau $tabind en ordre croissant ASCIILa fonction rsort($tabind) trie le tableau $tabind en ordre décroissant La fonction natsort($tabind) trie le tableau $tabind en ordre croissant
naturelLa fonction natrsort($tabind) trie le tableau $tabind en ordre décroissantLa fonction natcasesort($tabind) trie le tableau $tabind en ordre
croissant naturel sans tenir compte de la casse
NB Il ne sera pas possible de récupérer l’ordre initial, mais on peut si nécessaire duplicier un tableau avant de le trier $tabbis = $tab
La fonction $tab2 = array_reverse(tab) inverse l’ordre des valeurs dans un nouveau tableau
PHP chap 5 - les tableaux 107
PHP – LES TABLEAUXOn peut, si nécessaire, définir son ordre de tri personnel :usort($tab, "userFunctionName" )Le deuxième paramètre désigne le nom d’une fonction écrite par l’utilisateur qui
recevra 2 paramètres représentant 2 valeurs consécutives de la table à comparer.
Cette fonction retournera :• Un nombre négatif pour trier dans l’ordre défini• Un nombre positif pour trier dans l’ordre inverse• Zéro si les 2 éléments sont équivalents
ExempleExemple : trier dans l’ordre croissant de la longueur des chaînes : trier dans l’ordre croissant de la longueur des chaînesfunction long($mot1,$mot2){If(strlen($mot1)==strlen($mot2)) return 0;elsif(strlen($mot1)>strlen($mot2)) return -1;Else return 1;}
usort($tab, "long“)
PHP chap 5 - les tableaux 108
PHP – LES TABLEAUXMélanger les valeurs de façon aléatoire
La fonction shuffle($tab) mélangera de façon aléatoire les valeurs contenues dans la table.
NB Il est recommandé d’initialiser le générateur de nombres aléatoires avec srand(time()) avant d’appeler shuffle()
PHP chap 5 - les tableaux 109
PHP – LES TABLEAUX9.2 Tri des tableaux associatifs9.2.1. Tri des valeursLa fonction asort($tabas) trie le tableau $tabas en ordre croissant ASCIILa fonction arsort($tabas) trie le tableau $tabas en ordre décroissantLa fonction uasort($tabas, "userFunctionName" ) trie le tableau $tabas
suivant une fonction de tri définie par l’utilisateurNB Les fonctions natsort() natasort() et natcasesort() peuvent également
être utilisées avec les tableaux associatifs9.2.2. Tri des clésLa fonction $boolean = ksort($rtabas) trie le tableau associatif sur la
valeur croissante de ses clés et renvoye TRUE si le tri s’est bien passé (sinon FALSE)
$boolean = krsort($rtabas) idem en ordre décroissantuksort(($tabas, "userFunctionName" ) idem avec user defined function
NB Il est possible de transformer la casse des clés avec la fonction :array_change_key_case($tabas,CASE_LOWER / CASE_UPPER)
PHP chap 5 - les tableaux 110
PHP – LES TABLEAUX10. OPERER UNE SELECTION DES ELEMENTS
La fonction $tab2 = array_filter($tab, "userFunctionName“)
Permet de réaliser une sélection pour ne retenir dans $tab2 que les éléments de $tab répondant aux critères de la UDF. Cette UDF reçoit 1 paramètre, représentant la valeur courante de $tab
Exemple : ne retenir les valeurs commençant par la lettre ‘P’ ou ‘p’
Function init($ville)
{
if($ville[0] == ‘P’ || ($ville[0] == ‘p’)) return $ville ;
}
$tab2= array_filter($tab, “init“)
PHP chap 5 - les tableaux 111
PHP – LES TABLEAUX11. APPLIQUER UNE FONCTION A UN TABLEAU
On peut appliquer un traitement répétitif à chaque élément d’un tableau avec la fonction array_walk($tab, "userFunctionName“,ParamFacul)
On peut éventuellement ajouter des paramètres personnels derrière les 2 premiers
Cette fonction appelée reçevra 2 paramètres , le premier la valeur de l’élément, le deuxième l’indice ou la clé de l’élément. Si des Param facultatifs ont été donnés, ils seront passés à la suite des 2 premiers.
La fonction $chaine =array_reduce($tab, " UDFname ",ParamFacul)
Permet de retourner un seul résultat (somme, moyenne …) à partir des valeurs d’un tableau . Le ParamFacul représente la valeur par défaut qui sera retournée si $tab est vide.
PHP chap 5 - les tableaux 112
PHP – LES TABLEAUX12. L’OBJET ArrayObjectPour créer un objet tableau, on utilise $otab = ArrayObject()Le constructeur peut recevoir des valeurs :$otab = ArrayObject(array(3,45,’Nom’, TRUE)) // tabl indicés$otab = ArrayObject(array(‘a’=> "linux ",’b’=> " windows ")) // tabl ass
Pour ajouter un élément au tableau on utilise la méthode : $otab-
>append($valeur)La boucle foreach permet de lire les indices(ou clés) et les valeursLa méthode $otab->count() renvoye le nbre d’éléments du tableauLa méthode $tabass = $otab->getArrayCopy() récupère un tableau
associatif ‘classique’Pour lire un élément on utilise la méthode :
$val = $otab->offsetGet(indice / clé)
PHP chap 5 - les tableaux 113
PHP – LES TABLEAUXPour ajouter un élément en précisant sa clé ou indice on utilise la
méthode : $otab->offsetSet(cle / indice,valeur)
Pour supprimer un élément on utilise la méthode :
$otab->offsetUnSet(cle / indice)
PHP chap 5 - les tableaux 114
PHP – LES TABLEAUX-fonctionsarray_change_key_case — Change la casse des clés d'un tableauarray_chunk — Sépare un tableau en tableaux de taille inférieurearray_combine — Crée un tableau à partir de deux autres tableauxarray_count_values — Compte le nombre de valeurs d'un tableauarray_diff_assoc — Calcule la différence de deux tableaux, en prenant en compte les clésarray_diff_key — Calcule la différence de deux tableaux en utilisant les clés pour comparaisonarray_diff_uassoc — Calcule la différence entre deux tableaux associatifs, à l'aide d'une fonction de
rappelarray_diff_ukey — Calcule la différence entre deux tableaux en utilisant une fonction de rappel sur les
clés pour comparaisonarray_diff — Calcule la différence entre deux tableauxarray_fill_keys — Remplit un tableau avec des valeurs, en spécifiant les clésarray_fill — Remplit un tableau avec une même valeurarray_filter — Filtre les éléments d'un tableau grâce à une fonction utilisateurarray_flip — Remplace les clés par les valeurs, et les valeurs par les clésarray_intersect_assoc — Calcule l'intersection de deux tableaux avec des tests sur les indexarray_intersect_key — Calcule l'intersection de deux tableaux en utilisant les clés pour comparaisonarray_intersect_uassoc — Calcule l'intersection de deux tableaux avec des tests sur les index, compare
les index en utilisant une fonction de rappelarray_intersect_ukey — Calcule l'intersection de deux tableaux en utilisant une fonction de rappel sur
les clés pour comparaisonarray_intersect — Calcule l'intersection de tableauxarray_key_exists — Vérifie si une clé existe dans un tableau
PHP chap 6 - les formulaires 115
PHP- formulaires
1. Qu’est-ce qu’un formulaire ?2. Transmission des variables
A) transmission en modifiant l’adresseB) transmission avec un formulaire
3. les attributs d’un formulaireA) méthode : post ou getB) actionC) input typeD) textarea E) select
4. Exemple de formulaire5. Récupération des données d’un formulaire6. Exemple de traitement des données d’un formulaire7. Gérer les boutons d’envoi multiples
PHP chap 6 - les formulaires 116
PHP- formulaires1. Qu’est-ce qu’un formulaire ?
<form method="post" action="cible.php"> <p>
On mettra ici les éléments de notre formulaire.<br /> Notez qu'il n'y a pour l'instant pas de PHP.
</p> </form>
serveur
visiteur
formulaire
formulaire présentable créé en
HTML
Gestion des infos fournies par le
formulaire au script côté serveur en PHP
PHP chap 6 - les formulaires 117
PHP- formulaires2. Transmission des variables
Un des aspects intéressants de PHP, c'est qu'on peut se transmettre des variables de page en page.
C'est pratique, par exemple pour transmettre le nom du visiteur. En effet, les variables sont détruites une fois que la page PHP est générée. Alors comment récupérer leur valeur dans une autre page ?
A) Transmettre en modifiant l’adresse
<a href="http://www.monsite.com/infos.php?jour=27">Cliquez ici pour accéder aux infos !</a>
Balise <a> permet de faire un lien d’une page à l’autre
? nom-var = valeur
Cela va créer une variable particulière : $_GET['jour'] qui
aura pour valeur 27 !
PHP chap 6 - les formulaires 118
PHP- formulaires2. Transmission des variables
A) Transmettre en modifiant l’adresse
<a href="http://www.monsite.com/infos.php?jour=27&mois=07&annee=2008 ">Cliquez ici pour accéder aux infos !</a>
Pour créer d'autres variables, il vous suffit de les séparer par des &. Il ne faut pas écrire directement le symbole & (c'est interdit, même si ça "a l'air" de
marcher). Il faut remplacer les & par le code HTML correspondant, à savoir &
Tous les & seront transformés en symboles & par le navigateur du visiteur.
PHP chap 6 - les formulaires 119
PHP- formulaires
2. Transmission des variables
A) Transmettre en modifiant l’adresse (exemple complet)<p> Notez que cette page ne contient que du HTML.<br /> Voici 3 liens vers la page cible.php, avec des variables aux valeurs différentes : </p><p> <a href="cible.php?nom=Dupont&prenom=Michel">Lien vers cible.php?
nom=Dupont&prenom=Michel</a><br /> <a href="cible.php?nom=Guichard&prenom=Patrick">Lien vers cible.php?
nom=Guichard&prenom=Patrick</a><br /> <a href="cible.php?nom=Surret&prenom=Coralie">Lien vers cible.php?
nom=Surret&prenom=Coralie</a> </p>
Bonjour ! Votre nom est <?php echo $_GET['nom']; ?> , et votre prénom est <?php echo $_GET['prenom']; ?>. <p>Faites un autre essai, <a href="appel.php">cliquez ici</a> pour revenir à
appel.php</p>
appel.php
cible.php
$_GET et $_POST sont des tableaux associatifs qui permettent de récupérer les valeurs des variables d’une autre page
PHP chap 6 - les formulaires 120
PHP- formulaires2. Transmission des variables
B) Transmettre avec un formulaire
<p> Cette page, elle aussi, ne contient que du HTML.<br /> Veuillez taper votre prénom :</p><form action="cible.php" method="post"> <p> <input type="text" name="prenom" /> <input type="submit" value="Valider" /> </p> </form>
Bonjour ! Je sais comment tu t'appelles, hé hé. Tu t'appelles <?php echo $_POST['prenom']; ?> ! <p>Si tu veux changer de prénom, <a href="appel.php">clique ici</a> pour revenir à
appel.php</p>
appel.php
cible.php
PHP chap 6 - les formulaires 121
PHP- formulaires3. Les attributs d’un formulaire
A) method="post"|"get"
La méthode GET (celle qui est utilisée par défaut si rien n'est renseigné) fait circuler les informations du formulaire en clair dans la barre d'adresse en suivant le format ci-après :
Cette adresse signifie que nous allons transmettre à la page scriptphp.php les couples variable / valeur transmis en paramètre. La première variable d'une url est toujours précédée du symbole ? alors que les autres seront précédées du symbole &. Les noms des variables correspondent aux attributs name des éléments du formulaire et les valeurs aux attributs value.
La méthode POST, quant à elle, transmet les informations du formulaire de manière
masquée mais non cryptée.
La méthode POST est préférée lorsqu'il y'a un nombre important de données à transmettre ou bien
lorsqu'il faut envoyer des données sensibles comme des mots de passe. Dans certains cas, seule la
méthode POST est requise : un upload de fichier par exemple.
Inconvénient : données visibles par le visiteur
Méthode la plus utilisée
PHP chap 6 - les formulaires 122
PHP- formulaires3. Les attributs d’un formulaire
B) action = " cible.php "
C'est le nom de la page qui sera appelée lorsque l'utilisateur aura envoyé sonformulaire. Il est recommandé que ce fichier soit présent dans le même
répertoire quecelui contenant le formulaire.
Lorsque le formulaire est envoyé, le serveur Web qui le reçoit le redirige vers le script PHP référencé dans le champ action du formulaire. PHP va automatiquement créer le tableau $_POST qui contiendra les valeurs saisies dans les champs du formulaire.
PHP chap 6 - les formulaires 123
PHP- formulaires3. Les attributs d’un formulaire
C) Input type = " "
<input type="text" name="pseudo" value="M@teo21" />
Text passwordcheckbox radiosubmitresetfilehidden
Nom du champ(côté serveur)
Valeur par défaut le texte que le visiteur aura rentré sera disponible dans cible.php sous la forme
d'une variable appelée $_POST['pseudo'].
PHP chap 6 - les formulaires 124
PHP- formulaires3. Les attributs d’un formulaire
C) Input type = " "
<input type = "checkbox" name= " case"/> ma case
- Si la case est cochée, $_POST [‘case’], alors $_POST['case'] aura pour valeur "on " .
- Si elle n'est pas cochée, alors $_POST['case'] n'existera pas. Vous pouvez faire un test avec isset($_POST['case']).
- Si vous voulez que la case soit cochée par défaut, il faudra lui rajouter l'attribut checked="checked".
<input type="checkbox" name="case" checked="checked" />
Nom de la variable à transmettre Libellé affiché
PHP chap 6 - les formulaires 125
PHP- formulaires3. Les attributs d’un formulaire
C) Input type = " "
<input type = "checkbox" name= "case" value = " valeur " /> ma case
on peut créer un groupe de cases à cocher. Il est alors possible de cocher plusieurs cases simultanément.
<input type = "checkbox" name= " aliment []"/> Frites<input type = "checkbox" name= " aliment[] "/> Steak<input type = "checkbox" name= " aliment[]"/> Epinards<input type = "checkbox" name= " aliment[]"/> Huitres
Valeur transmise si la case est cochée
On récupère les valeurs dans un tableau
PHP chap 6 - les formulaires 126
PHP- formulaires3. Les attributs d’un formulaire
C) Input type = " "
Aimez-vous les frites ? <input type="radio" name="frites" value="oui" checked="checked" /> Oui <input type="radio" name="frites" value="non" /> Non
- les deux boutons d'option ont le même nom ("frites"). C'est très important, car les boutons d'options fonctionnent par "groupes" : tous les boutons d'option d'un même groupe ont le même nom. Un groupe contient min 2 boutons.
- A la différence des cases à cocher, un seul choix est autorisé.
- Pour pré-cocher l'un de ces boutons d'option, il faut ajouter un checked.
PHP chap 6 - les formulaires 127
PHP- formulaires
3. Les attributs d’un formulaire
C) Input type = " "
<input type="hidden" name="pseudo" value="Mateo21" />
- Dans la page cible, une variable $_POST['pseudo'] sera créée (correspondant à name), et elle aura la valeur "Mateo21" (correspondant à value)
<input type= " submit " value= " envoyer" />
- Ce bouton déclenche l’envoi des données de tout le formulaire vers le serveur.
- Le contenu de l’attribut “value” constitue le texte visible du bouton dans le formulaire.
Envoi des données
Un bouton
PHP chap 6 - les formulaires 128
PHP- formulaires
3. Les attributs d’un formulaire
C) Input type = " "
<input type= " submit “ name = “traitement” value= “ création" /><input type= " submit “ name = “traitement” value= “ modification" /><input type= " submit “ name = “traitement” value= “ suppression” />
- Si l’on a plusieurs boutons, le champ name est obligatoire et identique pour tous les boutons.
- idée : effectuer des tâches spécialisées en fonction de la valeur associée.
Envoi des données plusieurs boutons
PHP chap 6 - les formulaires 129
PHP- formulaires
3. Les attributs d’un formulaire
C) Input type = " "
<input type=" reset " value=" effacer" />
- Ce bouton réinitialise le formulaire.
- Si les éléments du formulaire ont des attributs value qui définissent des valeurs par défaut, ce sont ces valeurs qui apparaissent au démarrage de la page.
Réinitialisation du formulaire
PHP chap 6 - les formulaires 130
PHP- formulaires
3. Les attributs d’un formulaire
D) textarea name= " "
<textarea name="message" rows="8" cols="45"> Votre message ici. </textarea>
Message par défaut (optionnel) Définit la taille de la zone de
saisie.
PHP chap 6 - les formulaires 131
PHP- formulaires3. Les attributs d’un formulaire
E) Select option
<select name="choix"> <option value="choix1" selected="selected">Choix 1 </option> <option value="choix2">Choix 2</option> <option value="choix3">Choix 3</option> <option value="choix4">Choix 4</option></select>
- Ici, une variable $_POST['choix'] sera créée, et elle contiendra le choix qu'a fait l'utilisateur.
- S'il a choisi "Choix 3", la variable $_POST['choix'] sera égale au value correspondant, c'est-à-dire "choix3".
choix par défaut (optionnel)
choix unique
PHP chap 6 - les formulaires 132
PHP- formulaires3. Les attributs d’un formulaire
E) Select option
<label > vos couleurs préférées ? </label> <br/> <select name = "couleur[ ]" multiple="multiple" size="2"> <option value ="rouge" >rouge</option> <option value ="vert" >vert </option> <option value ="bleu" >bleu</option> <option value ="jaune">jaune</option> </select>
- dans les listes de sélection à choix multiple, l’utilisateur doit maintenir enfoncée la touche CTRL pour faire plusieurs choix.
choix multiple
PHP chap 6 - les formulaires 133
PHP- formulaires4. Exemple de formulaire
<body> <!-- //e6_0.php --><form method="post" action="e6_0bis.php" >
<!--//zone de texte --><input type ="text" name ="nom" /> nom <br/>
<!--// password--><input type ="password" name ="motpasse" /> mot passe <br/> <br/>
<!--// case à cocher simple --><input type ="checkbox" name ="content" value="content"/> content ? <br/> <br/>
<!--// cases à cocher multiples --> <input type ="checkbox" name ="lang[ ]" value="frans" /> français <br/> <input type ="checkbox" name ="lang[ ]" value="engels"/> anglais<br/> <input type ="checkbox" name ="lang[ ]" value="nederlands" /> néerlandais<br/> <br/>
PHP chap 6 - les formulaires 134
PHP- formulaires4. Exemple de formulaire
<!--// bouton radio (bouton d'option)--><label> Homme </label> <input type = "radio" name ="sexe" value="homme"/> <br/> <label> Femme </label> <input type = "radio" name ="sexe" value="femme"/> <br/> <br/>
<!--// liste déroulante à choix unique--> <label> votre signe astro ? </label> <br/> <select name = "signe" > <option value ="poisson" >poisson</option> <option value ="sagittaire" > sagittaire</option> <option value ="taureau" >taureau</option> <option value ="vierge">vierge</option> </select> <br/>
PHP chap 6 - les formulaires 135
PHP- formulaires4. Exemple de formulaire
<!--// liste déroulante à choix multiple--> <label for="choix"> vos couleurs préférées ? </label> <br/> <select name = "couleur[ ]" multiple="multiple" size="2"> <option value ="rouge" >rouge</option> <option value ="vert" >vert </option> <option value ="bleu" >bleu</option> <option value ="jaune">jaune</option> </select> <br/> <br/> <br/>
<!--// envoi du formulaire--><input type="submit" value ="envoyer"/></form>
</body>
PHP chap 6 - les formulaires 136
PHP- formulaires5. Récupération des données du formulaire
Que se passe-t-il lorsque l’utilisateur clique sur le bouton d’envoi ?
Une requête http est envoyée au serveur à destination du script désigné dans l’attribut action de <form>.
La requête contient toutes les associations entre les noms des champs et leur valeur.
Le script récepteur est écrit en PHP.2 cas apparaissent : -la transmission de valeurs uniques (texte par ex)
- la transmission de valeurs multiples (cases à cocher par ex)
Rem : dans la suite, on n’envisage que l’utilisation de la méthode « post ».
Dans l’entête HTTP avec la méthode POST
Dans l’URL avec la méthode GET
PHP chap 6 - les formulaires 137
PHP- formulaires5. Récupération des données du formulaire
ALERTE ROUGE :quand vous affichez les résultats d'un formulaire, prenez l'habitude de TOUJOURS appliquer
un htmlspecialchars( ). Même sur une liste déroulante ou un champ caché, un visiteur peut modifier la source pour aller mettre du html ou du javascript !
A) Récupération des valeurs uniques :
texte, bouton radio, liste de sélection
B) Récupération de valeurs multiples :
groupe de cases à cocher
PHP chap 6 - les formulaires 138
PHP- formulaires5. Récupération des données du formulaire
A) Récupération des valeurs uniques :
Texte, bouton radio, liste de sélection à choix unique
- Ces valeurs sont contenues sur le serveur dans un tableau associatif $_POST.
- Les clés de ce tableau sont les noms associés aux champs par l’attribut « name ».
B) Récupération de valeurs multiples :
groupe de cases à cocher, liste de sélection à choix multiple
- Ces valeurs sont contenues sur le serveur dans un tableau associatif $_POST multidimensionnel, en l’occurrence à 2 dimensions.
$_POST [" name" ] [ i ]
$_POST [" name" ]
PHP chap 6 - les formulaires 139
PHP- formulaires6. Exemple de traitement des données du formulaire
<?php //e6_0bis.php // pour les valeurs multiples $lang = $_POST ["lang"]; $couleur= $_POST ["couleur"]; // // trt des valeurs uniques // // zones de texte echo "votre nom est : ".$_POST ["nom"]."</br>"; echo "votre mot passe est : ".$_POST ["motpasse"]."</br>"; // bouton radio ( si pas coché, n'existe pas) if (isset ($_POST ["sexe"] ) ) echo "votre êtes un(e) : ".$_POST["sexe"]."</br>« ;
PHP chap 6 - les formulaires 140
PHP- formulaires6. Exemple de traitement des données du formulaire
// case à cocher (si pas cochée, n'existe pas) if (isset ($_POST ["content"] ) ) echo "vous êtes : ".$_POST ["content"]."</br>"; //liste déroulante à choix unique echo " votre signe astro est : ".$_POST["signe"]."</br>"; // // trt des valeurs multiples // // trt cases à cocher multiples echo "vous parlez : " ; foreach ($lang as $valeur) { echo "<li> $valeur </li> "; }
PHP chap 6 - les formulaires 141
PHP- formulaires6. Exemple de traitement des données du formulaire
//liste déroulante à sélection multiple echo " vos couleurs préférées sont :"; foreach ($couleur as $valeur) { echo "<li> $valeur </li> "; } echo "<a href=\"e6_0.php\"> clique ici pour le retour </a>";?>
PHP chap 6 - les formulaires 142
PHP- formulaires7. Gérer les boutons d’envoi multiples
<body> <!-- //e6_1.php-->
<form method="post" action="e6_1bis.php" >
<label for="n1"> nombre1</label><input type ="texte" name ="n1" id="n1"/> <br/>
<label for="n2"> nombre2</label><input type ="texte" name ="n2" id="n2"/> <br/> <br/>
<input name="calcul" type="submit" value ="add"/><input name="calcul" type="submit" value ="sub"/>
</form>
PHP chap 6 - les formulaires 143
PHP- formulaires7. Gérer les boutons d’envoi multiples
<?php //e6_1bis.php $n1 = $_POST ["n1"]; $n2 = $_POST ["n2"];
switch ( $_POST ["calcul"]) { case "add": $result=$n1+$n2; break; case "sub": $result=$n1-$n2; break; } echo "le résultat est : ".$result."</br>"; echo "<a href=\"e6_1.php\"> clique ici pour le retour </a>";?>
PHP chap 7 - les fonctions 144
PHP- fonctions
1. Les fonctions natives de PHP
2. Créer ses propres fonctions
2.1 définition, appel de fonction avec retour d’un résultat2.2 définition, appel de fonction sans retour de valeur2.3 définition, appel de fonction avec retour de plusieurs valeurs2.4 passage des arguments par référence
3. Portée des variables3.1 variables locales globales3.2 variables super globales
PHP chap 7 - les fonctions 145
PHP- fonctions1. Les fonctions natives de PHP
Il existe des- fonctions natives écrites en langage C - Modules d’extension qu’il est possible d’associer à la distribution standard
Avant d’utiliser un module, il convient de vérifier qu’il est bien installé sur le serveur de votre hébergeur.
// php 7.1
$tabtext = get_loaded_extensions (); foreach ($tabtext as $cle=>$valeur) { echo "$cle $valeur "; }
if (function_exists ('mysql_pconnect') ) echo "la fonction est utilisable";
retourne un tableau contenant tous les modules d’extension installés sur le serveur
Vérifie la disponibilité d’une fonction connue
Renvoie TRUE si la fonction est utilisableFALSE sinon
PHP chap 7 - les fonctions 146
PHP- fonctions1. Les fonctions natives de PHP
Voici un petit aperçu des fonctions qui existent pour vous mettre l'eau à la bouche :
• une fonction qui permet de rechercher et de remplacer des mots dans une variable
• une fonction qui envoie un fichier sur un serveur• une fonction qui permet de créer des images miniatures (aussi appelées
thumbnails)• une fonction qui envoie un mail avec PHP (très pratique pour faire une
newsletter !)• une fonction qui permet de modifier des images, y écrire du texte, tracer
des lignes, des rectangles etc…• une fonction qui crypte des mots de passe.• une fonction qui renvoie l'heure, la date...
PHP chap 7 - les fonctions 147
PHP- fonctions2. Créer ses propres fonctions
Ces fonctions personnalisées peuvent être écrites dans le script lui-même ou dans un script séparé qu’il suffira d’inclure dans de nouveaux scripts à l’aide de l’instruction include () ou require ()
2.1 définition, appel de fonction avec retour d’un résultat
Exemple 1 : calcul du volume d’un cylindreLa formule de calcul est : rayon * rayon * 3.14 * hauteur * (1/3)
<?php //e7_2.php//définition de la fonction function VolumeCone($rayon, $hauteur){ $volume = $rayon * $rayon * 3.14 * $hauteur * (1/3); return $volume; }// appel de la fonction$volume = VolumeCone(3, 1);echo "Le volume d'un cône de rayon 3 et de hauteur 1 est de $volume";?>
PHP chap 7 - les fonctions 148
PHP- fonctions2. Créer ses propres fonctions
2.2 définition, appel de fonction sans retour de valeur
Exemple 2 : fonction de lecture d’un tableau
<?php //e7_3.php//définition de la fonction// tabuni (nom du tableau, largeur de la bordure, libellé col1, libellé col2)function tabuni($tab,$bord,$lib1,$lib2){ echo "<table border=\"$bord\" width=\"75%\"> <tbody><tr><th>$lib1</th> <th>$lib2</th><tr>"; foreach ($tab as $cle=>$valeur) { echo "<tr><td>$cle </td> <td>$valeur </td><tr> "; } echo "<br/></tbody> </table>"; }
PHP chap 7 - les fonctions 149
PHP- fonctions2. Créer ses propres fonctions
Exemple 2 : fonction de lecture de tableaux (suite)
// définition des tableaux associtaifs $tab1= array ("France"=>"Paris","Allemagne"=>"Berlin","Espagne"=>"Madrid"); $tab2= array ("Poisson"=>"requin","Cétacé"=>"dauphin","Oiseau"=>"Aigle");
// appels de la fonction tabuni($tab1,1,"Pays","Capitale"); tabuni($tab2,6,"Genre","Espèce");?>
PHP chap 7 - les fonctions 150
PHP- fonctions2. Créer ses propres fonctions
2.3 définition, appel de fonction avec retour de plusieurs valeursVia l’utilisation d’un tableau (array), une fonction est capable de renvoyer
plusieurs valeurs.
Exemple 3 : fonction de calcul (somme et différence)
<?php //e7_4.php//définition de la fonction function calculVal($a,$b) { $som = $a + $b; $dif = $a - $b; return array($som,$dif); } // appel de la fonction $result = calculVal (8, 6); echo "somme des 2 nombres : ".$result[0]."<br/>"; echo "différence des 2 nombres : ".$result[1]."<br/>";?>
PHP chap 7 - les fonctions 151
PHP- fonctions2. Créer ses propres fonctions2.3 définition, appel de fonction avec valeur par défaut des arguments Il est possible de fixer des valeurs par défaut pour les arguments. Ces valeurs doivent être précisées en tant que constantes. Ces arguments doivent être placés en fin de liste des arguments.
Exemple 4 : fonction de mise en page
<?php //e7_5.php//définition de la fonction function header_page($title,$bgcolor="red") { echo "<html> <head><title>$title</title></head> <body bgcolor=\"$bgcolor\">"; }
// appel de la fonction header_page("cours PHP"); echo "<h1>Utilisation d'un paramètre par défaut</h1>";?>
PHP chap 7 - les fonctions 152
PHP- fonctions2. Créer ses propres fonctions
2.4 passage des arguments par référence
Jusqu’à présent, les arguments étaient passés par valeur.Il est possible de passer un argument par référence en faisant précéder
l’argument de « & » dans la définition de la fonction.
Exemple 5 : fonction de traitement d’un tableau
Le premier argument est passé par référence , le second par valeur.
PHP chap 7 - les fonctions 153
PHP- fonctions2. Créer ses propres fonctions
Exemple 5 : fonction de traitement d’un tableau
<?php //e7_6.php//définition de la fonction//multiplication des éléments d'un tableau par un coeff function prodTab(&$tab,$coeff) { foreach ($tab as $cle=>$val) $tab[$cle]*=$coeff; } // définition du tableau $tabnum = range(1,7); echo "tableau avant : ", print_r($tabnum),"<br/>"; // appel de la fonction prodTab($tabnum,3); echo "tableau après : ",print_r($tabnum),"<br/>";?>
PHP chap 7 - les fonctions 154
PHP- fonctions2. Créer ses propres fonctions
Exemple 6: fonction de calcul
<?php //e7_6bis.php//définition de la fonction//addition de 2 éléments numériques function addition ($n1,$n2,&$somme) { $somme= $n1 + $n2; } // appel de la fonction $a=10; addition($a,50,&$resultat); echo "<br> la somme de $a et 50 vaut : $resultat";
?>
PHP chap 7 - les fonctions 155
PHP- fonctions3. Portée des variables
3.1 variables locales et globales
- Toutes les variables utilisées dans la déclaration d’une fonction sont « locales » au bloc de définition de la fonction..
- Une variable définie en dehors d’une fonction est « globale » et accessible partout dans le script qui l’a créée.
<?php //e7_7.php//définition d'une variable globale $message = "apprendre le langage PHP"; // fonction utilisant une variable locale function affiche() { echo $message; } // appel de la fonction affiche();?>
- Le script affiche une page blanche.-La variable $message utilisée dans la fonction a une portée locale et n’a pas été initialisée.-- la fonction ne fait pas réf à la var $message déclarée globalement.
PHP chap 7 - les fonctions 156
PHP- fonctions3. Portée des variables
3.1 variables locales et globales
- Pour pouvoir utiliser une variable globale dans une fonction, il faut la redéclarer explicitement à ce niveau.
- 2 façons de réaliser cela :
1) en déclarant « globale » la variable dans la fonction avec le mot-clé « global »
2) en utilisant le tableau associatif prédéfini « $GLOBALS ».
PHP chap 7 - les fonctions 157
PHP- fonctions3. Portée des variables
3.1 variables locales et globales
- 1) en déclarant « globale » la variable dans la fonction avec le mot-clé « global »
<?php //e7_8.php//définition de variables globales $message = "apprendre le langage PHP"; $remarque = "c'est amusant<br/>"; // fonction utilisant les variables globales function affiche() { global $message, $remarque; echo $message.",".$remarque; } // appel de la fonction affiche();?>
PHP chap 7 - les fonctions 158
PHP- fonctions3. Portée des variables
3.1 variables locales et globales
- 2) en utilisant le tableau associatif prédéfini « $GLOBALS ». Les clés de ce dernier sont les noms des variables globales sans le « $ »
<?php //e7_9.php//définition de variables globales $message = "apprendre le langage PHP"; $remarque = "c'est amusant<br/>"; // fonction utilisant des variables globales (version 2) function affiche() { echo $GLOBALS ["message"].",".$GLOBALS ["remarque"];
} // appel de la fonction affiche();?>
PHP chap 7 - les fonctions 159
PHP- fonctions3. Portée des variables
3.2 variables super globales
PHP fournit un ensemble de tableaux prédéfinis qui contiennent les variables serveur ($_SERVER), les variables d’environnement et d’entrée ($_POST, $_GET, $_GLOBALS…).
Ces éléments sont super globaux ce qui signifie que ces variables existent sur toutes les pages et sont accessibles partout : au milieu de votre code, au début, dans les fonctions etc...
$_SERVER['REMOTE_ADDR'] : sans aucun doute l'information la plus intéressante de $_SERVER. Elle nous donne l'adresse IP du client qui a demandé à voir la page.
PHP chap 8 - les dates 160
PHP- dates
1. La fonction date()
2. Le timestamp 2.1 la fonction time()2.2 la fonction date() et le timestamp2.3 la fonction mktime() et le timestamp2.4 limites
3. La fonction checkdate()
4. La date en français
PHP chap 8 - les dates 161
PHP- dates1. La fonction date()
La fonction date permet d’afficher, le jour, la date et l’heure sur les pages WEB, qu’elles soient statiques ou créées dynamiquement.
<?php $jour = date('d'); echo 'Aujourd\'hui, nous sommes le : ' . $jour; ?>
Format 1 : date(‘lettre‘)
Remarques :1) Le plus embêtant avec date c'est que la fonction est faite pour... des anglais.
Il n'y a pas moyen qu'elle affiche les jours de la semaine en français.2) C'est l'heure du serveur qui est renvoyée, et non pas celle du client.
Affiche le numéro du jour dans le mois
Cfr tableau slide suivant
PHP chap 8 - les dates 162
PHP- dates
Caractères de définition du format d’affichage.
La colonne Exemple contient les valeurs telles qu'elles sont apparues le lundi 29 Août 2005 à 0h26
PHP chap 8 - les dates 163
PHP- dates
1. La fonction date()
<?php echo 'Aujourd\'hui, nous sommes le : ' . date('d/m/Y'); ?>
En fait, vous pouvez mettre ce que vous voulez dans date, dès que la fonction rencontre une lettre qu'elle connaît elle la remplace par la valeur correspondante.Cela veut dire que vous pouvez mettre des espaces, des tirets, ou des slashs comme j'ai fait pour séparer les éléments de date.
date a créé une chaîne de caractères qui contient jour/mois/année.
PHP chap 8 - les dates 164
PHP- dates
2. Le timestamp 2.1la fonction time()
Vieux des premiers âges babyloniens, le système sexagésimal consiste à diviser le jour en 2’ heures de 60 minutes de soixante secondes.
Les informaticiens ne peuvent se contenter d’un système dans lequel l’ajout d’une seconde peut amener à changer d’heure, de jour,….et même de millénaire.
Pour pallier ces difficultés, une date arbitraire a été définie , correspondant au 1er janvier 1970 00h 00m 00s. A partir de cette date, le temps est compté en secondes.
Ce nombre de secondes est nommé timestamp ou instant UNIX.En fait, ça représente le début de l'époque où le système d'exploitation Unix a
été créé.
<?php echo 'Le timestamp actuel est : ' . time(); ?>
Cette valeur n’est pas affichée au visiteur du site.Elle sert d’intermédiaire à d’autres fonctions pour calculer des durées, des dates passées ou futures.
PHP chap 8 - les dates 165
PHP- dates
2. Le timestamp
2.2 la fonction date() et le timestampIl est possible de fournir un second paramètre à date (après les lettres) : le
timestamp sur lequel vous voulez obtenir des informations.
<?php // e8_1.php$timestamp = 1080513608;echo "<p>Voici plein d'infos sur mon timestamp :</p>";echo "<ul>";echo "<li>toto a écrit ces lignes le ". date('d/m/Y', $timestamp)."</li>";echo "<li>Ce jour-là était un ". date('l', $timestamp)."</li>";echo "<li>Il était exactement : ". date('H\h i\m\i\n s\s', $timestamp)."</li>";echo "<li>Il y avait ". date('t', $timestamp)."jours ce mois-là.</li>";echo "<li>C'était le ".date('z', $timestamp). "ème jour de l'année </li>";echo "</ul>";?>
Par exemple, lorsque vous écrirez une news, il vous suffira d'enregistrer juste le timestamp, et vous serez capables grâce à ce nombre de ressortir toutes les infos possibles et imaginables dessus : le jour où la news a été postée, l'heure qu'il était etc...
PHP chap 8 - les dates 166
PHP- dates
2. Le timestamp
2.3 la fonction mktime() et le timestamp
<?php //e8_2.php$vieux_timestamp = mktime(13, 45, 26, 2, 5, 1998);echo 'Le timestamp du 05/02/1998 à 13h 45min 26s était : ' . $vieux_timestamp;?>
Utilité : calcul de la durée entre 2 dates
<?php //e8_3.php$timespasse = mktime(13, 45, 26, 2, 5, 1998);$timejour=time();$duree=$timejour - timepasse;echo "entre le 05/02/1998 à 13h 45min 26s et maintenant il s'est écoulé : " .$duree."secondes";?>
Je veux le timestamp du 5 Février 1998 à 13h 45min 26s
PHP chap 8 - les dates 167
PHP- dates
2. Le timestamp
2.4 limites
• L’inconvénient de ce système est de fournir des timestamp négatifs pour des dates antérieures à 1970 !
• le timestamp est celui calculé côté serveur , il n’est pas forcément identique à celui du poste client.
• le timestamp devient de plus en plus gros, et ce nombre sera tellement gros en 2037 que ça ne marchera plus.
PHP chap 8 - les dates 168
PHP- dates
3. La fonction checkdate()
//e8_4.php<form method="post" action="e8_4bis.php" ><legend>Entrez votre date de naissance JJ/MM/AAAA</legend><input type = "text" name = "date"/><input type ="submit" value = "envoi"/></form>
<?php //e8_4bis.php$date = $_POST["date"];$tabdate = explode("/",$date);if(!checkdate($tabdate [1],$tabdate[0],$tabdate[2])) echo "la date n'est pas valide. recommencez <hr/> ";else echo "<hr/> la date $date est valide! <hr/>";?>
La chaîne de caractères contenue dans $_POST[" date "] est décomposée grâce à la fonction explode(). Chaque élément de la date est récupéré dans un élément de tableau. Ces données sont ensuite transmises à la fonction checkdate() dans l’ordre moi, jour, année.
PHP chap 8 - les dates 169
PHP- dates
4. La date en français
<?php //e8_5.php// afficher la date en français$semaine= array (" dimanche "," lundi "," mardi ", " mercredi ", " jeudi "," vendredi "," samedi ");$mois= array (1=>" janvier"," février ", " mars ", " avril ", " mai ", " juin ", " juillet ", " aout ", " septembre ", " octobre", " novembre ", " décembre ");echo "aujourd'hui ".$semaine[date ('w')]." ".date('j')." ". $mois[date('n')]." ".date('Y')."<br/>";?>
Il serait préférable de définir une fonction qui réalise ce traitement
- On récupère le no du jour de la semaine avec date(‘j’)- On récupère le no du mois avec date(‘n’)
PHP chap 11 - les fichiers 170
PHP – FICHIERS.1. Création d’un fichier// teste l’existence d’un fichier
If (!file_exists(‘nomfich’)// crée un fichier vide avec date de dernière utilisation// nb le fichier sera accessible en écriture
{ touch(nomdufich,[timestamp]);} ex. touch(‘monfich.txt,time())2. Ouverture d’un fichier$id_file=fopen($nomfich,$mode,[$Boolpath])$nomfich = ‘monfich.txt’ ou ‘..\chemin\nomfich ou ‘http://site.be/ch/nf’$mode = mode d’ouverture‘r’ lecture ‘r+’ lecture-écriture(dbt fich) ‘w’ écriture dbt fich ‘w+’ lecture-écriture dbt fich ‘a’ ajout créé si inex ‘a+’ ajout-lecture créé si inex$BoolPath : si TRUEla recherche du fichier est étendue à tous les sous
répertoires
PHP chap 11 - les fichiers 171
PHP – FICHIERS.$id_file = identifiant du fichier
Sera utilisé comme premier paramètre de la plupart des fonctions de manipulation du fichier.
Il est de la forme Resource id#n oµ n est un entier incrémenté de 1
En cas d’échec à l’ouverture $id_file = FALSE
NB Pour créer un fichier temporairefichier temporaire (pendant la durée de la session en cours) on utilisera : $id_file = tmpfile()
3. Fermeture d’un fichier
$Boolresu = fclose($id_file)
PHP chap 11 - les fichiers 172
PHP – FICHIERS.4. Verrouillage des fichiers
$boolresu = flock($id_file, Kmodeverrou)
Kmodeverrou = Constante représentant le mode de verrou demandé• LOCK_SH bloque l’écriture par les autres scripts• LOCK_EX bloque l’écriture et la lecture par les autres scripts• LOCK_UN Enlève les verrous précédemment mis !!! Ne pas oublier!!! Ne pas oublier
$boolresu retourne FALSE si le verrou demandé n’a pu être obtenu
5. Ecriture dans un fichier
fwrite($id_file, $chaine,[N]) ou fputs($id_file, $chaine,[N])
Si N est précisé, seuls les N premiers caractères de la chaîne seront écrits.
PHP chap 11 - les fichiers 173
PHP – FICHIERS.6. Formatage des données
On sépare les différents champs par un séparateur et on ajoye un fin d’enregistrement
Exemple : fwrite($id_file,$nom. ";" .$prenom. ";“ .$adr . " \n")
7. Lecture des fichiers
Plusieurs fonctions sont disponibles =
fgets() fread() fseek() fgetcvs() readfile() passthru()
7.1 Lecture d’un record à la fois
$chaine = fgets($id_file, Nbytes)
Lecture depuis le début de N bytes. La lecture s’arrête après N bytes ou si \n est rencontré ou fin de fichier rencontrée.
PHP chap 11 - les fichiers 174
PHP – FICHIERS.Exemple :
while($ligne=fgets($id_file,100)
{
$tab=explode(‘;’,$ligne);
Echo ‘nom: ‘ . $tab[0] . ‘ prénom: ‘ . $tab[1] . ‘adr: ‘ . $tab[2];
}
NB voir aussi fgetcvs() 7.5
7.2 Lecture d’un nombre détermine de caractères
$chaine = fread($id_file, N)
Lit N caractères depuis le début du fichier sauf si \n est rencontré ou la fin de fichier rencontrée.
NB utilisé pour lire des records de longueurs fixes sans fin d’enregistrement
PHP chap 11 - les fichiers 175
PHP – FICHIERS.7.3 Lecture d’un caractère à la fois
$chaine = fgetc($id_file)
Lit 1 caractère depuis le début du fichier sauf si fin de fichier rencontrée.
7.4 Lecture d’une partie de fichier
On peut faire débuter la lecture à n’importe quel endroit du fichier.
$boolval fseek($id_file, N) // positionne le pointeur sur le Nème byte
N = Nbre d’octects à partir du début du fichier à partir d’où doit commencer la lecture. !!! Ne fait aucune lecture
$boolval = FALSE si erreur
On peut remettre le pointeur au début du fichier avec rewind($id_file)
La fonction filesize($id_file) retourne le Nbre de bytes du fichier
PHP chap 11 - les fichiers 176
PHP – FICHIERS.7.5 Lecture de données formatées
$array = fgetcvs($id_file,NbreBytes,$separateur)
Retourne directement une table (comme avec la fonction explode()) des différentes valeurs en utilisant le séparateur indiqué
Lit un maximum de N bytes, s’arrête à la fin du fichier ou à la rencontre de /n (fin d’enregistrement)
7.6 Lecture de la totalité d’un fichier
Si on doit lire tout un fichier (par exemple page web statique) sans analyser son contenu on utilisera :
readfile($nomfichier, [Boolpath])
Tout le contenu du fichier est directement envoyé au browser (comme l’aurait fait echo)
Si Boolpath = TRUE le fichier sera recherché dans tous les sous-répertoires
NB Le fichier ne doit pas être ouvert préalablement
PHP chap 11 - les fichiers 177
PHP – FICHIERS.
On peut également utiliser : $tableau = file($nomdufichier)
Lit tout le fichier et retourne un tableau dont chaque élément est constitué d’une seule ligne du fichier (/n)
Ou encore :
$id_file=fopen($nomfich,$mode) // le fichier doit être ouvert !!!
fpassthru($id_file)
Tout le contenu du fichier est directement envoyé au browser (comme
l’aurait fait echo)NB Il ne faut pas fermer le fichier, il l’est automatiquement à la fin de
fpassthru()
PHP chap 11 - les fichiers 178
PHP – FICHIERS.8. Modification des fichiers$boolret = copy($fn1,$fn2) //copier le fichier fn1 sur fn2$boolret = rename($fn1,$fn2) //renommer le fichier fn1 en fn2$boolret = unlink($fn1) //supprimer le fichier fn1$boolret = file_exists($fn1,$fn2) //Vérifier la présence de fn1$intret = filesize($fn1) // taille en bytes de fn1$boolret = is_file($fn1) //Vérifier si fn1 est un fichier (pas un répertoire)$boolret = is_readable($fn1) //Vérifier si fn1 est accessible en lecture$boolret = is_uploaded_file($fn1) //Vérifier si fn1 provient d’un upload$string = filetype($fn1) // retourne ‘file’ si fichier, ‘dir’ si répertoire$integer = fileatime($fn1) // retourne dernier accès (timestamp) de fn1$integer = filemtime($fn1) // retourne dern. mod data de fn1$integer = filectime($fn1) // retourne dernier mod des permissions de fn1$string = realpath($fn1) // retourne chemin complet de fn1$string = basename($url) // retourne le nom du fichier de l’URL complet
PHP chap 12-1 - les cookies 179
PHP – COOKIES.1. Définition
Petits fichiers pouvant être écrits par un script sur l’ordinateur du visiteur d’un site.
Limites : • Un site déterminé ne peut écrire que max 20 cookies sur le même
poste client.• Chaque cookie ne peut dépasseer 4K• Un cookie n’est accessible que par le site qui l’a écrit
• Ecriture des cookies
Attention : aucun contenu HTML ne peut avoir été envoyé avant l’écriture d’un cookie
PHP chap 12-1 - les cookies 180
PHP – COOKIES.$boolean = setcookie($nomcookie, $valeur, $datefin,$chemin,$domaine,
$securite);
$nomcookie : nom que l’on donne au cookie (chaîne)
$valeur : valeur que l’on donne au cookue (chaîne)
$datefin : entier (timestamp) servant à déterminer la date d’expitation du cookie. Si absent -> valable uniquement pendant la session
exemple : $datefin = time()+86400; // valable 24 heures
$chemin : chemin d’accès des scripts autorisés à accéder au cookie (facultatif)
$domaine : nom complet du domainequi peut accéder au cookie (facultatif) ex : www.isat.be
$securite : TRUE transmis par https, FALSE par http (défaut)
NB setcookie() renvoie FALSE en cas de problème
Exemple : $ok=setcookie( "nom" , " lorent",time()+86400, " /client/fact ");
PHP chap 12-1 - les cookies 181
PHP – COOKIES.3. Supprimer un cookie
Il suffit d’appeler setcookie($nomcookie) sans donner de valeur
4. Rendre un cookie innaccessible
Il suffit de lui donner une date d’expirantion antérieure à la date actuelle
Exemple : $ok=setcookie( "nom" , " lorent",time()-3600);
5. Plusieurs valeurs sous un même nom de cookie
setcookie("client[nom]" , " lorent",time()+86400, ); // attention : les clé
setcookie("client[prenom]" , " Jean",time()+86400, );// sans guillemets !!!
Ou bien :
foreach($tablassoc as $cle=>$valeur) //. À partir d’un tableau associatif
{setcookie("client[$cle]" , $valeur,time()+86400, );}
PHP chap 12-1 - les cookies 182
PHP – COOKIES.6. Lire un cookie
Les cookies sont accessibles via la variable superglobale $_COOKIE
Il s’agit d’un tableau associatif ayant comme clé le nom du cookie
Par exemple : $nom = $_COOKIE["nom" ];
Ou bien :
$prenom = $_COOKIE [ "client" ] [“prenom" ];
Ou encore :
foreach($_COOKIE[" client" ] as $cle=>$valeur)
{ $tablassoc[$cle] = $valeur ; }
PHP chap 12-2 les sessions 183
PHP – SESSIONS.1. DéfinitionMécanisme qui permet de conserver des informations provenant d’une
page web, pour être utilisées dans d’autres pages du site par un même visiteur. Aucun autre visiteur n’a accès à ces informations.
• Mise en œuvre des sessions• En début de chaque page ayant accès aux variables de session, il
faut appeler la fonction $ok=session_start();• Chaque utilisateur reçoit un sessionIDsessionID (SID) qui sera transmis
d’une page à l’autre de deux manières différentes :– Soit dans un cookieSoit dans un cookie– Soit en étant ajouté à l’URL de la pageSoit en étant ajouté à l’URL de la page
• Le script définit les variables de session et y accède en utilisant le tableau associatif superglobal $_SESSION dont les clés sont les noms des variables Exemple : $_SESSION[‘mavar’] = 25;
• Fermeture de la session et destruction des variables de sessionsession_unset(); session_destroy;
PHP chap 12-2 les sessions 184
PHP – SESSIONS.3. RemarquesLes variables de session sont stockées sur le serveur et non sur le poste
client. Elles sont en général stockées dans un dossier /tmp ou /sessions. Ces fichier on pour nom sess_xxxxxxxx (où xxxxxxx est le sessionID)
4. Session avec cookiesIl s’agit d’une manière simple de transmettre le sessionID (SID)d’une
page à l’autre du site. Pour utiliser cette méthode il faut 3 conditions :
• php.in session.use_cookies on• Le browser doit accepter les cookies• Chaque page du site commence par l’appel de session_start()NB si dans php.ini on a configuré session.auto_start on, le serveur
générera automatiquement un session_start() pour toutes les pages du site
PHP chap 12-2 les sessions 185
PHP – SESSIONS.3. RemarquesLes variables de session sont stockées sur le serveur et non sur le poste
client. Elles sont en général stockées dans un dossier /tmp ou /sessions. Ces fichier on pour nom sess_xxxxxxxx (où xxxxxxx est le sessionID)
4. Session avec cookiesIl s’agit d’une manière simple de transmettre le sessionIDsessionID d’une page à
l’autre du site. Pour utiliser cette méthode il faut 3 conditions :• php.ini session.use_cookies on• Le browser doit accepter les cookies !!!• Chaque page du site commence par l’appel de session_start()
NB si dans php.ini on a configuré session.auto_start on, le serveur générera automatiquement un session_start() pour toutes les pages du site (pas recommandé !!!)
PHP chap 12-2 les sessions 186
PHP – SESSIONS.5. Session sans cookiesLe nom de la session par défaut est PHPSESSID et l’identifiant aléatoire
de la session sont contenus dans la constante SID sous la forme PHPSESSID=xxxxxxxxxxxxxxxLa transmission du SID se fera par son ajoute dans l’url de la manière
suivante : <a href=‘page2.php?<?php echo SID ?>’> vers page2</a>
6. Autres fonctions pour les sessions$name = session_name(); // retourne le nom de la sessionsession_name(‘nouveaunom’) ;// définit un nouveau nom pour la session$id = session_id(); // retourne l’identifiant de la sessionsession_id(‘newID’); // définit un nouveau sessionID$path=session_save_path();// retourne le chemin du serveur où sont
stockées les données de la sessionsession_write_close(); // écrit les variables session sur le serveur et
ferme la session
PHP chap 12-2 les sessions 187
PHP – SESSIONS.7. Afficher toutes les variables de session
<?php// begin the sessionsession_start();
// loop through the session array with foreachforeach($_SESSION as $key=>$value) { // and print out the values echo 'The value of $_SESSION['."'".$key."'".'] is '."'".$value."'".' <br />'; }?>
PHP chap 12-2 les sessions 188
PHP – SESSIONS.8. Comment sont gérées les variables de session
<?php/*** begin a session ***/session_start();
if(isset($_COOKIE['PHPSESSID'])) { echo 'The session ID has been store in a cookie'; }if (defined(SID)) { echo 'The session ID has been stored in the query string'; }?>
PHP chap 12-3 - les E-mails 189
PHP – E-MAIL.1. Fonction de base d’envoi d’un mail
$ok = mail($dest, $objet, $texte, [$entete])
$dest = adresse mail du destinataire ( si plusieurs viurgules)
$objet = objet du mail
$texte = contenu ou format texte ou HTML
$entete (facultatif) = à utiliser si le format n’est pas texte ni HTML ou si ajoute de copie confirme, etc …
les différentes en-têtes sont séparées par :• \n sous serveur UNIX• \r\n sou serveur Windows
Mail() retrourne FALSE si problème
PHP chap 12-3 - les E-mails 190
PHP – E-MAIL.2. Options de mail (4ème paramètre) - MAIL
From: adresse mail de l’expéditeur
cc: adresses des destinaires des copies
cci : idem (adresses cachées)
Reply-To: adresse de réponse
X-Mailer: nom du logiciel d’envoi du courrier
Date: date de l’email au format JJ MM AAAA h:m:s +0N00 (N est le décalage horaire)
Exemple :
$entete = ‘From:[email protected]’;
$entete .=‘cc:[email protected],[email protected]’;
$entete .=‘Date:’ . Date("D, j M Y H:i:s +0100 ");
PHP chap 12-3 - les E-mails 191
PHP – E-MAIL.2. Options de mail (4ème paramètre) - MIME
Les types MIME (Multipurpose Internet Mail Extension) permettent d’insérer des images, sons etc … dans les mails.
MIME-Version: 1.0 = version MIME utilisée (doit être le 1er)
Content-Type: = type du contenu du mail
ex. Content-Type: text/html;charset=iso-8859-1
Content-Transfer-Encoding: = mode de codage du document
ex. Content-Transfer-Encoding: 8bit