Vous êtes sur la page 1sur 144

Langage PHP

Côté Serveurs

1
Principe

 Construire une application répartie :


◼ S’exécutant entre autre sur le poste hébergeant le
serveur HTTP.
◼ Utilisant le serveur HTTP pour accéder aux
postes clients.
◼ Utilisant HTML comme langage de base pour
l’interaction avec les utilisateurs.
◼ En particulier, recours à des clients légers de
type navigateurs WEB.(utilise aussi l'appellation
client léger pour les applications laissant
quasiment tout le traitement au serveur) 2
Scripts côté serveur :
les quatre leaders du marché

 Perl

 PHP (Php Hypertext Preprocessor)

 JSP (Java Server Pages)

 ASP (Active Server Pages)

3
Modèle du fonctionnement du
PHP

4
Modèle du fonctionnement
du PHP
Architecture (avec Apache)

APACHE

PHP
POST/GET

Répertoires
web

6
Historique

 PHP = Hypertext PreProcessor


 Site officiel : http://www.php.net
 Créé en 1994 par Rasmus Lerdorf
(PHP : Personnal Home Page.)
 Première version : ensemble de scripts perl
 PHP3 : interprété
 PHP4 : compilé
 PHP5 : compilé Objet

7
PHP, qu'est-ce que c'est ?

 Un langage pour la programmation du serveur


 Permet d'inclure des parties programmées
dans du HTML
 Très proche du langage C
 Très riche en fonctions, notamment pour
l'accès aux bases de données

8
Premier programme

 La conception du script PHP est réalisé avec un éditeur


quelconque,
Côté serveur :

<HTML>
<HEAD><TITLE>Mon premier programme</TITLE></HEAD>
<BODY>
il est sur le serveur
<?php print date ("H i s"); ?>

</BODY>
</HTML>

9
Premier programme

 Côté navigateur

<HTML>
<HEAD> <TITLE> Heure </TITLE> </HEAD>
<BODY>
<P>
Sur le serveur, il est actuellement 16:39:27
</P>
</BODY>
</HTML>

10
Généralité

 Extension du fichier :
◼ .php pour du PHP 4

◼ .php3 pour du PHP 3

 Délimiteur :
◼ <? ... ?>

◼ <?php ... ?>

◼ <SCRIPT language="php"> ... </SCRIPT>

11
Les bases du langage

Syntaxe du langage

12
Commentaires

 Un script php se commente comme en C :


 Exemple :
<?php
// commentaire de fin de ligne
/* commentaire
sur plusieurs
lignes */
# commentaire de fin de ligne comme en Shell Unix
?>
 Tout ce qui se trouve dans un commentaire est
ignoré. Il est conseillé de commenter
largement ses scripts.
13
Exemples de commentaires

 <?php
echo 'Ceci est un test'; // Ceci est un commentaire sur une seule ligne, style c++
/* Ceci est un commentaire sur
plusieurs lignes */
echo 'Ceci est un autre test';
echo 'Et un test final';
# Ceci est un commentaire style shell sur une seule ligne
?>

14
Syntaxe du langage

Variables, types et
opérateurs

15
Variables, types et
opérateurs (I)
 Le typage des variables est implicite en php.
◼ Il n’est donc pas nécessaire de déclarer leur type au préalable
◼ ni même de les initialiser avant leur utilisation.
 Les identificateurs de variable sont précédés du symbole "$" (dollars).
Exemple : $variable.
 Les variables peuvent être de type entier (integer), réel (double), chaîne
de caractères (string), tableau (array), objet (object), booléen
(boolean)...
 Il est possible de convertir une variable en un type primitif grâce au cast
(comme en C).
◼ Exemple :

⚫ $str = "12"; // $str vaut la chaîne "12"


⚫ $nbr = (int)$str; // $nbr vaut le nombre 12

16
Booléen

 C'est le type le plus simple. Un booléen


représente une valeur de vérité. Il peut valoir
TRUE ou FALSE.
 Note: Le type booléen a été introduit en PHP 4.
 Syntaxe
◼ Pour spécifier un booléen littéral, utilisez le mot
clé TRUE ou FALSE. Les deux sont insensibles
à la casse.

17
Exemple

<?php
$valeur = true;
echo '<br/>affichage valeur à TRUE: "'.$valeur.'"';
$valeur = false;
echo '<br/>affichage valeur à FALSE: "'.$valeur.'"';
exit;
?>

18
Les entiers

 Un entier est un nombre appartenant à la classe Z =


{..., -2, -1, 0, 1, 2, ...}.
 Syntaxe
◼ Les entiers peuvent être spécifiés en notation décimale (base
10), hexadécimale (base 16), ou octale (base 8),
optionnellement précédée d'un signe (- ou +).

◼ Pour utiliser la notation octale, précédez le nombre d'un 0


(zéro). Pour utiliser la notation hexadécimale, précédez le
nombre d'un 0x.

19
Exemples

 <?php
$a = 1234; // un nombre décimal
$a = -123; // un nombre négatif
$a = 0123; // un nombre octal (équivalent à 83 décimales)
$a = 0x1A; // un nombre hexadécimal (équivalent à 26 décimales)
?>

20
Nombres décimaux

 Les nombres décimaux, (aussi connus


comme nombres à virgule flottante, "floats",
"doubles", ou "real numbers") peuvent être
spécifiés en utilisant les syntaxes suivantes :

21
Exemple

<?php
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
?>

22
Les chaînes de caractères

 Syntaxe
◼ Une chaîne de caractères littérale peut être
spécifiée de 2 façons différentes :
⚫ Entourée de guillemets simples
⚫ Entourée de guillemets doubles

23
Entourée de simple guillemet

 Entourée de simple guillemet


◼ La façon la plus simple de spécifier une chaîne
de caractères est de l'entourer de guillemet
simple (le caractère ').
◼ Pour spécifier un guillemet simple littéral, vous
devrez l'échapper d'un antislash (\).
◼ Pour spécifier un antislash littéral avant un
guillemet simple, ou à la fin d'une chaîne de
caractères, échappez-le deux fois (\\).

24
Exemple

<?php
echo 'ceci est une chaîne simple';

echo 'Vous pouvez également ajouter des nouvelles lignes


dans vos chaînes
de cette façon';

// Affiche : Voulez-vous supprimer C:\*.*?


echo 'Voulez-vous supprimer C:\\*.*?';

// Affiche : Ceci n'affichera pas \n de nouvelle ligne


echo 'Ceci n\'affichera pas \n de nouvelle ligne';

25
Chaînes de caractères (II)
Opérateur de concaténation de chaînes : . (point)

Exemple 1 :
$a = "Salam";
$b= " tout le monde";
echo $a.$b;
Exemple 2 :
$prenom = " Batou ";
$nom = $prenom. " Larbi ";

Exemple 3 :
$filiere = " 3ème année ";
$filiere.= " SIR ";
echo $filiere; 26
Chaînes de caractères (III)
Affichage d’une chaîne avec print :

Exemples:
print 'Hello Word.';
print "Nom : ". $name;
print("Bonjour");

Quelques fonctions:
strlen($str) : retourne le nombre de caractères d’une chaîne
strtolower($str) : conversion en minuscules
strtoupper($str) : conversion en majuscules
trim($str) : suppression des espaces de début et de fin de chaîne
substr($str,$i,$j) : retourne une sous chaîne (entre les positions i et j)
strnatcmp($str1,$str2) : comparaison de 2 chaînes
addslashes($str) : déspécialise les caractères spéciaux (‘, ‘’, \)
ord($char) : retourne la valeur ASCII du caractère

27
Chaînes de caractères (IV)
On peut délimiter les chaînes de caractères avec la
syntaxe Here-doc.
Exemple :
$essai = <<<EOD
Ma chaîne ‘’essai’’
sur plusieurs lignes.
EOD;
echo $essai;

La valeur de la variable $essai est délimitée par un


identifiant que vous nommez librement. La première
apparition de cet identifiant doit être précédée de 3
signes inférieurs <. Sa deuxième apparition doit se faire
en premier sur une nouvelle ligne. 28
Exemple
<HTML>
<HEAD>
<TITLE>New Document</TITLE>
</HEAD>
<BODY>
<?php
$str = <<<EOD
Exemple de chaîne
sur plusieurs lignes
en utilisant la syntaxe Heredoc.
EOD;
echo $str;

?>

</BODY>
</HTML>

29
Variables, types et
opérateurs (II)
 Quelques fonctions :
◼ empty($var) : renvoie vrai si la variable est vide

◼ isset($var) : renvoie vrai si la variable existe

◼ unset($var) : détruit une variable

◼ gettype($var) : retourne le type de la variable

◼ settype($var, ’’type’’) : convertit la variable en type type (cast)

◼ is_long(), is_double(), is_string(), is_array(), is_object(),


is_bool(), is_float(), is_numeric(), is_integer(), is_int()…
 Une variable peut avoir pour identificateur la valeur d’une autre variable.
◼ Syntaxe : ${$var} = valeur;

◼ Exemple :

⚫ $variable = ‘’chaineVar’’; ${$ variable } = 2002;

⚫ print $chaineVar; // la variable $chaineVar vaut 2002

30
Variables, types et
opérateurs (III)
Opérateurs arithmétiques :
◼ + (addition),

◼ - (soustraction), * (multiplié), / (divisé), % (modulo),


++ (incrément), --(décrément). Ces deux derniers
peuvent être pré ou post fixés
 Opérateurs d’assignement :
◼ = (affectation), *= ($x*=$y équivalent à $x=$x*$y),
/=, +=, -=, %=

31
Variables, types et
opérateurs (IV)

 Opérateurs logiques :
◼ and, && (et), or, || (ou), xor (ou exclusif), !

(non)
 Opérateurs de comparaison :
◼ == (égalité), < (inférieur strict), <= (inférieur

large), >, >=, != (différence)

32
Syntaxe du langage

Les Constantes

33
Constantes

L’utilisateur peut définir des constantes dont la valeur est


fixée une fois pour toute.
Les constantes ne portent pas le symbole $ (dollars) en
début d’identificateur et ne sont pas modifiables.
define(‘’var’’,valeur) : définit la constante var (sans $) de valeur
valeur

Exemple :
define("author","Irisi ");
Print author; // affiche ‘irisi’
define("MY_Year","2011");
print MY_Year; // affiche 2011

34
Syntaxe du langage

Mathématiques

35
Mathématiques

 Il existe une myriade de fonctions mathématiques.


◼ abs($x) : valeur absolue
◼ ceil($x) : arrondi supérieur
◼ floor($x) : arrondi inférieur
◼ pow($x,$y) : x exposant y
◼ round($x,$i) : arrondi de x à la ième décimale
◼ max($a, $b, $c …) : retourne l’argument de valeur maximum
◼ pi() : retourne la valeur de Pi

36
Mathématiques

 Et aussi :
◼ cos, sin, tan, exp, log, min, pi, sqrt…
 Nombres aléatoires :
◼ rand($x,$y) : valeur aléatoire entre x et y

◼ srand() : initialisation du générateur aléatoire

37
Syntaxe du langage

Les Tableaux

38
Tableaux (I)
Un tableau peut être initialisé avec la syntaxe array.
Exemple :
$name=3;
$tab_colors = array('red', 'yellow', 'blue', 'white');
$tab = array(‘SIR', 2013, 20.5, $name);//on peut mettre n’importe quel type

$prenoms[] = "Ali"; $villes[0] = "Marrakech";


$prenoms[] = "Justin"; $villes[1] = "Londres";
$prenoms[] = "Moha"; $villes[2] = "Atlass";

echo $prenoms[1]; // pour accéder au 2ème élément

39
Tableaux (II)
Parcours d’un tableau.
$tab = array(‘SIR’, ‘3’, ’FSTG’);

Exemple 1 :
$i=0;
while($i < count($tab)) { // count() retourne le nombre d’éléments
echo $tab[$i].’\n’;
$i++;
}
Exemple 2 :

foreach($tab as $elem) {
echo $elem.’’\n’’;
}
La variable $elem prend pour valeurs successives
tous les éléments du tableau $tab.
40
Tableaux (III)
 Quelques fonctions:

◼ count($tab), sizeof : retournent le nombre d’éléments du tableau

◼ in_array($var,$tab) : teste si la valeur de $var existe dans le tableau $tab

◼ list($var1,$var2…) : transforme une liste de variables en tableau

◼ range($i,$j) : retourne un tableau contenant un interval de valeurs

◼ shuffle($tab) : mélange les éléments d’un tableau

◼ sort($tab) : trie alphanumérique les éléments du tableau

41
Tableaux associatifs (I)

Un tableau associatif est appelé aussi dictionnaire ou hashtable.


On associe à chacun de ses éléments une clé dont la valeur est
de type chaîne de caractères.

L’initialisation d’un tableau associatif est similaire à celle d’un


tableau normal.

Exemple 1 :
$personne = array("Nom" => "SIR", "Prénom" => " 3ème année");
Exemple 2 :
$personne["Nom" ] = " SIR ";
$personne[" Prénom "] = " 3ème année ";
Ici la clé ‘’Nom’’ est associée la valeur ‘’SIR’’.

42
Tableaux associatifs (II)

Parcours d’un tableau associatif.


$personne = array ("Nom" => " SIR", "Prénom" => " 3ème année ");

Exemple 1 :
foreach($personne as $elem) {
echo $elem;
}

Ici on accède directement aux éléments du tableau sans passer


par les clés.

Exemple 2 :
foreach($personne as $key => $elem) {
echo ‘’$key : $elem’’;
}
Ici on accède simultanément aux clés et aux éléments.

43
Exemple
<?php
// ceci
$a = array( 'couleur' => 'rouge', 'gout' => 'sucre'
, 'forme' => 'rond', 'nom' => 'pomme', 4 // cette clé sera 0
);
// est complétement équivalent à
$a['couleur'] = 'rouge';
$a['gout'] = 'sucre';
$a['forme'] = 'rond';
$a['nom'] = 'pomme';
$a[] = 4; // cette clé sera 0
$b[] = 'a';
$b[] = 'b';
$b[] = 'c';
// va créer le tableau array( 0 => 'a' , 1 => 'b' , 2 => 'c' )
// ou plus simplement array('a' , 'b' , 'c' )
?>

44
Les tableaux
Quelques fonctions
array_count_values($tab) : retourne un tableau associatif contenant
les valeurs du tableau $tab comme clés et leurs fréquence comme
valeur
array_keys($tab) : retourne un tableau contenant les clés du tableau
associatif $tab
array_values($tab) : retourne un tableau contenant les valeurs du
tableau associatif $tab
array_search($val,$tab) : retourne la clé associée à la valeur $val

L’élément d’un tableau peut être un autre tableau.

Les tableaux associatifs permettent de préserver une structure de


données.
Exemples
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>

résultats:

Array
(
[1] => 2
[hello] => 2
[world] => 1
)

-------------------------------------------------------------
<?php
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));

$array = array("blue", "red", "green", "blue", "blue");


print_r(array_keys($array, "blue"));

$array = array("color" => array("blue", "red", "green"),


"size" => array("small", "medium", "large"));
print_r(array_keys($array));
?>

résultats:

Array
(
[0] => 0
[1] => color
)
Array
(
[0] => 0
[1] => 3
[2] => 4
)
Array
(
[0] => color
[1] => size
)
---------------------------------------------------------------------------

<?php
$array = array("size" => "XL", "color" => "gold");
Les tableaux

Quelques fonctions
reset($tab) : place le pointeur sur le premier élément
current($tab) : retourne la valeur de l’élément courant
next($tab) : place le pointeur sur l’élément suivant
prev($tab) : place le pointeur sur l’élément précédant
each($tab) : retourne la paire clé/valeur courante et avance le
pointeur

Exemple :
<?php
$colors = array("red", "green", "blue");
$nbr = count($colors);
reset($colors);
for($i=1; $i<=$nbr; $i++) {
echo current($colors)."<br>";

next($colors)
}
?>
Les fonctions I

Une fonction est un sous-programme qui permet d'effectuer un


ensemble d'instructions par simple appel dans le corps du
programme principal.
Comme tout langage de programmation. PHP permet l’écriture des
fonction.
La syntaxe est la suivante:

function ma_fonction($argument1, $argument2,…)


{
Liste des instructions;
Return ($valeur_de_retour);
}

Une fonction peut ne pas avoir de valeurs d’entrée (arguments) ou


encore retourner de valeurs (le cas d’une fonction d’affichage de
message d’erreur).
Les fonctions II
Variable locale et variable globale d’une fonction
Toute variable déclarée au sein d’une fonction est de portée locale de
cette fonction. Elle n’est pas reconnue dans le reste du
programme.
global permet de travailler sur une variable de portée globale au
programme. Le tableau associatif $GLOBALS permet d’accéder
aux variables globales du script ($GLOBALS[‘’var’’] accède à la
variable $var).

Exemple :
<?php
function test() {
$foo = "variable locale";

echo "$foo dans le contexte global : " . $GLOBALS["foo"] . "<br>";


echo "$foo dans le contexte courant : " . $foo . "\n";
}

$foo = "Exemple de contenu";


test();
?>
Les fonctions III

Forcer le passage de paramètres par référence


Exemple :
function change(&$var) { // force le passage par référence
$var += 100; // incrémentation de +100
}
$toto = 12; // $toto vaut 12
change($toto);
echo $toto; // $toto vaut 112
Les fonctions IV

Même sans paramètre, un entête de fonction doit porter des


parenthèses ( ). Les différents arguments sont séparés par une
virgule et le corps de la fonction est délimité par des accolades {
}.

Quelques exemples :
function afficher($str1, $str2) { // passage de deux paramètres
echo ‘’$str1, $str2’’;
}

function bonjour() { // passage d’aucun paramètre


echo ‘’Bonjour’’;
}

function GetColor() { // retour d’une variable


return ‘’black’’;
}
Les fonctions V
En version 3 du PHP (version interprétée), une fonction ne peut être
appelée qu’après sa définition. En version 4 et 5 (compilées) une
fonction peut être appelée avant sa définition.

Exemple :
function f1() { // définition de la fonction f1
echo ‘’fonction f1…’’;
}
f1(); // appel de la fonction f1 définie plus haut
f2(); // appel de la fonction f2 pas encore définie
function f2() { // définition de la fonction f2
echo ‘’fonction f2’’;
}

Cet exemple affichera : fonction f1…fonction f2!.


Les fonctions VI
Il est possible de faire retourner plusieurs valeurs d’une fonction en
utilisant les tableaux ayant pour éléments les variables à
retourner. Dans l’appel de la fonction, il faudra alors utiliser la
procédure list() qui prend en paramètre les variables à qui ont
doit affecter les valeurs retournées. On affecte à list() le retour de
la fonction.

Exemple :
function trigo($nbr) {
return array(sin($nbr), cos($nbr), tan($nbr)); // retour d’un
// tableau
}
$r = M_PI;
list($a, $b, $c) = trigo($r); /* affectation aux variables $a,$b et
$c des éléments du tableau retourné par la fonction trigo */
Fonctions dans une autre
fonction
<?php
function foo()
{
function bar()
{
echo "Je n'existe pas tant que foo() n'est pas appelé.\n";
}
}
/* Impossible d'appeler bar() ici
car il n'existe pas. */
foo();
/* Maintenant, nous pouvons appeler bar(),
car l'utilisation de foo() l'a rendu
accessible. */
bar();
?>
Valeur par défaut des arguments
de fonctions
<?php
function servir_cafe ($type = "cappuccino")
{
return "Servir un $type.\n";
}
echo servir_cafe();
echo servir_cafe(null);
echo servir_cafe("espresso");
?>
Les arguments à valeur par
défaut doivent être en premier :
valide
<?php
function faireunyaourt ($flavour, $type = "acidophil
us")
{
return "Préparer un bol de $type $flavour.\n";
}
echo faireunyaourt ("framboise"); // fonctionne co
mme voulu
?>
Les valeurs de retour

<?php
function carre ($num)
{
return $num * $num;
}
echo carre (4);
?>
Retourner un tableau d'une
fonction

<?php
function petit_nombre()
{
return array (0, 1, 2);
}
list ($zero, $un, $deux) = petit_nombre();
var_dump($zero, $un, $deux);
?>
Exemple de fonction variable
<?php
function foo() {
echo "dans foo()<br />\n";
}
function bar($arg = '')
{
echo "Dans bar(); l'argument était '$arg'.<br />\n";
}
// Ceci est une fonction détournée de echo
function echoit($string)
{
echo $string;
}
$func = 'foo';
$func(); // Appel foo()
$func = 'bar';
$func('test'); // Appel bar()
$func = 'echoit';
$func('test'); // Appel echoit()
?>
Exemple de méthode variable
<?php
class Foo
{
function Variable()
{
$name = 'Bar';
$this->$name(); // Appelle la méthode Bar()
}
function Bar()
{
echo "C'est Bar";
}
}
$foo = new Foo();
$funcname = "Variable";
$foo->$funcname(); // Appelle $foo->Variable()
?>
Fonctions récursives

<?php
function recursion($a)
{
if ($a < 20) {
echo "$a\n";
recursion($a + 1);
}
}
recursion(3);
?>
Les inclusions
On peut inclure dans un script PHP le contenu d’un autre fichier.
require insert dans le code le contenu du fichier spécifié même si ce
n’est pas du code php. ( équivalent au préprocesseur #include du
C)

Syntaxe:
require(‘’fichier.php’’);

include évalue et insert à chaque appel (même dans une boucle) le


contenu du fichier passé en argument.

Syntaxe:
include(‘’fichier.php’’);

Les inclusions sont très utiles lors de l’appel d’une base de donnée.
Les paramètres de connexions sont stockés sur un fichiers à part.
Exemple avec include()
vars.php
<?php
$color = 'verte';
$fruit = 'pomme';
?>

test.php
<?php
echo "Une $couleur $fruit"; // Une
include 'vars.php';
echo "Une $couleur $fruit"; // Une verte pomme
?>
Inclusion de fichiers dans une
fonction
<?php
function foo()
{
global $couleur;
include 'vars.php';
echo "Une $couleur $fruit";
}
/* vars.php est dans le contexte de foo() *
* donc $fruit n'est pas disponibles hors de *
* cette fonction. $couleur l'est, car c'est *
* une variable globale */
foo(); // Une verte pomme
echo "Une $couleur $fruit"; // Une verte
?>
 La fonction require permet d’insérer le contenu d’un fichier à l’intérieur
d’un autre fichier.
 Cette fonction a donc pour effet de réaliser un « copier coller » à
l’endroit où elle est écrite.
 Vous comprendrez immédiatement l’intérêt de cette fonction !
 En effet, vous avez désormais la possibilité d’économiser l’écriture de
code ou de texte.

La syntaxe :
<?php require("NomDuFichier"); ?>
La description :
« NomDuFichier » est le nom du fichier depuis lequel vous souhaitez
réaliser l’insertion.
Exemple
Voici le fichier entete.php :

<html>
<head>
<title> Le site INFOS PLUS</title>
</head>
<body>
<h1>Le site INFOS PLUS</h1>
<h1> Le site d'astuces à votre services...</h1>
<p>Contactez-moi au numéro de téléphone suivant :</p>
<p>INFOS PLUS PARIS : <i>01.99.01.01.01</i></p>
<p>Je vous attends ! Venez vite !</p>

Voici le code du fichier index.php :

<?
// insertion de l'entête
require("entete.php"); ?>
<h1>bonjour</h1>
<h1>Présentation</h1>
<p>Ce site vous propose des centaines d'astuces concernant l'utilisation de l'outil informatique.</p>
<p>C'est d'actualité, non ?</p>
<p>Pour continuer la visite, cliquez sur le lien page suivante...</p>
<p><a href="suite.php">Page suivante</a></p>
</body>
</html>

Voici le code du fichier suite.php :

<?
// insertion de l'entête
require("entete.php"); ?>
<h1>La suite</h1>
<p>Salut !</p>
<p>Maintenant, si vous voulez continuer de visiter ce site, il va falloir me dire d'où vous êtes...</p>
<p>En fait, il n'y a pas de suite !</p>
<p><a href="index.php">Alors retourner à la page d'accueil...</a></p>
</body>
Arrêt prématuré

Pour stopper prématurément un script, il existe deux fonctions.


die arrête un script et affiche un message d’erreur dans le
navigateur.

Exemple :
if(mysql_query($requette) == false)
die(‘’Erreur de base de données à la requête’’);

exit l’arrête aussi mais sans afficher de message d’erreur.

Exemple :
function mafonc() {
exit();
}

Ces fonctions stoppent tout le script et pas seulement le bloc en


cours.
Les sessions I

Les sessions permettent le passage des variables (variables de


session) d’une page à une autre tout au cours de la visite du site
web.

Les variables de session ne sont pas visibles dans l’URL et peuvent


être de types différents (tableau, float…).

Cette méthode permet de conserver les paramètres de connexions


d’un visiteur et conserver ses choix (sauvegarder son panier e-
commerce par exemple)

Les informations de sessions sont conservées en local sur le serveur


tandis qu’un identifiant de session est posté sous la forme d’un
cookie chez le client.
Les sessions II

Fonctions

session_start() : démarre une session


session_destroy() : détruit les données de session et ferme la
session

session_start() doit être présente sur toutes les pages qui utilisent
les variables de sessions et doit être déclarée avant tout envoie au
navigateur du client.

Une variable de session est manipulée de la façon suivante:

$_SESSION[’’nom_de_la_variable’’]

Exemple:
$_SESSION[’’etablissement’’]=’’ENSA’’;
Les fichiers I

Les fichiers en PHP sont très souvent utilisées pour stocker les
données. Les bases de données sont encore plus puissantes à ce
niveau, mais il est parfois ennuyeux de les utiliser pour accueillir
certaines formes de données. Exemple : un compteur de visite
Il existe une multitude de fonctions dédiées à l'utilisation des
fichiers.
La plus simple est la fonction file_get_contents(). Elle prend comme
paramètre le nom du fichier et elle affecte son contenu à une
variable type chaîne de caractère.

Exemple:
Le fichier test.txt contient le texte suivant: Salut, c’est un test…
Pour afficher le contenu de ce fichier sur une page web:
$str=file_get_contents(’’test.txt’’);
echo $str; // affiche: Salut, c’est un test…
Les fichiers II

La manipulation de fichier se fait grâce à un identifiant de fichier.

Quelques fonctions:
fopen($file ,$mode) : ouverture du fichier identifié par son nom $file
et dans un mode $mode particulier, retourne un identificateur de
fichier $fp ou FALSE si échec
fclose($fp) : ferme le fichier identifié par le $fp
fgets($fp, $length) : lit une ligne de $length caractères au maximum.
Si la longueur de la ligne est inférieur à $length, lit jusqu’à la fin
de la ligne.
fputs($fp, $str) : écrit la chaîne $str dans le fichier identifié par $fp
fgetc($fp) : lit un caractère
feof($fp) : teste la fin du fichier retourne TRUE ou FALSE
file_exists($file) : indique si le fichier $file existe dans le dossier
courant. Retourne TRUE ou FALSE. Le nom du fichier peut être
une arborescence de répertoire.
Les fichiers III

Quelques fonctions - suite - :


filesize($file) : retourne la taille du fichier $file en octet
filetype($file) : retourne le type du fichier $file
unlink($file) : détruit le fichier $file
copy($source, $dest) : copie le fichier $source vers $dest
readfile($file) : affiche le fichier $file
rename($old, $new) : renomme le fichier $old en $new
fseek($fp,$pos) : place le pointeur du fichier identifié par $fp à la
position $pos.

Modes d’ouverture de fichiers:


'r' lecture seule
'r+' lecture et écriture
'w' création et écriture seule
'w+‘ création et lecture/écriture
Les fichiers IV

Exemple typique d’affichage du contenu d’un fichier :

<?php
$file = ‘’fichier.txt’’ ;
if( $fd = fopen($file, ‘’r’’)) { // ouverture du fichier en lecture
while ( ! feof($fd) ) { // teste la fin de fichier
$str .= fgets($fd, 1024);
/* lecture jusqu’à fin de ligne où des 1024 premiers caractères */
}
fclose ($fd); // fermeture du fichier
echo $str; // affichage
} else {
die(‘’Ouverture du fichier <b>$file</b> impossible.’’);
}
?>
Les fichiers V

La fonction fopen permet d’ouvrir des fichiers dont le chemin est


relatif ou absolu. Elle permet aussi d’ouvrir des ressources avec
les protocols HTTP ou FTP. Elle renvoie FALSE si l’ouverture
échoue.

Exemples :
$fp = fopen(‘’../docs/rapport.txt’’, ‘’r’’);
$fp = fopen(‘’http://www.php.net/’’,’’r’’);
$fp = fopen(’’ftp://user:password@www.fstg-marrakech.ac.ma/’’, ‘’w’’);
Dates et heures I

Les fonctions de dates et heures sont très utilisées sur internent. En


PHP il existe plusieurs fonctions qui permettent de manipuler les
dates.

Quelques fonctions :
date(‘’$format’’) : retourne une chaîne de caractères contenant la
date et/ou l’heure locale au format spécifié
getdate() : retourne un tableau associatif contenant la date et
l’heure
checkdate($month, $day, $year) : vérifie la validité d’une date
mktime ($hour, $minute, $second, $month,$day, $year) : retourne le
timestamp UNIX correspondant aux arguments fournis c’est-à-dire
le nombre de secondes entre le début de l'époque UNIX (1er
Janvier 1970) et le temps spécifié
time() : retourne le timestamp UNIX de l’heure locale
Dates et heures II

Les formats pour date

d Jour du mois sur deux chiffres [01..31]


j Jour du mois sans les zéros initiaux
l Jour de la semaine textuel en version longue et en anglais
D Jour de la semaine textuel en trois lettres et en anglais
w Jour de la semaine numérique [0..6] (0: dimanche)
z Jour de l'année [0..365]
m Mois de l'année sur deux chiffres [01..12]
n Mois sans les zéros initiaux
F Mois textuel en version longue et en anglais
M Mois textuel en trois lettres
Y Année sur 4 chiffres
y Année sur 2 chiffres
h Heure au format 12h [01..12]
g Heure au format 12h sans les zéros initiaux
Dates et heures III

Les formats pour date - suite –

H Heure au format 24h [00..23]


G Heure au format 24h sans les zéros initiaux
i Minutes [00..59]
s Secondes [00.59]
a am ou pm
A AM ou PM
L Booléen pour savoir si l'année est bissextile (1) ou pas (0)
S Suffixe ordinal anglais d'un nombre (ex: nd pour 2)
t Nombre de jour dans le mois donné [28..31]
Z Décalage horaire en secondes [-43200..43200]
Dates et heures IV

Les clés du tableau associatif retourné par getdate

seconds : secondes
minutes : minutes
hours : heures
mday : jour du mois
wday : jour de la semaine, numérique
mon : mois de l'année, numérique
year : année numérique
yday : jour de l'année numérique
weekday : jour de la semaine, textuel complet en anglais
month : mois textuel complet en anglais
Les Instructions

79
Tests : if... then... else

Si une condition est vrai alors on exécute des instructions sinon (facultatif)
on en exécute d'autre.
On peut changer de condition avec un 'elseif'.

syntaxe :
if ( condition1 ) {
Action 1
} elseif ( condition2 ) {
Action 2
}
} else {
Action 3
}
80
Tests : if... then... else

exemple :

if ($a==$b) {
echo "A est égal à B";
} elseif ($a > $b) {
echo "A est supérieur à B";
} else {
echo "A est inférieur à B";
}

81
Tests : switch... case...
default
la condition est associée à la valeur d'une variable, de plus l'instruction 'break'.

Exemple :
switch ($a) {
case $b:
echo "A est égal à B";
break;
case >$b:
echo "A est supérieur à B";
break;
default:
echo "A est inférieur à B";
break;
}

82
Boucles

while ( condition ) {
Action;
}

do {
Action;
} while (condition);

for (expr1; expr2; expr3) {


Action;
}

83
Boucles
$i=1;
while ($i <= 10) {
echo "- $i -";
$i++;
}

$i=1;
do {
echo "- $i -";
$i++;
} while ($i <= 10)

for ($i = 1; $i <= 10; $i++) {


echo "- $i -";
}

84
Break;Continue
Break :Cette instruction permet de sortir de n'importe quelle boucle, à n'importe quel
moment.
Continue : Cette instruction permet de ne pas exécuter le code contenu dans la
boucle et de passer à l'itération suivante.

for ($i=1; $i<=10; $i++) {


if ($i<=5) { echo $i; }
else {
break;
}
echo "- ";
}
// cette boucle affichera : 1 - 2 - 3 - 4 - 5

85
Interaction avec l’usager

get, post
et
les formulaires

86
Bonnes pratiques

 Il faut absolument vérifier toute valeur reçue de


la part d’un usager (par exemple dans $_GET).
◼ La variable est-elle initialisée ?
◼ La variable est-elle du bon type ?
◼ La variable contient-elle une valeur raisonnable ?

87
Interaction avec
l’usager

Formulaires HTML

88
Formulaires HTML

 Le langage HTML permet de définir des


formulaires en se servant du conteneur
<form>.
◼ On peut ainsi créer des pages beaucoup plus
interactives qu’avec seulement des liens

89
Formulaires HTML (Suite)

 Le conteneur <form> accepte plusieurs arguments:


◼ action: l’URL du script ou du programme à déclencher
(en principe, sur le serveur)
◼ method: post ou get
 get inclut les paramètres dans l’URL, directement
visibles pour l’usager
 post inclut les paramètres dans le corps de la
requête HTTP

90
Formulaires HTML :
Exemple POST
exemple (fichier test.html) :
<HTML>
<FORM ACTION="test.php" METHOD=POST>
<INPUT TYPE=hidden NAME=« IGSI" VALUE="bonjour">
Nom : <INPUT TYPE=text NAME="nom">
<INPUT TYPE=submit VALUE="Envoyer">
</FORM>
</HTML>

91
Formulaires HTML :
Exemple GET
 Code HTML classique :
<form action="traitement.php" method="get">
<p>
Formation: <input type="text" name="Form" /> <br />
École: <input type="text" name="ecole" />
<input type="submit" value="OK" />
</p>
</form>

92
Formulaires HTML :
Exemple GET
 On récupère les données et on les affiche
(fichier traitement.php)

<?php
$formation = $_GET["Form"];
$ecole = $_GET["ecole"];
echo "Vous êtes de l'école $ecole.";
echo " <br /> ";
echo "Vous êtes en ".$formation.".";
?>
93
Autre utilité de $_GET

 Adresse :
http://serveur/page.php?a=bonjour&b=bye

 $_GET["a"] vaut "bonjour"


$_GET["b"] vaut "bye"

94
Transmission

 Chaque champ a un nom


 GET : les données sont transmises dans l’URL
test.php
 POST : transmission dans le protocole HTTP
(invisible sur l’URL)

95
Champs de formulaire :
<INPUT>
 Très général: saisie de texte, ou choix dans
des listes. L'attribut TYPE vaut:
◼ TEXT pour les chaînes de caractères
◼ HIDDEN pour les champs cachés
◼ CHECKBOX pour un choix multiple
◼ RADIOBOX pour un choix exclusif
◼ SUBMIT pour déclencher l'action
◼ FILE pour transmettre un fichier

96
Champs de formulaire :
<INPUT> (Suite)
<input type= "file"> Fichier

<textarea></textarea> Zone de texte

<select><option></select> Zone de liste

<input type= "checkbox"> Case à cocher

<input type= "radio"> Bouton d’option

<input type= "hidden"> Champ invisible

<input type= "password"> Mot de passe

<input type= "text"> Champ

97
Champs <SELECT>

 Permet de choisir une ou plusieurs


valeurs dans une liste
<SELECT NAME='realisateur' SIZE=3>
<OPTION VALUE=1>Alfred Hitchcock
<OPTION VALUE=2 SELECTED>Maurice
Pialat
<OPTION VALUE=3>Quentin Tarantino
</SELECT>

98
Champs <SELECT>:
MULTIPLE
 L'option MULTIPLE permet de sélectionner plusieurs valeurs

<HTML>
<form action=« test.php" method="post">
Nom : <input type="text" name="Master" VALUE="Master" <br />
Email : <input type="text" name="igsi"><br />
COURS : <br />
<select multiple name=« cours[]">
<option value=" BD ">BD</option>
<option value=" java ">java</option>
<option value=" php ">php</option>
</select><br />
<input type="submit" name="submit" value="me contacter!">
</form>
</HTML>

99
Champ <TEXTAREA>

 Pour entrer du texte libre:


<TEXTAREA NAME= ‘description’
COLS=30
ROWS=3>
texte libre de description
</TEXTAREA>
 L'attribut MAXLENGTH indique la longueur
maximale du texte.

100
Traitement des données en
PHP

 On récupère, sous forme de variable PHP, les


champs d'un formulaire
◼ Pour les valeurs scalaires -> une variable

◼ Pour les fichiers -> un nom de fichier

temporaire

101
Que se passe-t-il quand on
valide ?
 Le programme client transmet au programme
serveur les informations sous la forme:
$_POST["titre"]=t
$_POST["annee"]=a

 Et on peut maintenant utiliser ces données pour


fabriquer une page HTML
<?php if ($_POST["annee"]<1920) echo
“Desole, on a pas.”; ?>
102
Passage de valeurs
multiples

103
Passage de valeurs multiples
<H1>Passage de valeurs multiples</H1>
<FORM ACTION="ExPHP.php"
METHOD=POST">
Titre : <INPUT TYPE=TEXT SIZE=20 NAME="titre" >
<TABLE><TR><TH>Prénom</TH><TH>Nom</TH></TR>
<TR><TD><INPUT TYPE=TEXT SIZE=30 NAME="prenom[]">
<TD><INPUT TYPE=TEXT SIZE=30 NAME="nom[]">
<TR><TD><INPUT TYPE=TEXT SIZE=30 NAME="prenom[]">
<TD><INPUT TYPE=TEXT SIZE=30 NAME="nom[]">
<TR><TD><INPUT TYPE=TEXT SIZE=30 NAME="prenom[]">
<TD><INPUT TYPE=TEXT SIZE=30 NAME="nom[]">
</TABLE>

<H1>Votre choix</H1>
<INPUT TYPE=SUBMIT VALUE='Valider'>
<INPUT TYPE=RESET VALUE='Annuler'>
</FORM>

104
Que se passe-t-il quand on
valide ?
 Le programme client transmet au programme serveur les infos sous la forme:
titre=t&prenom[]=p1&nom[]=n1&prenom[]=p2&nom[]=n2&...
 Pour le script PHP, cela donne:

<?php
$titre = $_POST['titre'];
$prenom=$_POST['prenom'];
$nom=$_POST['nom'];

echo "Pour le film $titre j'ai reçu les acteurs suivants :<P>\n";

for ($i=0; $i <3; $i++)


echo "<B> $prenom[$i] $nom[$i]<B><BR>\n";

?>
◼ => on crée deux tableaux PHP !
105
Ce que fait le script

• Une boucle sur les tableaux permet de


récupérer les valeurs.
<?php
$titre = $_POST['titre'];
$prenom=$_POST['prenom'];
$nom=$_POST['nom'];

echo "Pour le film $titre j'ai reçu les acteurs


suivants :<P>\n";
$nbActeurs = count($prenom);
for ($i=0; $i < $nbActeurs; $i++)
echo "<B> $prenom[$i] $nom[$i]<B><BR>\n";
?>
• -> A utiliser aussi pour les champs SELECT
multiples. 106
Les Fonctions

107
Les Fonctions

 Comme dans tout langage structuré, en PHP, les fonctions


sont la base d’une programmation claire et efficace.
 Une fonction est une sorte de sous-programme isolé du reste
du code,
◼ Exécutable à tout moment, depuis n’importe quelle partie du code
principal ou n’importe quelle autre fonction, par simple appel.
◼ De plus, les avantages des fonctions sont :
⚫ La non répétition de la même séquence de code
⚫ De cet avantage découlent :
 Le gain de productivité.
 La meilleure lisibilité du code.
 La maintenance facilitée.

108
Fonction : Déclaration

❑ Déclaration :
❑ La syntaxe de déclaration s’appuie sur le mot clé function.
❑ Suivi du nom de la fonction, puis de parenthèses (obligatoires) destinées à
accueillir les éventuels paramètres à passer à la fonction.
exemple 1:
function bonjour( ) {
echo « Bonjour ! » ;
}
exemple 2:
function bonjour2( ) {
return « Bonjour !» ;
}

109
Déclaration, paramètres,
valeurs de retour

function Hello($qui, $texte = 'Salam') {


if(empty($qui)){
// $qui est vide, on retourne faux
return false;
}else{
echo "$texte $qui"; // on affiche le texte
return true; // fonction exécutée avec succès
}
}

110
Ainsi cette fonction peut être
appelée de deux façons différentes

<?php
// Passage des deux paramètres
hello("cher ami", "Bienvenue"); // affiche "Bienvenue
cher ami"
// Utilisation de la valeur par défaut du deuxième
paramètre
hello("cher ami"); // affiche « Salam cher ami"
?>
Travailler sur des variables

Variables globales ou
variables locales.
Global

 Une variable précédée du mot clé global sera


visible dans l'ensemble du code, c'est-à-dire
que sa portée ne sera pas limitée à la fonction
seulement. Ainsi, toutes les fonctions
pourront utiliser et modifier cette même
variable
 Le niveau static permet de définir une
variable locale à la fonction, qui persiste
durant tout le temps d'exécution du script.
 Par défaut, la variable possède le niveau
local, c'est-à-dire que la variable ne sera
modifié qu'à l'intérieur de la fonction et
retrouvera la valeur qu'elle avait juste avant
l'appel de fonction à la sortie de celle-ci.
<?php
$chaine = "Nombre de camions : ";
function ajoute_camion($mode='')
{
global $chaine;
static $nb=0;
$nb++; // on incrémente le nombre de camions
if($mode == "affiche"){
echo $chaine.$nb; // on affiche le nombre de camions
}
}
ajoute_camion(); // nb == 1
ajoute_camion(); // nb == 2
ajoute_camion(); // nb == 3
ajoute_camion("affiche"); // affiche Nombre de camions : 4
?>
Déclaration, paramètres,
valeurs de retour

 Le passage des paramètres


◼ le passage par valeur.
◼ le passage par référence

function formation (&$phrase) {


$phrase= "Formation Irisi" ;
}
$chaine = "Phrase qui va disparaître" ;
formation ($chaine) ;
echo $chaine
116
Les Fichiers

117
Retourner plusieurs variables
 Lorsque vous souhaitez qu'une fonction retourne plusieurs valeurs, le plus
simple est d'utiliser un
 tableau.
<?php
function nom_fonction()
{
.....
return array( $variable1, $variable2, $variable3 );
// on retourne les valeurs voulues dans un tableau
}
$retour = nom_fonction();
echo "$retour[0] - $retour[1] - $retour[2]";
?>
La récursivité
 Les fonctions récursives sont des fonctions qui s'appellent elles-mêmes. Ce type de
fonction se révèle
 indispensable pour parcourir une arborescence par exemple.
 Voici un exemple.
<?php
function fonction_recursive($n=0)
{
$n++;
echo "$n <br>";
if($n < 10){ // si n est inférieur à 10 on continue
fonction_recursive($n);
}
}
fonction_recursive(); // affiche les nb de 1 à 10
?>
Fichiers (I)

 La manipulation de fichier se fait grâce à un identifiant


de fichier.
 Quelques fonctions:
◼ fopen($file [,$mode]) : ouverture du fichier identifié par son
nom $file et dans un mode $mode particulier, retourne un
identificateur $fp de fichier ou FALSE si échec
◼ fclose($fp) : ferme le fichier identifié par le $fp
◼ fgets($fp, $length) : lit une ligne de $length caractères au
maximum
◼ fputs($fp, $str) : écrit la chaîne $str dans le fichier identifié
par $fp
◼ fgetc($fp) : lit un caractère
120
Fichiers (IV)

La fonction fopen permet d’ouvrir des fichiers dont le chemin est


relatif ou absolu. Elle permet aussi d’ouvrir des ressources avec les
protocoles HTTP ou FTP. Elle renvoie FALSE si l’ouverture échoue.

Exemples :
$fp = fopen(‘’../docs/faq.txt’’, ‘’r’’);
$fp = fopen(‘’http://www.php.net/’’,’’r’’);
$fp = fopen(’’ftp://user:password@fstg.ma/’’, ‘’w’’);

Les modes d’ouverture : 'r' (lecture seule), 'r+' (lecture et écriture), 'w'
(création et écriture seule), ‘w+’ (création et lecture/écriture),
'a‘(création et écriture seule ; place le pointeur de fichier à la fin du
fichier), 'a+' (création et lecture/écriture ; place le pointeur de fichier à
la fin du fichier)
121
Fichiers (II)

 Quelques fonctions (Suite):


◼ feof($fp) : teste la fin du fichier
◼ file_exists($file) : indique si le fichier $file existe
◼ filesize($file) : retourne la taille du fichier $file
◼ filetype($file) : retourne le type du fichier $file
◼ unlink($file) : détruit le fichier $file
◼ copy($source, $dest) : copie le fichier $source vers $dest
◼ readfile($file) : affiche le fichier $file
◼ rename($old, $new) : renomme le fichier $old en $new

122
PHP - La gestion des fichiers
textes en php

 PHP Fichier - Comment ouvrir un fichier ?


 La fonction fopen est utilisé pour ouvrir un fichier.
◼ Le premier paramètre de la fonction est le nom du fichier
◼ et le second paramètre est le mode dans lequel vous
pouvez ouvrir votre fichier.


 <html>
<body>
<?php
$f=fopen("exemple.txt","r");
?>
</body>
</html>
 Si la fonction fopen() echoue lors de l'ouverture du fichier, celle ci
retourne 0


Exemple :

L'exemple ci dessous génère un message si la fonction fopen() est incapable
d'ouvrir le fichier spécifié.

<html>
<body>
<?php
if (!($f=fopen("exemple.txt","r")))
exit("Unable to open file!");
?>
</body>
</html>
PHP Fichier - Fermer un fichier

 La fonction fclose() est utilisé pour fermer un


fichier.

Syntaxe :
<?php
fclose($f);
?>
PHP Fichier - Écrire dans un
fichier.

 L'écriture dans un fichier texte se fait avec la


fonction fwrite().

 Pour faire des retour à la ligne vous devez


utiliser : "\r\n"
 <?php
$f = 'exemple.txt';
$text = "ma chaine de caractères";
$handle = fopen($f,"w");

// regarde si le fichier est accessible en écriture


if (is_writable($f)) {
// Ecriture
if (fwrite($handle, $text) == FALSE) {
echo 'Impossible d\'écrire dans le fichier '.$f.'';
exit;
}
echo 'Ecriture terminé';
fclose($handle);
}
else {
echo 'Impossible d\'écrire dans le fichier '.$f.'';
}
?>
PHP Fichier –
Compter le nombre de lignes.
 <?php
$f = 'exemple.txt';
if(file_exists($f)) {
$tab = file($f); // place le fichier dans un tableau
$nb = count($tab); // compte le nombre de ligne
echo $nb; // Affiche le résultat
}
?>
PHP Fichier - Trouver la fin d'un
fichier
 La fonction feof() est utilisé pour déterminer si le
pointeur est placé à la fin du fichier ou lister un
fichier jusqu'au dernier caractère.


<?php
if (feof($f))
echo 'Fin du fichier';
?>
PHP Fichier - Comment lire
caractère par caractère ?

 <?php
if (!($f=fopen("exemple.txt","r")))
exit("Impossible d'ouvrir le fichier.");
while (!feof($f))
{
$texte=fgetc($f);
echo $texte;
}
fclose($f);
?>
La Messagerie

132
Mail (I)

La fonction mail envoie un message électronique.

Syntaxe :
mail($recipient, $subject, $message[,
$headers, $params]);

Exemple :
$message = "Comment Ecrire du code PhP"
mail("vous@fstg.ma", ‘’Aide sur PHP’’, $message);

133
Mail (II)

Exemple plus complet :


<?php
$recipient = " abdali <abdali@fstg.ma>, ";
$recipient .= " abdali <abdali@yahoo.fr>";
$subject = "Notre rendez-vous";
$message = "Je vous propose le samedi 15 juin \n";
$message .= "--\r\n"; // Délimiteur de signature
$message .= " Fin de message";
$headers = "From: Directeur <directeur@fstg.ma>\n";
$headers .= "Cc: vdirecteur@fstg.ma\n";
mail($recipient, $subject, $message, $headers);
?>

134
Accès aux dossiers

135
Accès aux dossiers (I)

 Il est possible de parcourir les répertoires grâce à ces


quelques fonctions :
◼ chdir($str) : Change le dossier courant en $str. Retourne TRUE si succès,
sinon FALSE.
◼ getcwd() : Retourne le nom du dossier courant (en format chaîne de
caractères).
◼ opendir($str) : Ouvre le dossier $str, et récupère un pointeur $d dessus si
succès, FALSE sinon
◼ closedir($d) : Ferme le pointeur de dossier $d.
◼ readdir($d) : Lit une entrée du dossier identifié par $d. C’est-à-dire
retourne un nom de fichier de la liste des fichiers du dossier pointé. Les
fichiers ne sont pas triés. Ou bien retourne FALSE s’il n’y a plus de fichier.
◼ rewinddir($d) : Retourne à la première entrée du dossier identifié par $d.

136
Accès aux dossiers (II)

Exemple 1:
<?php
if ($dir = @opendir(‘.’)) { // ouverture du dossier
while($file = readdir($dir)) { // lecture d’une entrée
echo "$file<br />"; // affichage du nom de fichier
}
closedir($dir); // fermeture du dossier
}
?>
$dir est un pointeur vers la ressource dossier
$file est une chaîne de caractères qui prend pour valeur chacun
des noms de fichiers retournés par readdir()

137
Accès aux dossiers (III)

Il existe un autre moyen d’accéder aux dossiers : l’utilisation de la


pseudo classe dir.

En voici les attributs :


handle : valeur du pointeur
path : nom du dossier

En voici les méthodes :


read() : équivalent à readdir($d)
close() : équivalent à closedir($d)

Constructeur :
dir($str) : retourne un objet dir et ouvre le dossier $str

138
Accès aux dossiers (IV)

Exemple 2 :
<?php
$d = dir(‘.’); // ouverture du dossier courant
echo ‘’Pointeur: ‘’.$d->handle.’’<br />’’;
echo ‘’Chemin: ‘’.$d->path.’’<br />’’;
while($entree = $d->read()) { // lecture d’une entrée
echo $entree.’’<br />’’;
}
$d->close(); // fermeture du dossier
?>
Cet exemple est équivalent au précédent. Ils listent tous
les deux les fichiers et sous répertoires du dossier
courant.

139
Dates et heures

140
Dates et heures (I)

Les fonctions de dates et heures sont incontournables sur Internet et sont indispensables pour
la conversion en français des dates fournies par la base de données MySQL qui les code au
format anglophone (YYYY-DD-MM hh:mm:ss).

Quelques fonctions :
✓date(‘’$format’’) : retourne une chaîne de caractères contenant la date et/ou l’heure
locale au format spécifié
✓getdate() : retourne un tableau associatif contenant la date et l’heure
✓checkdate($month, $day, $year) : vérifie la validité d’une date
✓mktime ($hour, $minute, $second, $month,$day, $year) :
retourne le timestamp UNIX correspondant aux arguments fournis
c’est-à-dire le nombre de secondes entre le début de l'époque UNIX
(1er Janvier 1970) et le temps spécifié
✓time() : retourne le timestamp UNIX de l’heure locale

141
Dates et heures (III)
Les formats pour date :
d Jour du mois sur deux chiffres [01..31] j Jour du mois sans les zéros initiaux
l Jour de la semaine textuel en version longue et en anglais
D Jour de la semaine textuel en trois lettres et en anglais
w Jour de la semaine numérique [0..6] (0: dimanche)
z Jour de l'année [0..365]
m Mois de l'année sur deux chiffres [01..12] n Mois sans les zéros initiaux
F Mois textuel en version longue et en anglais
M Mois textuel en trois lettres
Y Année sur 4 chiffres y Année sur 2 chiffres
h Heure au format 12h [01..12] g Heure au format 12h sans les zéros initiaux
H Heure au format 24h [00..23] G Heure au format 24h sans les zéros initiaux
i Minutes [00..59] s Secondes [00.59]
a am ou pm A AM ou PM
L Booléen pour savoir si l'année est bissextile (1) ou pas (0)
S Suffixe ordinal anglais d'un nombre (ex: nd pour 2)
t Nombre de jour dans le mois donné [28..31]
U Secondes depuis une époque Z Décalage horaire en secondes [-43200..43200] 142
Dates et heures (IV)

 Les clés du tableau associatif retourné par


getdate :
◼ seconds : secondes
◼ minutes : minutes
◼ hours : heures
◼ mday : jour du mois
◼ wday : jour de la semaine, numérique
◼ mon : mois de l'année, numérique
◼ year : année, numérique
◼ yday : jour de l'année, numérique
◼ weekday : jour de la semaine, textuel complet en anglais
◼ month : mois, textuel complet en anglais

143
Dates et heures (II)

Exemple 1 :
echo date(''Y-m-d H:i:s'');
/* affiche la date au format MySQL :‘ 2002-09-27 20:30:29’ */
Exemple 2 :
if(checkdate(15-04-2005))
echo ‘’c’est le grand oral!!! ’’;

Exemple 3 :
$ aujourdhui = getdate();
$mois =$aujourdhui['mon'];
$ jour =$aujourdhui['mday'];
$annee =$aujourdhui['year'];
echo ''$jour/$mois/$annee''; // affiche ‘29/4/2006’
144

Vous aimerez peut-être aussi