PHP4 et MySQL - PowerPoint PPT Presentation

1 / 154
About This Presentation
Title:

PHP4 et MySQL

Description:

PHP4 et MySQL – PowerPoint PPT presentation

Number of Views:147
Avg rating:3.0/5.0
Slides: 155
Provided by: xxx3246
Category:

less

Transcript and Presenter's Notes

Title: PHP4 et MySQL


1
PHP4 et MySQL
  • Hugo Etiévant

Dernière mise à jour 12 octobre 2002
2
Sommaire
  • PARTIE 1 PHP
  • La programmation en PHP. Des centaines de
    fonctions détaillées et des exemples expliqués en
    détail.
  • PARTIE 2 MySQL
  • La création et linterrogation dune base de
    données.
  • PARTIE 3 Exemple concret
  • Létude dune application web réelle.
  • PARTIE 4 Méthodologie
  • Quelques trucs pour choisir au mieux les
    solutions les plus adaptés pour résoudre vos
    problèmes.

3
Liens
  • PHP
  • http//www.php.net
  • http//www.phpinfo.net
  • http//www.phpfrance.com
  • http//www.developpez.com/php/
  • MySQL
  • http//www.mysql.com/
  • http//dev.nexen.net/docs/mysql/
  • HTML
  • http//cyberzoide.developpez.com/html/
  • Exemple concret
  • http//www.miag-rezo.net
  • PHP Hypertext Preprocessor (encore un acronyme
    récursif !)

4
Modèle
Serveur
requête
Client
internet
réponse
appel de la page
Base de données MySQL
extraction de données
exécution
Document Html
Script PHP
5
Documentation en ligne
  • Pour obtenir en ligne toute la documentation
    officielle (en français) sur une commande, tapez
    lURL suivante dans la barre dadresse de votre
    navigateur Internet
  • http//fr.php.net/
  • Et rajouter en fin dURL le nom de la commande.
  • Exemple
  • http//fr.php.net/echo

6
Partie 1 PHP
7
La petite histoire du PHP
  • Il a été créé en 1994 par Rasmus Lerdorf pour les
    besoins des pages web personnelles (livre dor,
    compteurs, etc.). A lépoque, PHP signifiait
    Personnal Home Page.
  • Cest un langage incrusté au HTML et interprété
    (PHP3) ou compilé (PHP4) côté serveur. Il dérive
    du C et du Perl dont il reprend la syntaxe. Il
    est extensible grâce à de nombreux modules et son
    code source est ouvert. Comme il supporte tous
    les standards du web et quil est gratuit, il
    sest rapidement répandu sur la toile.
  • En 1997, PHP devient un projet collectif et son
    interpréteur est réécrit par Zeev Suraski et Andi
    Gutmans pour donner la version 3 qui sappelle
    désormais PHP Hypertext Preprocessor (acronyme
    récursif à lexemple du système Open Source Linux
    Is Not UniX).
  • Il existe par ailleurs des applications web
    prêtes à lemploi (PHPNuke, PHP SPIP, PHPSlash)
    permettant de monter facilement et gratuitement
    son portail. En juillet 2000 plus de 300.000
    sites tournaient déjà sous PHP !

8
Intégration dun script dans une page
  • Les pages web sont au format html. Les pages web
    dynamiques générées avec PHP4 sont au format php.
    Le code source php est directement insérer dans
    le fichier html grâce au conteneur de la norme
    XML
  • lt?php ?gt
  • Exemple
  • lthtmlgt
  • ltbodygt
  • lt?php
  • echo Bonjour
  • ?gt
  • lt/bodygt
  • lt/htmlgt
  • Autres syntaxes dintégration
  • lt? ?gt
  • ltscript languagephpgt lt/scriptgt
  • lt gt

9
Exemple de script
Code source (côté client) de la page essai.ph3
résultant du script
10
Commentaires
  • Un script php se commente comme en C
  • Exemple
  • lt?php
  • // commentaire de fin de ligne
  • / commentaire
  • sur plusieurs
  • lignes /
  • commentaire de fin de ligne comme en Shell
  • ?gt
  • Tout ce qui se trouve dans un commentaire est
    ignoré. Il est conseillé de commenter largement
    ses scripts.

11
Variables, types et opérateurs (I)
  • Le typage des variables est implicite en php. Il
    nest 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 toto.
  • 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(1) (comme en C).
  • Exemple
  • str 12 // str vaut la chaîne 12
  • nbr (int)str // nbr vaut le nombre 12
  • (1) Le cast est une conversion de type.
    Laction de caster consiste en convertir une
    variable dun type à un autre.

12
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 dune autre variable.
  • Syntaxe var valeur
  • Exemple
  • toto foobar
  • toto 2002
  • echo foobar // la variable foobar vaut 2002

13
Variables, types et opérateurs (III)
  • La portée dune variable est limitée au bloc dans
    lequel elle a été crée. Une variable locale à une
    fonction nest pas connue dans le reste du
    programme. Tout comme une variable du programme
    nest pas connue dans une fonction. Une variable
    créée dans un bloc nest pas connue dans les
    autres blocs, mêmes supérieurs.
  • 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 dassignement
  • (affectation), (xy équivalent à
    xxy), /, , -,
  • Opérateurs logiques
  • and, (et), or, (ou), xor (ou exclusif), !
    (non)
  • Opérateurs de comparaison
  • (égalité), lt (inférieur strict), lt (inférieur
    large), gt, gt, ! (différence)

14
Variables, types et opérateurs (IV)
  • Signalons un opérateur très spécial qui équivaut
    à une structure conditionnelle complexe if then
    else à la différence quil renvoie un résultat de
    valeur pouvant ne pas être un booléen
    lopérateur ternaire.
  • Syntaxe
  • (condition)?(expression1)(expression2)
  • Si la condition est vrai alors évalue et renvoie
    lexpression1 sinon évalue et renvoie
    lexpression2.
  • Exemple
  • nbr (totogt10)?(toto)(toto10)
  • Dans cet exemple, la variable nbr prend toto
    pour valeur si toto est strictement supérieur à
    10, sinon vaut le reste de la division entière de
    toto par 10.

15
Constantes
  • Lutilisateur 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 didentificateur et ne sont pas
    modifiables.
  • define(var,valeur) définit la constante var
    (sans ) de valeur valeur
  • Exemple 1
  • define(author,Foobar)
  • echo author // affiche Foobar
  • Exemple 2
  • define(MY_YEAR,1980)
  • echo MY_YEAR // affiche 1980
  • Contrairement aux variables, les identificateurs
    de constantes (et aussi ceux de fonction) ne sont
    pas sensibles à la casse.

16
Références
  • On peut à la manière des pointeurs en C faire
    référence à une variable grâce à lopérateur
    (ET commercial).
  • Exemple 1
  • toto 100 // la variable toto est
    initialisée à la valeur 100
  • foobar toto // la variable foobar fait
    référence à toto
  • toto // on change la valeur de toto
  • echo foobar // qui est répercutée sur
    foobar qui vaut alors 101
  • Exemple 2
  • function change(var)
  • var // la fonction incrémente en local
    largument
  • nbr 1 // la variable nbr est initialisée à
    1
  • change(nbr) // passage de la variable par
    référence
  • echo nbr // sa valeur a donc été modifiée

17
Mathématiques (I)
  • Il existe une miriade 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 largument de valeur
    maximum
  • pi() retourne la valeur de Pi
  • Et aussi cos, sin, tan, exp, log, min, pi,
    sqrt
  • Quelques constantes
  • M_PI valeur de pi (3.14159265358979323846)
  • M_E valeur de e (2.7182818284590452354)

18
Mathématiques (II)
  • Nombres aléatoires
  • rand(x,y) valeur entière aléatoire entre 0
    et RAND_MAX si x et y ne sont pas définis, entre
    x et RAND_MAX si seul x est défini, entre x et y
    si ces deux paramètres sont définis.
  • srand() initialisation du générateur aléatoire
  • getrandmax() retourne la valeur du plus grand
    entier pouvant être généré
  • L'algorithme utilisé par la fonction rand() -
    issu de vieilles bibliothèques libcs - est
    particulièrement lent et possède un comportement
    pouvant se révéler prévisible. La fonction
    mt_rand() équivalente à rand() est plus rapide et
    plus sûre puisque l'algorithme utilisé se base
    sur la cryptographie.
  • En cas dutilisation de la fonction mt_rand(), ne
    pas oublier dutiliser les fonctions de la même
    famille mt_rand(x,y), mt_srand() et
    mt_getrandmax().

19
Mathématiques (III)
  • Formatage dun nombre
  • number_format (nbr,dec,a,b) retourne
    une chaîne de caractères représentant le nombre
    nbr avec dec décimales après formatage. La
    chaîne a représente le symbole faisant office de
    virgule et b le séparateur de milliers.
  • Par défaut, le formatage est anglophone a
    . et b ,.
  • Très utile pour représenter les nombres élevés au
    format francophone.
  • Exemples
  • number_format (1000000.3333) // affiche
    1,000,000
  • number_format (1000000.3333,2) // affiche
    1,000,000.33
  • number_format (1000000.3333,2,",",".") //
    affiche 1.000.000,33

20
Expressions
  • Presque tout en php est une expression. On les
    construit de façon très souple. De façon à
    réduire la taille du code (comme en C).
    Linconvénient est lillisibilité du code ainsi
    écrit sauf à le commenter suffisamment. Il faut
    donc les construire avec parcimonie et ne pas
    hésiter à les fractionner.
  • Exemple
  • echo change( nbr (totogt0)?(0)(--toto) )
  • Attention à utiliser les parenthèses afin de
    palier aux priorités des opérateurs.

21
Booléens
  • Les variables booléennes prennent pour valeurs
    TRUE (vrai) et FALSE (faux). Une valeur entière
    nulle est automatiquement considérée comme FALSE.
    Tout comme une chaîne de caractères vide . Ou
    encore comme les chaînes 0 et 0 castées en
    lentier 0 lui même casté en FALSE.
  • Exemple
  • if(0) echo 1 // faux
  • if('''') echo 2 // faux
  • if(''0'') echo 3 // faux
  • if(''00'') echo 4
  • if('0') echo 5 // faux
  • if('00') echo 6
  • if('' '') echo 7
  • Cet exemple affiche 467. Donc lespace ou la
    chaîne 00 ne sont pas considérés castés en
    FALSE.

22
Chaînes de caractères (I)
  • Une variable chaîne de caractères nest pas
    limitée en nombre de caractères. Elle est
    toujours délimitée par des simples quotes ou des
    doubles quotes.
  • Exemples
  • nom Etiévant
  • prenom Hugo
  • Les doubles quotes permettent lévaluation des
    variables et caractères spéciaux contenus dans la
    chaîne (comme en C ou en Shell) alors que les
    simples ne le permettent pas.
  • Exemples
  • echo Nom nom // affiche Nom Etiévant
  • echo Nom nom // affiche Nom nom
  • Quelques caractères spéciaux \n (nouvelle
    ligne), \r (retour à la ligne), \t (tabulation
    horizontale), \\ (antislash), \ (caractère
    dollars), \  (double quote).
  • Exemple echo Hello Word !\n

23
Chaînes de caractères (II)
  • Opérateur de concaténation de chaînes . (point)
  • Exemple 1
  • foo Hello
  • bar Word
  • echo foo.bar
  • Exemple 2
  • name Henry
  • whoiam name.IV
  • Exemple 3
  • out Patati
  • out . et patata

24
Chaînes de caractères (III)
  • Affichage dune chaîne avec echo
  • Exemples
  • echo Hello Word.
  • echo Hello name\n
  • echo Nom , name
  • echo(Bonjour)
  • Quelques fonctions
  • strlen(str) retourne le nombre de caractères
    dune 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 de
    str de taille j et débutant à la position i
  • 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 char

25
Chaînes de caractères (IV)
  • On peut délimiter les chaînes de caractères avec
    la syntaxe Here-doc.
  • Exemple
  • essai ltltltEOD
  • 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 lt. Sa deuxième
    apparition doit se faire en premier sur une
    nouvelle ligne. Cette valeur chaîne se comporte
    comme si elle était délimitée par des doubles
    quotes dans le sens où les variables seront
    évaluées. Par contre il est inutile déchapper
    les guillemets, cest-à-dire que la
    déspécialisation des doubles quotes devient
    inutile.

26
Affichage
  • Les fonctions daffichage
  • echo() écriture dans le navigateur
  • print() écriture dans le navigateur
  • printf(format, arg1, arg2) écriture
    formatée comme en C, i.e. la chaîne de caractère
    est constante et contient le format daffichage
    des variables passées en argument
  • Exemples
  • echo Bonjour name
  • print(Bonjour name)
  • printf(Bonjour s, name)

27
Tableaux (I)
  • Une variable tableau est de type array. Un
    tableau accepte des éléments de tout type. Les
    éléments dun tableau peuvent être de types
    différents et sont séparés dune virgule.
  • Un tableau peut être initialisé avec la syntaxe
    array.
  • Exemple
  • tab_colors array(red, yellow, blue,
    white)
  • tab array(foobar, 2002, 20.5, name)
  • Mais il peut aussi être initialisé au fur et à
    mesure.
  • Exemples
  • prenoms Clément
    villes0 Paris
  • prenoms Justin
    villes1 Londres
  • prenoms Tanguy
    villes2 Lisbonne
  • Lappel dun élément du tableau se fait à partir
    de son indice (dont lorigine est zéro comme en
    C).
  • Exemple echo tab10 // pour accéder
    au 11ème élément

28
Tableaux (II)
  • Parcours dun tableau.
  • tab array(Hugo, Jean, Mario)
  • Exemple 1
  • i0
  • while(i lt count(tab)) // count()
    retourne le nombre déléments
  • echo tabi.\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.

29
Tableaux (III)
  • Quelques fonctions
  • count(tab), sizeof retournent le nombre
    déléments du tableau
  • in_array(var,tab) dit 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
    intervalle de valeurs
  • shuffle(tab) mélange les éléments dun tableau
  • sort(tab) trie alphanumérique les éléments du
    tableau
  • rsort(tab) trie alphanumérique inverse les
    éléments du tableau
  • implode(str,tab), join retournent une chaîne
    de caractères contenant les éléments du tableau
    tab joints par la chaîne de jointure str
  • explode(delim,str) retourne un tableau dont
    les éléments résultent du hachage de la chaîne
    str par le délimiteur delim
  • array_merge(tab1,tab2,tab3) concatène les
    tableaux passés en arguments
  • array_rand(tab) retourne un élément du tableau
    au hasard

30
Tableaux (IV)
  • Il est possible deffectuer des opérations
    complexes sur les tableaux en créant par exemple
    sa propre fonction de comparaison des éléments et
    en la passant en paramètre à une fonction de tri
    de php.
  • usort(tab, fonction)
  • Trie les éléments grâce à la fonction fonction
    définie par l'utilisateur qui doit prendre 2
    arguments et retourner un entier, qui sera
    inférieur, égal ou supérieur à zéro suivant que
    le premier argument est considéré comme plus
    petit, égal ou plus grand que le second argument.
    Si les deux arguments sont égaux, leur ordre est
    indéfini.
  • Attention, les variables tableaux ne sont pas
    évaluées lorsquelles sont au milieu dune chaîne
    ce caractère délimitée par des doubles quottes.
  • Exemple
  • echo tab3 // syntaxe invalide
  • echo tab3 // syntaxe valide

31
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.
  • Linitialisation dun tableau associatif est
    similaire à celle dun tableau normal.
  • Exemple 1
  • personne array(Nom gt César,
    Prénom gt Jules)
  • Exemple 2
  • personneNom César
  • personnePrénom Jules
  • Ici à la clé Nom est associée la valeur
    César.

32
Tableaux associatifs (II)
  • Parcours dun tableau associatif.
  • personne array(Nom gt César,
    Prénom gt Jules)
  • 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 gt elem)
  • echo key elem
  • Ici on accède simultanément aux clés et aux
    éléments.

33
Tableaux associatifs (III)
  • Quelques fonctions
  • array_count_values(tab)  retourne un tableau
    contenant les valeurs du tableau tab comme clés
    et leurs fréquence comme valeur (utile pour
    évaluer les redondances)
  • 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 dun tableau peut être un autre
    tableau.
  • Les tableaux associatifs permettent de préserver
    une structure de données.

34
Tableaux associatifs (IV)
  • Quelques fonctions alternatives pour le parcours
    de tableaux (normaux ou associatifs)
  • 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
  • colors array(red, green, blue)
  • nbr count(colors)
  • reset(colors)
  • for(i1 iltnbr i)
  • echo current(colors).ltbr /gt
  • next(colors)

35
Fonctions (I)
  • Comme tout langage de programmation, php permet
    lécriture de fonctions.
  • Les fonctions peuvent prendre des arguments dont
    il nest pas besoin de spécifier le type. Elles
    peuvent de façon optionnelle retourner une
    valeur.
  • Lappel à une fonction peut ne pas respecter son
    prototypage (nombre de paramètres). Les
    identificateurs de fonctions sont insensibles à
    la casse.
  • Exemple
  • function mafonction(toto)
  • toto 15
  • echo Salut !
  • return (toto10)
  • nbr MaFonction(15.1)
  • / retourne 15.1151040.1, les majuscules nont
    pas dimportance /

36
Fonctions (II)
  • On peut modifier la portée des variables locales
    à une fonction.
  • global permet de travailler sur une variable de
    portée globale au programme. Le tableau
    associatif GLOBALS permet daccéder aux
    variables globales du script (GLOBALSvar
    accède à la variable var).
  • Exemple
  • function change()
  • global var // définit var comme globale
  • GLOBALStoto // incrémente la variable
    globale toto
  • var // cela sera répercuté dans
    le reste du programme
  • static permet de conserver la valeur dune
    variable locale à une fonction.
  • Exemple
  • function change()
  • static var // définit var comme statique
  • var // sa valeur sera conservée
    jusquau prochain appel

37
Fonctions (III)
  • On peut donner une valeur par défaut aux
    arguments lors de la déclaration de la fonction.
    Ainsi, si un argument est  oublié  lors de
    lappel de la fonction, cette dernière lui
    donnera automatiquement une valeur par défaut
    décidée à lavance par le programmeur.
  • Exemple
  • function Set_Color(colorblack)
  • global car
  • carcolor color
  • Forcer le passage de paramètre par référence
    (équivalent à user de global)
  • Exemple
  • function change(var) // force le passage
    systématique par référence
  • var 100 // incrémentation de 100
  • toto 12 // toto vaut 12
  • change(toto) // passage par valeur mais la
    fonction la prend en référence
  • echo toto // toto vaut 112

38
Fonctions (IV)
  • Les paramètres sont passés par copie et les
    résultats sont retournés par copie (sauf à forcer
    la référence). 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 daucun
    paramètre
  • echo Bonjour
  • function GetColor() // retour dune variable
    de type chaîne
  • return black

39
Fonctions (V)
  • Une fonction peut être définie après son appel
    (en PHP4 du fait de la compilation avant
    exécution contrairement au PHP3 qui est
    interprété).
  • Exemple
  • function foo() // définition de la fonction
    foo
  • echo Foo
  • foo() // appel de la fonction foo définie plus
    haut
  • bar() // appel de la fonction bar pas encore
    définie
  • function bar() // définition de la fonction
    bar
  • echo bar!ltbr /gt
  • Cet exemple affichera Foobar!.

40
Fonctions (VI)
  • Grâce à une petite astuce, il est possible de
    faire retourner plusieurs valeurs dune fonction.
    En retournant un tableau ayant pour éléments les
    variables à retourner. Dans lappel 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 dun tableau
  • r 12
  • list(a, b, c) trigo(r) / affectation aux
    variables a,b et c des éléments du tableau
    retourné par la fonction trigo /
  • echo sin(r)a, cos(r)b, tan(r)c
    // affichage des variables
  • Cet exemple affichera ceci
  • sin(12)-0,5365729180, cos(12)0,8438539587,
    tan(12)-0,6358599286

41
Fonctions dynamiques (I)
  • Il est possible de créer dynamiquement des
    fonctions. Pour les déclarer, on affecte à une
    variable chaîne de caractères le nom de de la
    fonction à dupliquer. Puis on passe en argument à
    cette variable les paramètres normaux de la
    fonction de départ.
  • Exemple
  • function divers(toto)
  • echo toto
  • mafonction divers
  • mafonction(bonjour !) // affiche
    bonjour ! par appel de divers()

42
Fonctions dynamiques (II)
  • Quelques fonctions permettant de travailler sur
    des fonctions utilisateur call_user_func_array,
    call_user_func, create_function, func_get_arg,
    func_get_args, func_num_args, function_exists,
    get_defined_functions, register_shutdown_function.
  • call_user_func_array(str , tab) Appelle une
    fonction utilisateur str avec les paramètres
    rassemblés dans un tableau tab.
  • Exemple
  • function essai(user, pass) // fonction
    à appeler
  • echo USER user PASSWORD pass
  • params array(hugo,0478) //
    création du tableau de paramètres
  • call_user_func_array(essai, params) //
    appel de la fonction
  • Le nom de la fonction à appeler doit être dans
    une chaîne de caractères.

43
Fonctions dynamiques (III)
  • call_user_func(str , param1, param2, )
    Appelle une fonction utilisateur éventuellement
    avec des paramètres.
  • Exemple
  • function essai(user, pass)
  • echo USER user PASSWORD pass
  • call_user_func(essai, hugo,0478)
  • Similaire à call_user_func_array à la différence
    quici les arguments à envoyer à la fonction à
    appeler ne sont pas dans un tableau mais envoyés
    directement en paramètre à call_user_func.

44
Fonctions dynamiques (IV)
  • create_function(params,code) Crée une
    fonction anonyme (style lambda). Prend en
    argument la liste params des arguments de la
    fonction à créer ainsi que le code code de la
    fonction sous la forme de chaînes de caractères.
    Il est conseillé dutiliser les simples quotes
    afin de protéger les noms de variables var, ou
    alors déchapper ces noms de variables \var. Le
    nom de la fonction créée sera de la forme
    lambda_x où x est lordre de création de la
    fonction.
  • Exemple
  • newfunc create_function(a,b,return
    \a\b)
  • echo Nouvelle fonction anonyme newfunc ltbr
    /gt
  • echo newfunc(5,12).ltbr /gt
  • On fabrique ici une fonction qui prend en
    argument 2 paramètres et renvoie leur somme. On
    lappelle avec les nombres 5 et 12. On va donc
    afficher le nombre 17.
  • Cet exemple est équivalent à function
    lambda_1(a,b) return ab

45
Fonctions dynamiques (V)
  • func_num_args() Retourne le nombre d'arguments
    passés à la fonction en cours.
  • func_get_arg(nbr) Retourne un élément de la
    liste des arguments envoyés à une fonction. Elle
    ne doit être utilisée quau sein dune fonction.
    Lindice nbr commence à zéro et renvoie le
    nbr-1 ème paramètre.
  • Exemple
  • function foobar()
  • numargs func_num_args()
  • echo Nombre d'arguments numargsltbr /gt
  • if (numargs gt 2)
  • echo Le 2ème param .func_get_arg(1).ltbr
    /gt
  • foobar(foo, bar, 10.5)
  • Cet exemple affiche la chaîne Le 2ème param
    10.5

46
Fonctions dynamiques (VI)
  • func_get_args() Retourne les arguments de la
    fonction en cours sous la forme dun tableau.
  • Exemple
  • function somme()
  • params func_get_args()
  • nbr 0
  • foreach(params as elem)
  • nbr elem
  • return nbr
  • echo somme(50,20,3,98,50)
  • Cette fonction somme retourne la somme de tous
    ses arguments quel quen soit le nombre.

47
Fonctions dynamiques (VII)
  • function_exists(str) Retourne TRUE si la
    fonction str a déjà été définie.
  • get_defined_functions() Retourne un tableau
    associatif contenant la liste de toutes les
    fonctions définies. A la clé internal est
    associé un tableau ayant pour éléments les noms
    des fonctions internes à PHP. A la clé user,
    ce sont les fonctions utilisateurs.
  • register_shutdown_function(str) Enregistre la
    fonction str pour exécution à l'extinction du
    script.

48
Classes (I)
  • Php gère la programmation orientée objet à laide
    de classes.
  • Exemple
  • class Voiture // déclaration de la classe
  • var couleur // déclaration dun attribut
  • var belle TRUE // initialisation dun
    attribut
  • function voiture() // constructeur
  • this-gtcouleur noire
  • // le mot clé this faisant référence à
    lobjet est obligatoire
  • function Set_Couleur(couleur)
  • this-gtcouleur couleur
  • mavoiture new Voiture() // création dune
    instance
  • mavoiture-gtSet_Couleur(blanche) // appel
    dune méthode
  • coul mavoiture-gtcouleur // appel dun
    attribut

49
Classes (II)
  • Le système de classes de php est très succint, il
    ne gère que lhéritage simple.
  • Exemple
  • class Voituredeluxe extends Voiture //
    déclaration de la sous classe
  • var couleur
  • function voituredeluxe() //
    constructeur
  • this-gtVoiture()
  • function Set_Couleur(couleur)
  • this-gtcouleur couleur
  • function Get_Couleur()
  • return this-gtcouleur
  • La nouvelle classe Voituredeluxe hérite de tous
    les attributs et méthodes de la classe parente
    Voiture dont elle est une extension (extends). Il
    est possible de surcharger les méthodes, den
    déclarer de nouvelles, etc.

50
Classes (III)
  • Quelques fonctions
  • get_declared_classes() retourne un tableau
    listant toutes les classes définies
  • class_exists(str) vérifie qu'une classe dont
    le nom est passé en argument a été définie
  • get_class(obj), get_parent_class retournent le
    nom de la classe de lobjet obj
  • get_class_methods(str) retourne les noms des
    méthodes de la classe str dans un tableau
  • get_class_vars(str) retourne les valeurs par
    défaut des attributs de la classe str dans un
    tableau associatif
  • get_object_vars(obj) retourne un tableau
    associatif des attributs de lobjet obj les clés
    sont les noms des attributs et les valeurs,
    celles des attributs si elles existent
  • is_subclass_of(obj,str) détermine si lobjet
    obj est une instanciation dune sous-classe de
    str, retourne VRAI ou FAUX
  • method_exists(obj,str) vérifie que la méthode
    str existe pour une classe dont obj est une
    instance, retourne VRAI ou FAUX

51
Classes (IV)
  • Tout objet instancié est une variable et peut à
    se titre être passé en argument à une fonction ou
    bien être un retour de fonction ou encore être
    sauvegardée en donnée de session.
  • Il nexiste pas de destructeur comme en Java,
    les objets qui cessent dêtre utilisés sont
    automatiquement détruits.
  • Il ny a pas de notion de visibilité tous les
    attributs et méthodes sont publiques et une
    classe hérite forcément de tous les attributs et
    méthodes de son père.
  • Une classe fille hérite de tous les attributs et
    méthodes de la classe parente dont elle est une
    extension (dou la syntaxe extends). Il est
    possible de surcharger les méthodes, den définir
    de nouvelles

52
Structures de contrôle (I)
  • Structures conditionnelles (même syntaxe quen
    langage C)
  • if( ... )
  • elseif
  • else
  • switch( )
  • case break
  • default

53
Structures de contrôle (II)
  • Structures de boucle (même syntaxe quen langage
    C)
  • for( )
  • while( )
  • do
  • while( )

54
Structures de contrôle (III)
  • Linstruction break permet de quitter
    prématurément une boucle.
  • Exemple
  • while(nbr tabi)
  • echo nbr.ltbr /gt
  • if(nbr stop)
  • break
  • Linstruction continue permet déluder les
    instructions suivantes de litération courante de
    la boucle pour passer à la suivante.
  • Exemple
  • for(i1 ilt10 i)
  • if(tabi val)
  • continue
  • echo tabi

55
Inclusions
  • On peut inclure dans un script php le contenu
    dun autre fichier.
  • require insert dans le code le contenu du fichier
    spécifié même si ce nest pas du code php. Est
    équivalent au préprocesseur include du C.
  • Exemple
  • require(fichier.php)
  • include évalue et insert à chaque appel (même
    dans une boucle) le contenu du fichier passé en
    argument.
  • Exemple
  • include(fichier.php)

56
Arrêt prématuré
  • Pour stopper prématurément un script, il existe
    deux fonctions.
  • die arrête un script et affiche un message
    derreur dans le navigateur.
  • Exemple
  • if(mysql_query(requette) false)
  • die(Erreur de base de données à la requête
    ltbr /gtrequet)
  • exit larrête aussi mais sans afficher de message
    derreur.
  • Exemple
  • function foobar()
  • exit()
  • Ces fonctions stoppent tout le script, pas
    seulement le bloc en cours.

57
Variables denvironnement
  • Le langage php est doté dune multitude de
    variables denvironnement que la fonction
    phpinfo() permet dafficher (ainsi que bien
    dautres informations sur la configuration du
    serveur Apache). Ces variables permettent au
    script daccéder à des informations très utiles
    voire quelques fois indispensables.
  • Quelques variables
  • PHP_SELF nom du script en cours
  • HTTP_ACCEPT liste des types MIME supportés par
    le client
  • HTTP_USER_AGENT signature du navigateur du
    client
  • REMOTE_ADDR adresse IP du client
  • QUERY_STRING chaîne au format URL contenant
    les paramètres passés à la page en cours
  • HTTP_REFERER URL de la source ayant renvoyée
    le client sur la page en cours (en lanalysant,
    on peut connaître le moteur de recherche utilisé
    ainsi que les mots clés entrés par linternaute,
    sil vient effectivement dun moteur de
    recherche permet dévaluer la qualité du
    référencement dun site web)

58
Constantes du PHP (I)
  • Le langage php met à disposition du programmeur
    des constantes propres au script qui ne peuvent
    pas être redéfinies et qui sont bien utiles pour
    la gestion des erreurs internes au script.
  • Les constantes prédéfinies du PHP
  • __FILE__ nom du fichier en cours
  • __LINE__ numéro de ligne en cours
  • PHP_VERSION version de PHP
  • PHP_OS nom du système d'exploitation qui est
    utilisé par la machine qui fait tourner le PHP
  • TRUE la valeur vraie booléenne
  • FALSE la valeur faux booléenne
  • Exemples
  • test true
  • echo __file__, __line__

59
Constantes du PHP (II)
  • Les constantes suivantes, lorsquelles sont
    déclarées par le programmeur (en général avant
    toute les autres instructions du script),
    permettent de spécifier à linterpréteur php du
    serveur quel niveau de rigueur appliquer face aux
    erreurs lors du déroulement du script.
  • E_ERROR dénote une erreur autre qu'une erreur
    d'analyse (''parse error'') qu'il n'est pas
    possible de corriger.
  • E_WARNING dénote un contexte dans lequel le PHP
    trouve que quelque chose ne va pas. Mais
    l'exécution se poursuit tout de même. Ces
    alertes-là peuvent être récupérées par le script
    lui-même.
  • E_PARSE l'analyseur a rencontré une forme
    syntaxique invalide dans le script, correction de
    l'erreur impossible.
  • E_NOTICE quelque chose s'est produit, qui peut
    être ou non une erreur. L'exécution continue. Par
    exemple, la tentative d'accéder à une variable
    qui n'est pas encore affectée.
  • E_ALL toutes les constantes E_ rassemblées en
    une seule. Si vous l'utilisez avec
    error_reporting(), toutes les erreurs et les
    problèmes que PHP rencontrera seront notifiés.

60
Constantes du PHP (III)
  • La fonction error_reporting(nbr) permet de fixer
    le niveau de rapport d'erreurs PHP. Par défaut
    php est assez permissif puisque autorise
    lutilisation des variables avant leur création,
    le cast implicite, lappel de fonction retournant
    une valeur sans variable pour la récupérer Cette
    fonction permet de forcer une plus grande
    sévérité tout comme loption explicite du Visual
    Basic ou le paramètre Wall du compilateur gcc.
  • Exemples
  • error_reporting( E_ERROR
  • E_WARNING
  • E_PARSE )
  • error_reporting(E_NOTICE)

61
Passage de paramètres à un script (I)
  • Méthode des formulaires.
  • La méthode POST permet de passer des variables
    saisies par lutilisateur dun script php à
    lautre.
  • Exemple
  • echo ltform method\post\ action\check.php
    \gt
  • Login ltinput type\text\ name \login\
    value\login\ /gtltbr /gt
  • Password ltinput type\password\ name
    \pass\ value\pass\ /gtltbr /gt
  • ltinput type\submit\ value\Identifier\
    /gt
  • lt/formgt
  • Cet exemple affiche un formulaire simple dans le
    navigateur un champs de saisie de texte et un
    champ de saisie de mot de passe. Lorsque
    lutilisateur valide et envoie les données au
    serveur, les variables du formulaire seront
    connues comme variables globales du script php
    destination (désigné par la valeur de lattribut
    action de la balise FORM). Les variables
    porteront le nom des balises (désigné par
    lattribut name ou id des balises de saisie).

62
Passage de paramètres à un script (II)
  • Toutes les variables passées en paramètres par
    cette méthode seront considérées comme des
    chaînes des caractères. Mais les casts implicites
    permettront de les récupérer directement dans des
    variables dautre type (entier, réel).
  • Exemple
  • if(passxrT12)
  • echo Ok, valid user.
  • / données importantes /
  • else
  • echo Acces forbiden.
  • Dans cet exemple, on contrôle la validité du mot
    de passe du formulaire précédent qui a été passé
    en paramètre au script check.php par la méthode
    POST. Par exemple, on affiche des données
    confidentielles seulement si le mot de passe est
    le bon.
  • Les données saisies napparaîtront pas dans lURL
    et ne seront donc pas stockées dans les fichiers
    de log du serveur, contrairement à la méthode GET
    (attention, HTTP1.1 implique que les appels de
    GET doivent être idempotents cest-à-dire doivent
    toujours retourner la même valeur).

63
Passage de paramètres à un script (III)
  • Méthode des ancres.
  • Les variables peuvent directement être passées
    par lintermédiaire des URL.
  • Exemple
  • id 20
  • echo lta href\fichier.php?actionbuyidid\
    gtAcheterlt/agt
  • Cet exemple va créer dans le script destination
    les variables globales action et id avec les
    valeurs respectives buy et 20.
  • La barre dadresse affichera lURL suivante
  • Ainsi une application web écrite en php peut
    interagir avec lutilisateur de façon dynamique.

64
Chargement de fichiers (I)
  • Les formulaires permettent de transmettre des
    informations sous forme de chaînes de caractères.
    Ils peuvent aussi permettre à un internaute de
    transmettre un fichier vers le serveur.
  • Cest la balise HTML suivante ltinput
    typefile /gt qui permet le chargement de
    fichiers. La balise FORM doit nécessairement
    posséder lattribut ENCTYPE de valeur
    multipart/form-data. La méthode utilisée sera
    POST. De plus, il est utile dimposer au
    navigateur une taille de fichier limite par le
    paramètre MAX_FILE_SIZE dont la valeur numérique
    a pour unité loctet.
  • Exemple
  • echo ltform action\PHP_SELF\
    method\POST\ ENCTYPE\multipart/form-data\
    gt\n
  • ltinput type\hidden\ name\MAX_FILE_SIZE\
    value\1024000\ /gt\n
  • ltinput type\file\ name\mon_fichier\
    /gtltbr /gt\n
  • ltinput type\submit\ value\envoyer\ /gt\n
  • lt/formgt\n

65
Chargement de fichiers (II)
  • Pour récupérer le fichier, il faut utiliser la
    variable denvironnement HTTP_POST_FILES qui est
    un tableau associatif dont les champs sont les
    noms des champs HTML file du formulaire. Par
    exemple HTTP_POST_FILESmon_fichier où
    mon_fichier est le nom donné au champs du
    formulaire HTML de type file.
  • La variable HTTP_POST_FILESmon_fichier est
    elle aussi un tableau associatif possédant les
    champs suivants
  • Si aucun fichier na été envoyé par le client, la
    variable mon_fichier vaudra la chaîne de
    caractères none ou bien (chaîne vide).
  • La durée de vie du fichier temporaire sur le
    serveur est limitée au temps dexécution du
    script. Pour pouvoir exploiter ultérieurement le
    fichier sur le serveur, il faut le sauvegarder
    dans un répertoire et lui donner un vrai nom.

66
Chargement de fichiers (III)
  • Exemple du cas du chargement de ce qui doit être
    une image GIF de moins de 1024.000 octets
  • // création dune variable contenant toutes les
    infos utiles
  • file HTTP_POST_FILESmon_fichier
  • // si un fichier a bel et bien été envoyé
  • if(file (file ! none))
  • // extraction du nom du fichier temporaire sur
    le serveur
  • file_tmp basename(filetmp_name)
  • // vérification de la taille et du type MIME
  • if((filesize lt 1024000)
    ereg(gif,filetype))
  • // nouveau nom, emplacement et extension du
    fichier
  • file_def dir./.name...ext
  • // copie du fichier temporaire dans son nouvel
    emplacement
  • copy(file_tmp, file_def)

67
Chargement de fichiers (IV)
  • Il est important de vérifier avec is_file() si un
    fichier du même nom existe déjà sur le serveur à
    lemplacement où on veut copier le nouveau
    fichier. On pourra supprimer lancien fichier
    avec unlink() (qui ne fonctionne pas avec les
    serveurs fonctionnant sous Windows). basename()
    permet de connaître le nom du fichier à partir de
    son chemin (nom) complet.
  • Même si le paramètre MAX_FILE_SIZE est inclus
    dans le formulaire, il est important de vérifier
    la taille du fichier réceptionné car rien
    nempêche un internaute malveillant de modifier
    en local sur sa machine le formulaire pour y
    soustraire le champs caché MAX_FILE_SIZE afin de
    saturer le serveur avec des fichiers trop
    volumineux.
  • La vérification du type MIME du fichier est
    également importante dans le cas où on ne
    souhaite réceptionner que des types de fichiers
    bien particuliers (des images GIF, JPEG ou PNG
    par exemple).

68
Chargement de fichiers (V)
  • Pour charger simultanément plusieurs fichiers, il
    suffit de rajouter des crochets au nom du champ
    HTML file, et de mettre autant de champs file que
    désiré.
  • Exemple
  • ltinput typefile namemes_fichiers /gt
  • ltinput typefile namemes_fichiers /gt
  • ltinput typefile namemes_fichiers /gt
  • ltinput typefile namemes_fichiers /gt
  • Dans cet exemple, linternaute pourra charger
    jusquà quatre fichiers.

69
Chargement de fichiers (VI)
  • A la réception, la variable HTTP_POST_FILES sera
    un tableau de tableaux associatifs.
  • Exemple
  • files_tab HTTP_POST_FILESmes_fichiers
  • foreach(files_tab as file)
  • / faire le traitement vu précédemment
  • - extraire le nom du fichier temporaire sur le
    serveur
  • - vérifier la taille et le type MIME
  • - donner un nouveau nom, emplacement et
    extension du fichier
  • - copier le fichier temporaire dans son nouvel
    emplacement /
  • Les fichiers temporaires sont généralement placés
    dans le répertoire /tmp du serveur. Cest la
    directive de configuration upload_tmp_dir du
    fichier php.ini qui détermine lemplacement des
    fichiers chargés par la méthode POST.

70
Chargement de fichiers (VII)
  • On aurait pu procéder autrement quavec des
    crochets, en utilisant directement dans le
    formulaire HTML des champs file de noms
    complètement différents.
  • Exemple
  • ltinput typefile namemon_fichier /gt
  • ltinput typefile namemon_autre_fichier
    /gt
  • Par contre, à la réception, on ne peut plus
    utiliser de boucle !
  • Exemple
  • file HTTP_POST_FILESmon_fichier
  • // puis faire le traitement vu précédemment
  • file HTTP_POST_FILESmon_autre_fichier
  • // puis refaire encore le même traitement
  • Lapproche utilisant des crochets convient au cas
    où le nombre de fichiers à charger est dynamique
    (non connu à lavance, dépend de paramètres
    divers).

71
Chargement de fichiers (VIII)
  • Pour les versions PHP 3 supérieures à la 3.0.16,
    PHP4 supérieures à la 4.0.2, il existe une autre
    méthode, plus simple
  • Exemple 1
  • // vérification que le fichier a bien été envoyé
    par la méthode POST
  • if (is_uploaded_file(mon_fichier))
  • // déplace le fichier dans le répertoire de
    sauvegarde
  • copy(userfile, dest_dir)
  • Exemple 2
  • / déplace directement le fichier dans le
    répertoire de sauvegarde en faisant les
    vérifications nécessaires /
  • move_uploaded_file(mon_fichier, dest_dir)

72
Sessions (I)
  • Les sessions sont un moyen de sauvegarder et de
    modifier des variables tout au cours de la visite
    dun internaute sans quelles ne soient visibles
    dans lURL et quelque soient leurs types
    (tableau, objet).
  • Cette méthode permet de sécuriser un site,
    despionner le visiteur, de sauvegarder son
    panier (e-commerce), etc.
  • Les informations de sessions sont conservées en
    local sur le serveur tandis quun identifiant de
    session est posté sous la forme dun cookie chez
    le client (ou via lURL si le client refuse les
    cookies).
  • Quelques fonctions
  • session_start() démarre une session
  • session_destroy() détruit les données de
    session et ferme la session
  • session_register(var) enregistre la
    variable var dans la session en cours,
    attention, ne pas mettre le signe (dollars)
    devant le nom de variable
  • session_unregister(var) détruit la variable
    var de la session en cours

73
Sessions (II)
  • Une session doit obligatoirement démarrer avant
    lenvoi de toute information chez le client
    donc pas daffichage et pas denvoi de header. On
    peut par exemple avoir une variable globale
    contenant le code HTML de la page et lafficher à
    la fin du script.
  • Les variables de session sont accessibles comme
    des variables globales du script.
  • Exemple
  • lt?
  • out lthtmlgtltbodygt
  • session_start() // démarrage de la
    session
  • if(! isset(client_ip))
  • client_ip REMOTE_ADDR
  • session_register(client_ip) //
    enregistrement dune variable
  • / code de la page /
  • out . lt/bodygtlt/htmlgt
  • echo out
  • ?gt

74
Sessions (III)
  • Sauvegarder des variables de type objet dans une
    session est la méthode de sécurisation maximum
    des données elles napparaîtront pas dans lURL
    et ne pourront pas être forcées par un passage
    manuel darguments au script dans la barre
    dadresse du navigateur.
  • Les données de session étant sauvegardées sur le
    serveur, laccès aux pages nest pas ralenti même
    si des données volumineuses sont stockées.
  • Une session est automatiquement fermée si aucune
    requête na été envoyée au serveur par le client
    durant un certain temps (2 heures par défaut dans
    les fichiers de configuration Apache).
  • Une session est un moyen simple de suivre un
    internaute de page en page (sans quil sen rende
    compte). On peut ainsi sauvegarder son parcours,
    établir son profil et établir des statistiques
    précises sur la fréquentation du site, la
    visibilité de certaines pages, lefficacité du
    système de navigation

75
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
  • fopen(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
  • 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

76
Fichiers (II)
  • Exemple typique daffichage du contenu dun
    fichier
  • lt?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 ltbgtfilelt/bgt
    impossible.)
  • ?gt

77
Fichiers (III)
  • La fonction fopen permet douvrir des fichiers
    dont le chemin est relatif ou absolu. Elle permet
    aussi douvrir des ressources avec les protocols
    HTTP ou FTP. Elle renvoie FALSE si louverture
    échoue.
  • Exemples
  • fp fopen(../docs/faq.txt, r)
  • fp fopen(http//www.php.net/,r)
  • fp fopen(ftp//userpassword_at_cia.gov/,
    w)
  • Les modes douverture
  • '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)

78
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 et génère alors une erreur PHP qui peut
    être échappée avec _at_.
  • closedir(d) Ferme le pointeur de dossier d.
  • readdir(d) Lit une entrée du dossier identifié
    par d. Cest-à-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 sil ny a plus de fichier.
  • rewinddir(d) Retourne à la première entrée du
    dossier identifié par d.

79
Accès aux dossiers (II)
  • Exemple 1
  • lt?php
  • if (dir _at_opendir(.)) // ouverture du
    dossier
  • while(file readdir(dir)) // lecture dune
    entrée
  • echo fileltbr /gt // affichage du nom de
    fichier
  • closedir(dir) // fermeture du dossier
  • ?gt
  • 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()

80
Accès aux dossiers (III)
  • Il existe un autre moyen daccéder aux dossiers
    lutilisation 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

81
Accès aux dossiers (IV)
  • Exemple 2
  • lt?php
  • d dir(.) // ouverture du dossier courant
  • echo Pointeur .d-gthandle.ltbr /gt
  • echo Chemin .d-gtpath.ltbr /gt
  • while(entry d-gtread()) // lecture dune
    entrée
  • echo entry.ltbr /gt
  • d-gtclose() // fermeture du dossier
  • ?gt
  • Cet exemple est équivalent au précédent. Ils
    listent tous les deux les fichiers et sous
    répertoires du dossier courant.

82
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
    hhmmss).
  • Quelques fonctions
  • date(format) retourne une chaîne de
    caractères contenant la date et/ou lheure locale
    au format spécifié
  • getdate() retourne un tableau associatif
    contenant la date et lheure
  • checkdate(month, day, year) vérifie la
    validité dune date
  • mktime (hour, minute, second, month,day,
    year) retourne le timestamp UNIX correspondant
    aux arguments fournis cest-à-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 lheure
    locale

83
Dates et heures (II)
  • Exemple 1
  • echo date(''Y-m-d His'')
  • / affiche la date au format MySQL 2002-03-31
    223029 /
  • Exemple 2
  • if(checkdate(12, 31,2001))
  • echo La St Sylvestre existe même chez les
    anglais !!!
  • Exemple 3
  • aujourdhui getdate()
  • mois aujourdhui'mon'
  • jour aujourdhui'mday'
  • annee aujourdhui'year'
  • echo ''jour/mois/annee'' // affiche
    31/3/2002

84
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 bisextile
    (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

85
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

86
Expressions régulières (I)
  • Les expressions régulières sont un outil puissant
    pour la recherche de motifs dans une chaîne de
    caractères.
  • Fonctions
  • ereg(motif, str) teste lexistence du motif
    motif dans la chaîne str
  • ereg_replace(motif, newstr, str) remplace
    les occurrences de motif dans str par la chaîne
    newstr
  • split(motif, str) retourne un tableau des
Write a Comment
User Comments (0)
About PowerShow.com