PHP - PowerPoint PPT Presentation

1 / 34
About This Presentation
Title:

PHP

Description:

Personal Home Page Generator au d but, aujourd'hui Hypertext Preprocessor ... string rtrim(str), string ltrim(str) nettoyent cha nes des blancs superflus ... – PowerPoint PPT presentation

Number of Views:162
Avg rating:3.0/5.0
Slides: 35
Provided by: lha91
Category:
Tags: php | archive | blancs | source

less

Transcript and Presenter's Notes

Title: PHP


1
PHP
  • Personal Home Page Generator au début,
    aujourd'hui Hypertext Preprocessor
  • Langage interprété sur un serveur ? il faut qu'il
    soit installé, pas disponible partout
  • Intégré dans le code html, fichiers .php
  • Pas disponible sur le serveur home.etu.unige.ch
  • documentation http//tecfa.unige.ch/guides/php/
    et http//www.php.net/manual/fr/
  • Autres langages Active Server Pages, Cold Fusion

2
Caractéristiques
  • Langage Oo
  • Version 4 aujourd'hui, 5 en préparation
  • C'est le serveur qui interprète le code, pas le
    Browser
  • Traitement de formulaires, navigation
    automatique...
  • On obtient facilement des pages dynamiques
  • Open source. Package à installer
    http//www.easyphp.org/
  • Pas dépendant de la plateforme
  • Interface avec bases données (MySQL), avec XML,
    PDF etc.

3
Principe
  • Le code est intégré dans une page (partout où
    l'on veut)
  • Toujours entre lt?php et ?gt
  • Exlthtmlgtltheadgtlt/headgtltbodygtlt?php
    echo("ltpgtceci est un testlt/pgt")
    ?gtlt/bodygtlt/htmlgt
  • Le code peut être même intégré dans un attribut
    de tag ltinput name"lt?php echo myvar ?gt"
    value"" /gt

4
PHP XHTML
  • En-tête lt?xml ?gt ne passe pas à la compilation
  • Solution utiliser PHP pour écrire l'en-tête
  • lt?php echo "lt?xml version\"1.0\"
    encoding\"iso-8859-1\"?"."gt" ?gt
  • lt!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
    Transitional//EN" "http//www.w3.org/TR/xhtml1/DTD
    /xhtml1-transitional.dtd"gt
  • lthtml xmlns"http//www.w3.org/1999/xhtml"gt

5
Variables / constantes
  • Toutes les variables préfixées par
  • Pas de déclaration de type
  • var 1
  • var2 "ma chaîne"
  • var3 3.1415
  • Tableaux avec indice entre
  • tab0 x
  • tab array(1, 4, 3)
  • Constantes définies avec define("PI", 3.1415)
    (pas de pour les utiliser!)
  • booléens avec TRUE et FALSE (insensible à la
    casse)

6
Opérateurs
  • Ressemble à Javascript
  • Affectation par ? a 2
  • - / (modulo)
  • ! ! gt lt gt lt
  • Attention concaténation par symbole . et pas
  • mystring "Hello "mystring . "Seb" ?
    résultat Hello Seb

7
Syntaxe
  • if (expr) else if (expr) else
  • for (initialisation condition incrément) ex
    for(i0 i lt 10 i)
  • while (expr)
  • do while (expr)
  • switch (var) case val break default
  • commentaires entre / / ou après //

8
Mêli-mêlo
  • On peut insérer du code HTML dans des conditions
  • lt?php  if ( myVar true ) ?gt  ltstronggtCeci
    est vrai.lt/stronggtlt?php  else
    ?gtltstronggtCeci est faux.lt/stronggtlt?php  ?gt

9
Encore plus fort
  • Du Javascript peut être appelé dans le PHP
  • lt?php
  • if (popup1)
  • ?gt
  • ltscript type"text/javascript"gt
  • window.open('mypopup.html', 'test', 'toolbar0,loc
    ation0,directories0,status0,scrollbars1,
  • resizable1,copyhistory0,menuBar0,width640,he
    ight200')
  • lt/scriptgt
  • lt?php

10
Fonctions
  • mot-clé function nomFonction(params), return
    optionnel
  • echo("chaine") echo(nom) echo var
    echo("Votre nom est name")
  • isset(var) ? vérifie si var existe
  • empty(var) ? var vide, à zéro ou inexistante
  • phpinfo() ? config du serveur
  • include("monfich.inc") ? inclure fichier
    (warning si absent) require("fich.inc") ?
    inclure, erreur fatale si absent

11
Variables locales/globales
  • mot-clé global
  • a 1 b 2function somme()    global a,
    b   b a bsomme()echo b
  • ou tableau GLOBALS
  •   GLOBALS"b" GLOBALS"a" GLOBALS"b"
  • Par défaut, un nom de variable est local
  • a 1 / portée globale /function test()   
    echo a / portée locale /test() //
    n'affiche rien

12
Les objets
  • mot-clé class
  • var pour définir les propriétés
  • this-gt pour accéder aux propriétés
  • Constructeur ? fonction ayant le nom de l'objet
  • class Exemple
  • var propriete
  • var propriete2
  • var date
  • function Exemple(pr1"init defaut", pr20)
  • this-gtpropriete1 pr1 //constructeur
  • this-gtpropriete2 pr2
  • this-gtdate date("d/m/Y")
  • monEx new Exemple("mon ex", 30)
  • ex new Exemple

13
Traitement de formulaire
  • Un petit formulaire
  • ltform action"calcul.php" method"post"gt
  • ltpgtQuelles sont vos connaissances de HTML ?
    ltinput type"radio" name"choice" value"1"
    /gtfaibles ltinput type"radio" name"choice"
    value"2" /gtmoyennes ltinput type"radio"
    name"choice" value"3" /gtbonnes lt/pgt
  • ltpgtIndiquez votre expertise en programmation
    ltinput type"radio" name"choice2" value"1"
    /gtabsente ltinput type"radio" name"choice2"
    value"2" /gtmoyenne ltinput type"radio"
    name"choice2" value"3" /gtbonnelt/pgt
  • ltpgt ltinput type"submit" value"Voir le
    résultat!"gtlt/pgt lt/formgt

14
Traitement de formulaire (2)
  • On récupère le contenu dans une variable
    super-globale (ici _REQUEST)
  • On accède à la valeur par le nom du champ
    (choice, choice2)
  • score _REQUEST'choice' _REQUEST'choice2'
  • echo "lth3gtVotre score est de " . score .
    "lt/h3gt"
  • if (score lt 3) echo "ltpgtVous ecirctes un
    deacutebutantlt/pgt"

15
Avec valeurs multiples
  • Champs select ou checkbox avec nom suivi de
  • ltinput type"checkbox" name"couleur"
    value"rouge" / gt
  • ltselect name"couleur"gtltoption value
  • choice _REQUEST"couleur"
  • echo("lth3gtVos couleurs préférées sont lt/h3gt")
  • for (i0iltsizeof(choice)i)
  • if (isset(choicei )) echo("choicei -
    ")

16
Variables super-globales
  • _REQUEST reçoit tous les champs envoyés, quelle
    que soit la méthode (POST ou GET). Le nom du
    champ est entre ""
  • _POST et _GET procèdent de même, selon la
    méthode d'envoi

17
_SERVER
  • La variable super-globale _SERVER contient des
    infos sur la config du serveur
  • "DOCUMENT_ROOT" ? chemin du script physiquement
    sur le serveur
  • "PHP_SELF" ? chemin et nom du script par rapport
    doc. root (ex. /ntic/index.php)
  • "SCRIPT_NAME"? chemin complet du script (adresse
    relative)
  • "SCRIPT_FILENAME" ? chemin complet physique
  • etc. v. page d'exemple

18
Autres variables super-globales
  • _COOKIE ?les cookies envoyés par la machine du
    client
  • _SESSION ? informations de session, données
    conservées entre plusieurs accès à un site
    (notion avancée)
  • _FILES ? informations sur les fichiers envoyés
    au script
  • _ENV ? variables d'environnement, dépendantes du
    serveur de la machine hôte (notion avancée)

19
Autre récupération de valeurs
  • Chaque paramètre passé crée une variable
    automatiquement. Dépend de la configuration du
    serveur, à éviter (p. ex pas sur le nôtre)
  • Ex choice, choice2, submit

20
Paramètres de script avec liens
  • Des scripts peuvent contenir des liens vers
    eux-mêmes
  • On code les paramètres après symbole ?
  • Les paramètres sont séparés par symbole
  • lta href"/article.php?id56layout3"gt
  • Récupération dans script par _REQUEST"id" ou
    _GET"id"

21
Imprimer des valeurs
  • echo ? simple écriture
  • printf (str , mixed args) ? écriture formatée
  • str est une chaîne à formater en insérant les
    arguments compris dans args
  • la place des arguments à insérer est marquée par
    suivi des attribus de formatage
  • d remplace un entier, s une chaîne
  • printf("Mon nom est s et j'ai d ans",
    nom,age)
  • Formatage plus sophistiqué ? Cf. documentation

22
Autres traitement de chaînes
  • string addslashes(str) et string stripslashes() ?
    retournent la chaîne transformée avec/sans \
    devant " et '. NB suivant le serveur c'est
    automatique
  • string htmlentities(str) ? convertit les
    caractères accentués en entités. Attention ne
    tient pas en compte s'il y a des tags. Inverse
    html_entity_decode()
  • string wordwrap(str, n, sep) ? passe à la ligne
    une chaîne vers n caractères et insère un
    séparateur (p. ex. 'ltbrgt', '\n').

23
Chaînes explode / implode
  • string explode(separateur, str) ? sépare une
    chaîne str dans un tableau en tenant compte du
    séparateur
  • ch "anchois tomate mozarella câpres"pizza
    explode(" ", ch)
  • string split(pattern, str) ? idem mais avec
    expression régulière
  • string implode(separateur, tableau) ? opération
    inverse retourne les valeurs de tableau dans
    une chaine séparée par le séparateur

24
Chaînes suite
  • string trim(str), string rtrim(str), string
    ltrim(str) ? nettoyent chaînes des blancs
    superflus
  • string nl2br(str) ? retourne une chaîne avec les
    retours de chariot remplacés par ltbrgt
  • string strtoupper(str), string strtolower(str) ?
    majuscules, minuscules
  • int strpos(substr, str) ? donne la position de
    substr dans str

25
Tableaux ? variables
  • list(listevars) tableau ? met les valeurs
    contenues dans tableau dans des variables
  • info array('café', 'noir', 'cafeine')list(dr
    ink, color, power) info
  • array each(array)? retourne la paire clé/valeur
    courante du tableau et la met dans un autre
    tableau
  • while(list(nom,val) each(_POST)) echo nom .
    " " . val ."ltbr/gt"

26
Travailler avec fichiers
  • Fonctions de répertoire
  • boolean is_dir(str) ? renvoit true si le nom est
    un répertoire
  • handle opendir(dirname) ? ouvre le répertoire
    dirname et renvoit identificateur de resource
  • filename readdir(handle) ? lit le nom du fichier
    suivant dans le répertoire désigné par handle
    (y.c. fichiers spéciaux . et ..)
  • closedir(handle) ? ferme le répertoire

27
Lister tous les fichiers
  • if (isdir(dir)
  • handle opendir(dir)
  • while (file readdir(handle))
  • if ((file !.)
  • (file !..))
  • echo file
  • closedir(handle)

28
Ouverture dun fichier
  • handle fopen(filename, mode) ? ouvre fichier
    selon mode r, w etc. Le nom peut être URL.
  • string fgets(handle, taille) ? lit le fichier
    pointé dans handle jusqu'à taille-1 caractères,
    ou jusqu'à la fin du fichier ou d'une ligne et
    retourne res dans string
  • boolean file_exists(fn) ? vérifie existence
    fichier
  • string file_get_contents(filename) ? met le
    contenu du fichier dans chaîne (filename est un
    nom de fichier ou URL).

29
Fonctions de traitement URL
  • array parse_url(url) ? renvoit les différents
    éléments dans un tableau (v. doc)
  • string urlencode(str), string urldecode(str) ?
    encode / décode les caractères dans une chaine
    code hexa 2 digits, et espaces par . E9 é,
    E0 à, E7 ç,

30
Parsing XML
  • Créer parseur xmlparser xml_parser_create()
  • Définir gestionnaires d'événements ? fonctions
    qui gèrent les différents types de contenu du
    document
  • Parser doc xml_parse() Cf. plus loin
  • Fermer parseur xml_parser_free(parser)

31
XML gérer éléments (tags)
  • xml_set_element_handler( parseur, nom
    gestionnaire d'élément ouvrant, nom gestionnaire
    d'élt. fermant)
  • Gestionnaire élément ouvrant
  • function nomGest(parser, name, attribs)
  • parser contient le nom du parseur, name l'élément
    en question et attribs la liste des attributs
    contenus dans l'élément
  • Gestionnaire élément fermant
  • function nomGest(parser, name)

32
Exemple simple
  • function debut(p, n, a)
  • echo("ltpgtname ")
  • while(list(nom,val)each(a)) echo nom . "
    " . val .""
  • echo "lt/pgt")
  • function fin(p,n)
  • echo "ltpgtfin nlt/pgt"
  • monpars xml_parser_create()
  • xml_set_element_handler(monpars,"debut", "fin")

33
Gestionnaire CDATA
  • xml_set_character_data_handler(parser, cdata)
  • Le handler a 2 paramètres le parser et la chaîne
    cdata
  • function traiteCdata(pars, txt)
  • echo("ltpgttxtlt/pgt")
  • xml_set_character_data_handler(p, "traiteCdata")

34
Parseur
  • xml_parse(parseur, chaine)
  • chaine contient le doc entier ou une partie
  • Renvoit TRUE si pas d'erreur
  • Dans un exemple robuste, il faudrait faire une
    gestion des erreurs, sinon le script plante
Write a Comment
User Comments (0)
About PowerShow.com