INFO4007 S. C. T ECHNOLOGIE DE L’ INFOROUTE

odecalmΛογισμικό & κατασκευή λογ/κού

2 Ιουλ 2012 (πριν από 4 χρόνια και 11 μήνες)

620 εμφανίσεις

Automne 2011
——————————————————————————————————————————–
INFO4007
S.C.TECHNOLOGIE DE L’INFOROUTE
Éric HERVET
Universitéde Moncton
Facultédes sciences
Département d’informatique
Moncton,N.-B.,CANADA
E1A 3E9
Table des matières
I.LE PROTOCOLE HTTP..............................1
I.1.
Introduction
......................................1
I.2.
Requête HTTP
....................................2
I.3.
Réponse HTTP
....................................5
I.4.
Exemple:client en langage C
............................6
II.LE LANGAGE XML.................................7
II.1.
Généralités
......................................7
II.2.
Premier exemple XML
................................10
II.3.
Règles de base
....................................12
II.4.
Contenu des éléments
................................13
II.5.
Attributs des éléments
................................13
II.6.
Documents XML valides
...............................13
II.7.
Spécification d’une DTD
...............................14
II.8.
Entités
........................................15
II.9.
Affichage d’un document XML
...........................16
III.PHP:HYPERTEXT PREPROCESSOR....................25
III.1.
Introduction
......................................25
III.1.1.Àquoi ça sert?
..............................25
III.1.2.Fonctionnement
..............................25
III.2.
Principes de base
...................................25
III.3.
Variables
.......................................26
III.3.1.Syntaxe
..................................26
III.3.2.Types
....................................26
III.3.3.Affectations
................................27
III.3.4.Variables prédéfinies
............................27
III.4.
Formulaires
......................................27
III.4.1.Get ou Post
................................28
III.4.2.Réception des données
..........................28
III.5.
Arithmétique
.....................................28
III.5.1.Opérations de base
.............................28
III.5.2.Formatage
.................................28
III.5.3.Incrémentation/décrémentation
......................29
III.5.4.Opérateurs multiples
............................29
III.5.5.Fonctions mathématiques
.........................29
i
III.6.
Chaînes de caractères
.................................29
III.6.1.Chaînes tronquées
.............................29
III.6.2.Chaînes concaténées
............................29
III.6.3.Chaînes d’encodage et de décodage
....................30
III.6.4.Chaînes de cryptage et de décryptage
...................30
III.6.5.Manipulation de chaînes de caractères
..................30
III.7.
Structures de contrôle
................................30
III.7.1.if
.....................................30
III.7.2.else
...................................31
III.7.3.elseif
..................................31
III.7.4.switch
..................................31
III.7.5.while
...................................32
III.7.6.for
....................................32
III.8.
Tableaux
.......................................32
III.8.1.Création,ajouts,accès aux éléments
...................32
III.8.2.Accès aux éléments
............................33
III.8.3.Tris
.....................................33
III.8.4.Conversions chaînes ←→tableaux
....................33
III.8.5.Création àpartir d’un formulaire
.....................34
III.8.6.Tableaux multidimensionnels
.......................34
III.9.
Expressions régulières
................................35
III.9.1.Motifs simples
...............................35
III.9.2.Motifs plus complexes
...........................36
III.9.3.Filtrage et remplacement
.........................36
III.10.
Fonctions
.......................................37
III.10.1.Création et utilisation de fonctions simples
................37
III.10.2.Fonctions avec arguments
.........................37
III.10.3.Fonctions retournant une valeur
......................38
III.10.4.Variables globales
.............................38
III.10.5.Arguments par défaut
...........................38
III.11.
Fichiers et répertoires
.................................39
III.11.1.Permissions
................................39
III.11.2.Écritures
..................................39
III.11.3.Lectures
..................................39
III.11.4.Répertoires
.................................40
III.11.5.Uploads
..................................40
III.11.6.Renommage et suppression
........................40
III.12.
Bases de données
...................................40
III.12.1.Connection àune base de données
....................40
III.12.2.MYSQL
..................................41
III.12.3.Connection àune base de données M YSQL
...............42
III.12.4.Création d’une table
............................42
III.12.5.Insertion de données
............................43
ii
III.12.6.Récupération de données
.........................43
III.13.
Cookies
........................................43
III.13.1.Création et lecture
.............................43
III.13.2.Ajout d’une variable
............................43
III.13.3.Suppression
................................44
III.14.
Applications web
...................................44
III.14.1.include et require
..........................44
III.14.2.Heure et date
................................44
III.14.3.Entêtes HTTP
...............................46
III.14.4.Courriel
..................................46
III.15.
Erreurs
........................................46
III.15.1.Erreurs communes
.............................46
III.15.2.Rapport d’erreurs
.............................47
III.15.3.Instruction die()
.............................47
IV.COLDFUSION.....................................48
IV.1.
Généralités sur ColdFusion
..............................48
IV.1.1.Introduction
................................48
IV.1.2.Structure d’une application ColdFusion
..................53
IV.1.3.Installation de COLDFUSION et connection àdes bases de données
...60
IV.1.4.Création d’une base de données et organisation des d onnées
.......62
IV.1.5.Requêtes SQL
...............................63
IV.1.6.Première application Web
.........................64
IV.1.7.Modification d’une base de données avec ColdFusion
..........70
IV.2.
Caractéristiques les plus utilisées
...........................77
IV.2.1.Variables et structures de contrôle
.....................77
IV.2.2.Tables et groupes
.............................79
IV.2.3.Formulaires ColdFusion
..........................79
IV.2.4.Insertions,mises àjour,suppressions
...................82
IV.2.5.ColdFusion et le courriel
.........................85
IV.2.6.Fonctions ColdFusion
...........................87
IV.3.
Quelques outils pour des applications ColdFusion
..................89
IV.3.1.Listes,structures,tableaux
........................89
IV.3.2.Client COLDFUSION
...........................92
IV.3.3.Outils de recherche
............................94
IV.3.4.Fichiers et répertoires
...........................95
IV.3.5.SQL avancé
................................96
IV.3.6.E-commerce
................................97
IV.3.7.Outils de débuggage
............................98
IV.4.
Autres possibilités du langage CFML
........................99
IV.4.1.Balise cfchart (MX)
..........................99
IV.4.2.Lettres accentuées
.............................99
IV.4.3.Type de données en CFML
........................100
IV.4.4.Autres structures de contrôle
.......................100
iii
IV.4.5.Options régionales pour la date et l’heure
.................100
IV.4.6.Conversions automatiques entre types
...................100
IV.4.7.Portée d’une variable CFML
.......................100
IV.4.8.Opérateurs arithmétiques
.........................100
IV.4.9.Utilisation de <CFQUERYPARAM>
....................101
IV.4.10.Validation des types de champs de saisie
.................101
iv
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
I.LE PROTOCOLE HTTP
I.1.
Introduction
Le protocole HTTP (HyperText Transfert Protocol) est une implémentation simple de type client-serveur
(Fig.1).
FIGURE 1 – Communication entre fureteur et serveur Web.
Le client est généralement un fureteur Web (Firefox,Safari,IE,etc.) qui envoie une requête àun serveur
Web (Apache
1
),IIS,Sun Java Web Server,etc.) qui lui répond.C’est un pro tocole en mode texte,générale-
ment sur une connexion TCP,dédiéau transfert de ressource e t non àl’échange de fichiers même si en
pratique c’est souvent le cas avec les sites Web.On peut analyser le comportement du protocole HTTP en
console grâce àla commande telnet utilisée sur le port 80:
telnet aquadie.info.umoncton.ca 80
GET/http/1.0
(plus une ligne blanche)
La réponse du serveur Web aquadie.info.umoncton.ca est:
HTTP/1.1 200 OK
Date:Tue,06 Sep 2011 16:25:17 GMT
Server:Apache/2.2.17 (Ubuntu)
Last-Modified:Sun,28 Aug 2011 17:23:16 GMT
1.En 2007,60%des sites Web sont hébergés sur des serveurs Apache.
Éric Hervet - 1/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
ETag:"6bc-31-4ac49368e6063"
Accept-Ranges:bytes
Content-Length:49
Vary:Accept-Encoding
Connection:close
Content-Type:text/html
<html>
<body>
It works!
</body>
</html>
FIGURE 2 – Premier serveur Web au CERN.
I.2.
Requête HTTP
Une requête HTTP est constituée d’une seule ligne comprenan t trois éléments:
– la méthode,
– l’URL
2
qui identifie la ressource (le plus souvent un fichier texte ou une image),
– et la version du protocole HTTP utilisé(HTTP/1.0 ou HTTP/1.1).
2.Uniform Resource Locator.
Éric Hervet - 2/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
Après cette ligne on peut trouver un certain nombre de champs (un par ligne) dont la forme est toujours la
même:le nomdu champ suivi de:,d’un espace et de la valeur que l’on veut lui affecter (toujours suivi des
caractères\r et\n).Les caractères\r et\n correspondent respectivement au retour chariot et au saut
àla ligne suivante.Vient ensuite une ligne vide (composée donc seulement des d eux caractères\r et\n)
puis le corps de la requête.Une requête a donc la forme suivan te:
Méthode URL HTTP/1.0\r\n
Champ1:valeur1\r\n
Champ2:valeur2\r\n
\r\n
Corps de la requête
Il existe cinq méthodes:
Méthode
Description
GET
Requête de la ressource àl’URL spécifiée.
HEAD
Requête de la ressource àl’URL spécifiée:la réponse contien t seulement l’entête,pas le contenu
de la ressource.
POST
Envoi de données au programme situéàl’URL spécifiée:le corp s de la requête peut être exécuté
dans ce cas.
PUT
Même chose que POST.
DELETE
Suppression de la ressource située àl’URL spécifiée.
Les méthodes les plus souvent utilisées sont GET et POST.
La méthode GET est la plus simple car le corps du message dans ce type de requête est vide.
La méthode POST permet d’envoyer des informations au serveur dans le corps du message d’une requête
HTTP.Lorsque des informations sont envoyées au serveur par la méthode GET,elles sont encodées àla
suite de la ressource après le symbole “?” dans l’URL.
La méthode HEAD sert essentiellement pour les applications de cache.En effet,la réponse HTTP renseigne
sur les propriétés de la ressource demandée (date de dernièr e modification,etc.).Il est donc intéressant
pour économiser du temps de traitement et de la bande passant e de pouvoir demander seulement ces
informations et pas le contenu de la ressource.
En pratique très peu de serveurs autorisent les actions PUT et DELETE pour des raisons évidentes de
sécurité.
Champs d’une requête HTTP
La première ligne d’une requête peut être suivie d’un certai n nombre de champs permettant de donner des
renseignements sur le client (normalement un fureteur) et son utilisateur.Il existe de nombreux champs,
ici nous ne décrirons que les plus utilisés pour la programma tion de petits clients.La RFC
3
du protocole
HTTP fournit une description de toutes les possibilités off ertes.
3.Request For Comments.
Éric Hervet - 3/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
Nomdu champ
Description
Accept
Type de contenu MIME (Multipurpose Internet Mail Extensions) acceptépar le
fureteur (par exemple text/html).
Content-Length
Longueur du corps de la requête.
Content-Type
Type de contenu MIME du corps de la requête.
Date
Date de début de transfert des données.
Forwarded
Utilisépar les proxys entre le fureteur et le serveur.
From
Permet de spécifier l’adresse courriel du client.
Referer
URL du lien àpartir duquel la requête a étéeffectuée.
If-Modified-Since
Dernière date de réception du contenu de la ressource.
Host
Nomdu serveur/domaine de destination.
User-Agent
Chaîne de caractères donnant des informations sur le client (nom,type et version
du fureteur,système d’exploitation,etc.).
Le champ Accept est important car il permet d’indiquer la liste des formats de données que l’on souhaite
recevoir,par exemple:image/gif,image/jpeg,image/png.En l’absence de ce champ,le serveur
ne pourra pas envoyer de fichier image,il est donc indispensa ble pour écrire un outil d’aspiration d’images
sur le Web.
Le Champ Content-Length est particulièrement utile pour les requêtes POST (la valeur de ce champ
est toujours nulle pour les requêtes GET) car certains serveurs refusent de traiter la requête en l’a bsence de
ce champ.
Pour l’écriture d’un outil de synchronisation entre un site Web et une autre source de données,on utilise
le champ If-Modified-Since,suivi de la dernière date de synchronisation.Il indique au serveur de
n’envoyer le contenu de la ressource que s’il a changédepuis cette date.
Le champ Host indique le nom du domaine de destination de la requête.Il est fréquent qu’un même
serveur Web héberge plusieurs sites Web de noms de domaines d ifférents,ce champ permet donc de faire
la distinction.Ce champ est obligatoire avec la version HTTP/1.1.
Les auteurs de sites web n’apprécient guère l’usage des “asp irateurs” (tels que wget) car ils permettent
la consultation hors ligne de leur site sans les bannières pu blicitaires.Une technique classique consiste
àvérifier le Referer d’une requête avant de répondre.Le Referer indique l’URL de la ressource
précédemment consultée (dans le cas d’un fureteur,c’est l’ URL de la page qui contenait le lien sur lequel
on vient de cliquer).La plupart des outils utilisant HTTP servent àrécupérer de façon automatique des
données (ou des ensembles de fichiers) sur le Web,il est donc p arfois important de renseigner ce champ
pour donner l’impression qu’un vrai utilisateur est derrière son fureteur.
Pour les mêmes raisons que précédemment,il est intéressant pour un utilitaire de récupération de fichiers
sur Internet de se faire passer pour un fureteur ordinaire.Le champ User-Agent permet de se faire
Éric Hervet - 4/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
passer pour un fureteur standard,celui que tous les sites Web acceptent (le navigateur Opera
4
utilise cette
technique).
I.3.
Réponse HTTP
La réponse HTTP est un ensemble de lignes envoyées au navigateur par le serveur (comme la requête).
Elle comprend:une ligne statut,une liste de champs,une ligne blanche,le corps de la réponse (générale-
ment le contenu du fichier demandé).
La ligne de statut indique la version du protocole utilisée e t l’état du traitement de la requête àl’aide d’un
code et d’un texte explicatif.Le code est utilisépar le prog ramme client alors que l’explication permet
d’informer l’utilisateur en cas d’erreur.
Un ensemble de lignes facultatives permet de donner des informations supplémentaires sur la réponse,la
ressource et le serveur.Chacune de ces lignes est composée d ’un nom quantifiant le type de champ,suivi
de:et de la valeur (comme pour la requête).
Une réponse HTTP a donc la syntaxe suivante:
HTTP/x.x Code Explication\r\n
Champ1:Valeur1\r\n
.
.
.
Champn:Valeurn\r\n
(ligne vide)\r\n
Corps de la réponse
Les codes de retour
Les codes de retour sont importants car ils représentent le s tatut de la transaction.Un code de réponse est
constituéde 3 chiffres,le premier indique la classe de stat ut et les suivants la nature exacte de l’erreur.
Les codes 20x indiquent que l’opération s’est correctement effectuée.Le code le plus fréquent est 200 (OK).
Les codes de classe 30x indiquent que l’objet demandéa étédé placéet qu’il faut donc changer d’URL ou
de méthode pour accéder au contenu demandé.Le code 304 indiq ue que la ressource n’a pas étémodifiée.
C’est le code utilisédans le cas d’une requête avec le champ If-Modified-Since (le corps de la
réponse est vide dans ce cas).
La classe 4 sert lorsque le client a commis une erreur.Les codes d’erreur les plus courant sont:404 (Not
Found) lorsque l’objet demandén’existe plus,ou 403 (Forbi dden) après la saisie d’un mauvais mot de
passe.
La classe 5 indique une erreur du côtéserveur (par exemple bo gue dans un script CGI
5
.
4.http://www.opera.com
5.Common Gateway Interface.
Éric Hervet - 5/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
Les champs d’une réponse HTTP
Les champs àconnaître ne sont pas nombreux:
Content-Length:c’est la longueur (en octets) du corps de la réponse.C’est u tile pour dimensionner
un tampon (buffer) ou savoir quand on a fini de lire les informations.
Content-Type:le type de document dont le contenu se trouve dans le corps du message.Par exemple
selon qu’on a affaire àune page HTML ( text/html) ou àune image au format PNG ( image/png),
on n’utilisera pas la même routine pour afficher les informat ions.
Location:dans les réponses de classe 3,on peut trouver ce champ indiq uant la nouvelle adresse de la
ressource demandée.
I.4.
Exemple:client en langage C
Voir exemple
html
get.c
Éric Hervet - 6/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
II.LE LANGAGE XML
II.1.
Généralités
￿ Historique
☞ Internet:Infrastructure mondiale de constituée d’un ensemble de réseaux nationaux,régionaux et
privés,reliés par le protocole de communication TCP/IP.
☞ World Wide Web:sous-réseau de l’Internet utilisant le protocole HTTP (HyperText Transfer Pro-
tocol).
☞ Dates clés:
☛ 1950:Langages hypertextes et développements théoriques ( Ted Nelson).
☛ 1969:Développement du GML ( Generalized Markup Language) par IBM.
☛ 1989:Projet au CERN (anciennement Conseil Européen pour la Recherche Nucléair e,Genève,
Suisse) pour développer une technologie d’échange d’infor mation entre ordinateurs du CERN à
travers le langage HTML (HyperText Markup Language).Projet soumis par le physicien Tim
Berners-Lee.
☛ 1990:Premier prototype WWW.
http://info.cern.ch/hypertext/WWW/TheProject.html
☛ 1991:Lancement officiel du Web ( alt.hypertext) et premier navigateur en mode texte.Pre-
mière version de HTML (HyperText Markup Language):HTML 1.0.
☛ 1992:Premiers navigateurs graphiques (ERWISE,VIOLAWWW,LYNX).
☛ 1993:MOSAIC
☛ 1994:NETSCAPE NAVIGATOR.HTML 2.0.
☛ 1995:Fondation du W3C(World Wide Web Consortium),toujours dirigépar TimBerners-Lee.Le
W3C développe des spécifications ouvertes pour améliorer l’ interopérabilitédu Web.Les standards
fournis par le W3C sont:
➢ HTML 4.01 - Version particulièrement complète qui permet notamment l ’utilisation de feuilles
de style.
Langage largement utilisésur le Web pour présenter des documents.Les navigateurs inter-
prètent les pages HTML et présentent àl’utilisateur les résultats e n fonction des média.Grâce
àdes feuilles de style,l’auteur d’une page HTML peut définir la représentation des éléments
structurels autre que celle par défaut du navigateur.
➢ XML 1.0 - eXtensible Markup Language
Langage balisé(comme HTML) qui permet de définir ses propres éléments (balises ou tags).
Plusieurs jeux d’éléments peuvent être présents dans un mêm e document XML grâce aux espaces
de noms (namespaces).
Certaines applications d’XML telles que XHTML et MathML sont devenues des standards du
W3C.
Les feuilles de style CSS (Cascading Style Sheets) et XSL (eXtensible Style Language) sont
les meilleures manières de présenter de l’information XML d ans un navigateur.XML est
Éric Hervet - 7/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
essentiellement utilisépour la communication entre appli cations.
➢ XHTML 1.0,1.1 et modularisation
XHTML 1.0 est simplement une reformulation d’HTML en tant qu’application XML.
XHTML 1.0 reprend les principes d’HTML 4.01 en étant plus str ict grâce au XML.XHTML
s’affiche dans un navigateur de façon identique àHTML.XHTML 1.0 hérite donc des concepts
généraux d’HTML 4.01:
- Présentation et structure d’un document doivent être sépa rées grâce aux feuilles de style.
- Les documents doivent être accessibles.
- Les documents doivent être internationalisés.
XHTML 1.0 reprend le modèle des trois DTD:Strict,Transitional et Frameset.Ce modèle est
apparu avec HTML 4.0 et a étérepris avec HTML 4.01.
Les caractéristiques essentielles héritées d’XML sont:
- Tous les types de document commencent par une déclaration c orrecte de DOCTYPE.
- Un document conforme contient une déclaration DOCTYPE,un élément <html> avec l’espace
de nom XHTML déclaré,un élément <head> comprenant un élément <title> ainsi qu’un
élément <body>.
- Tous les éléments et noms d’attributs sont écrits en minusc ules et toutes les valeurs d’attributs
entre guillemets.
- Tous les éléments non vides (par exemple <li>) doivent avoir une balise fermante.
- Tous les éléments vides (par exemple <br>,<hr>,<img>) doivent se terminer par une barre
de division (<br/>).
- Le document doit être valide conformément àla DTD qu’il déc lare.
XHTML 1.1 est constituéde trois parties principales:
- La DTD XHTML 1.0 Strict (avec modifications mineures).
- La modularisation XHTML.
- L’annotation Ruby.
Il est possible de rédiger des documents en XHTML 1.1 de plusi eurs façons.La première consiste
àutiliser la DTD XHTML 1.1.Avec cette méthode,un document sera extrêmement structur écar
il n’existe quasiment aucun attribut de présentation en XHT ML 1.1.La séparation entre structure
et présentation est quasiment totale.La présentation prop rement dite est stockée dans une feuille
de style.
Un autre moyen pour produire des documents XHTML 1.1 consiste àutiliser la modularisation
XHTML.Il s’agit de découper les composants habituels d’HTML et d’ XHTML (textes,tables,
cadres,formulaires,etc.) en modules distincts.On peut ainsi créer sa propre DTD et y inclure
uniquement les composants requis.C’est cette possibilitéde modularisation qui offre au concep-
Éric Hervet - 8/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
teur Web l’opportunitéde personnaliser ses balises.
L’annotation Ruby est un moyen particulier de gérer certaines annotations de c aractères asia-
tiques.Ruby fait partie du travail d’Internationalisation.
➢ Feuilles de styles CSS (Cascasding Style Sheets)
Les feuilles de styles CSS permettent de changer l’apparence des éléments HTML et XML en
assignant des styles àdes types d’éléments,des classes aut o-définies ou des instances individuelles.
Les feuilles de styles peuvent être utilisées pour définir l’ apparence d’un site dans sa totalité.
➢ DOM1 - Document Object Model Level 1
Le DOM offre toute la puissance et l’interactivitéd’un lang age de script (tel qu’ECMAScript,
la version standardisée de JavaScript) en l’appliquant àun e page Web.Le DOM Level 1 est une
interface programmatique (API,Application Programming Interface) pour l’interaction avec les
pages Web.Il permet au langage de script d’accéder facileme nt àla structure,au contenu,et àla
présentation d’un document écrit dans des langages comme HT ML et CSS.
Le DOM est compatible avec les améliorations technologique s àvenir et permettra àtous les lan-
gages de script d’interagir avec tous les langages utilisés dans le document.Ce standard permet non
seulement de programmer facilement du HTML dynamique,mais il facilitera aussi l’adaptation aux
futures technologies d’Internet.
☛ 1996:HTML 3.0,CSS 1.0
☛ 1997:HTML 3.2
☛ 1998:SMIL 1.0 (Synchronized Multimedia Integration Language)
☛ 1999:XML 1.0,XSLT 1.0 (XSL Transformations),HTML 4.01
☛ 2000:XHTML 1.0,XSLT 1.1,DOMLevel 1
☛ 2001:XHTML 1.1,XSL 1.0,MathML 2.0
☛ 2003:SVG 1.1 (Scalable Vector Graphics)
☛ 2004:SSML 1.0 (Speech Synthesis Markup Language)
☛ 2006:XHTML 2.0,XSL 1.1,SVG 1.2
☛ 2007:XSLT 2.0,VoiceXML 2.1
Éric Hervet - 9/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
☛ 2008:Canonical XML 1.1,CSS2 (CSS Level 2)
(http://www.w3.org/TR/)
￿ Le langage XML (eXtensible Markup Language) est un méta-langage (langage de description d’autres
langages) de
structuration
de documents et de données sur le Web:définition,gestion,cr éation,
transmission et partage de documents.
￿ XML est issu de SGML (Standard Generalized Markup Language),comme HTML.
◮ SGML est très complexe,
◮ HTML n’a qu’un seul type de document fixé.
Le XML a donnénaissance àde nombreux langages,les plus conn us étant M ATHML (Mathematics
Markup Language),SMIL (Synchronized Multimedia Integration Language) et CML (Chemistry
Markup Language).
￿ XML est développépar le W3C (World Wide Web Consortium).
￿ Le projet a étélancéen 1996,la version 1.0 est apparue en 199 8.
￿ Actuellement il existe plusieurs versions concurrentes de XML.
￿ XML n’est pas fait pour remplacer HTML (utilisation conjointe des deux langages).
￿ Les navigateurs supportant XML sont Netscape 6+,Firefox 2+ et Internet Explorer 5.01+ (fichiers
d’extension.xml).
Le XML est devenu un standard de fait des communications de données dans l’industrie du logiciel et sert
de média principal d’échange de données entre entreprises.
Les principaux avantages du XML sont:
￿ La simplicité.
￿ Un standard ouvert,indépendant de la plate-forme et du vendeur.
￿ L’extensibilité(par nature).
￿ La réutilisation.
￿ La séparation du contenu et de la présentation.
￿ Le support de l’intégration des données de sources multiples.
￿ La capacitéàdécrire des données d’une grande variétéd’appli cations.
￿ Des moteurs de recherche plus évolués.
II.2.
Premier exemple XML
<?xml version="1.0"encoding="ISO-8859-1"?>
<liste_profs> <!-- Élément racine:Un et un seul -->
<!-- Éléments imbriqués -->
<prof>
Éric Hervet - 10/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
<nom>Jalal Almhana</nom>
<bureau>RR-D214</bureau>
<courriel>jalal.almhana@umoncton.ca</courriel>
<cours>Assembleur</cours>
<recherche>Architectures parallèles</recherche>
</prof>
<prof>
<nom>Julien Chiasson</nom>
<bureau>RR-D224</bureau>
<courriel>julien.chiasson@umoncton.ca</courriel>
<cours>Infographie</cours>
<recherche>Méthodes numériques</recherche>
</prof>
<prof>
<nom>Eric Hervet</nom>
<bureau>RR-D226</bureau>
<courriel>eric.hervet@umoncton.ca</courriel>
<cours>Multimédia</cours>
<recherche>Traitement d’images</recherche>
</prof>
<prof>
<nom>Christian Kant</nom>
<bureau>RR-R119-1</bureau>
<courriel>christian.kant@umoncton.ca</courriel>
<cours>Architectures de réseaux</cours>
</prof>
<prof>
<nom>Mustapha Kardouchi</nom>
<bureau>RR-D232</bureau>
<courriel>mustapha.kardouchi@umoncton.ca</courriel>
<cours>Applications client-serveur</cours>
<recherche>Imagerie médicale</recherche>
</prof>
<prof>
<nom>Tang-Ho Lê</nom>
<bureau>RR-D222</bureau>
<courriel>tang-ho.le@umoncton.ca</courriel>
<cours>Développement logiciel</cours>
Éric Hervet - 11/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
<recherche>Programmation phonétique</recherche>
</prof>
<prof>
<nom>Chadia Moghrabi</nom>
<bureau>RR-D224</bureau>
<courriel>chadia.moghrabi@umoncton.ca</courriel>
<cours>Intelligence artificielle</cours>
<recherche>Génération conceptuelle</recherche>
</prof>
<!-- Etc.-->
</liste_profs> <!-- Balise de fermeture -->
￿ Affichage dans Netscape 6+ ou Firefox 2+ Internet Explorer 5.5+
￿ Mise en forme avec une feuille de style CSS (Cascading Style Sheet):profs.css.
II.3.
Règles de base
￿ Un document XML doit avoir un et un seul élément racine.
￿ Les éléments doivent être correctement emboîtés (pas de chevauchement de balises).
￿ Tout élément doit avoir une balise d’ouverture et une balise de fermeture.
￿ Le nomd’élément doit être strictement identique dans les balises d’ouverture et de fermeture.
￿ Les noms d’éléments sont sensibles àla casse.
￿ Les noms d’éléments doivent commencer par une lettre ou un souligné(_) suivis de plusieurs lettres,
chiffres,points (.),tirets (-) ou soulignés (_).
￿ Les noms d’éléments commençant par XML (toute combinaison m ajuscules/minuscules) sont réservés
àdes fins de standardisation.
￿ Un document XML respectant toutes ces règles est dit bien formé.
￿
Un document XML doit être bien formé
.
￿ Pour vérifier qu’un document XML est bien formé,il existe plusieurs outil s,la plupart gratuits
(http://www.w3.org/XML/Schema.html).
Par exemple le « validateur »de Microsoft est disponible àl’ adresse
http://msdn.microsoft.com/downloads/samples/Internet/xml/xml_validator/sample.a
Éric Hervet - 12/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
II.4.
Contenu des éléments
￿ Les caractères non autorisés sont <,&,]]> et les caractères accentués ( é,è,ç,à,ù,etc.) si on ne
spécifie pas de méthode d’encodage spécifique.
￿ Les accents sont codés (ex.è= &#232;,é= &#233;etc.).
￿ Les éléments peuvent s’emboîter a priori selon une profondeur illimitée.Ex.:
<prof>
<nom>
<premier_nom>
<prenom>Eric<prenom>
<autre_prenom>Zebulon<autre_prenom>
<autre_prenom>Jean-Edouard<autre_prenom>
</premier_nom>
<deuxieme_nom>Hervet</deuxieme_nom>
</nom>
</prof>
￿ Une section CDATA permet de placer du texte libre oùseule la chaîne ]]> et les accents sont interdits.
Ex.:
<nom>
<![CDATA[<Eric> & <Christian>]]>
</nom>
￿ On peut définir des éléments vides (éléments sans contenu).
Ex.:<bureau> </bureau>
Écriture équivalente:<bureau/>
II.5.
Attributs des éléments
￿ Les attributs sont des données associées àun élément mais n’apparaissant normalement pas àl’af-
fichage.
￿ On définit des attributs par des couples nom= valeur dans la balise d’ouverture d’un élément.
Ex.:<bureau campus="Moncton"batiment="RR">D226</bureau>
￿ Des attributs peuvent être associés àun élément vide.
Ex.:<photo source="tronche.jpg"/>
II.6.
Documents XML valides
￿ Un document XML valide est un document bien forméassociéàune DTD(Document-Type Definition )
qui définit sa structure (règles grammaticales).
Éric Hervet - 13/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
￿ Tous les éléments du document XML doivent figurer dans la DTD.
￿ Une DTD est un prototype standard de document.
◮ Ça permet au navigateur de vérifier qu’un document XML est val ide.
◮ Ça assure l’uniformitéd’un groupe de documents XML similai res.
II.7.
Spécification d’une DTD
￿ Une DTD est un ensemble de règles de grammaire sous forme EBNF (Extended Backus-Naur Form).
￿ Une DTD peut être incluse directement dans un document XML ( DTD interne).
￿ Généralement on préfère la placer dans un fichier (.dtd) séparé( DTD externe).Cela permet la
réutilisation d’une même DTD pour plusieurs documents XML.
￿ L’inclusion d’un fichier DTD externe se fait dans le prologue:
<!DOCTYPE nom_element_document SYSTEM"URL">
Ex.:<!DOCTYPE liste_profs SYSTEM"liste_profs.dtd">
￿ La déclaration du type d’un élément se fait par:
<!ELEMENT nom contenu>
Ex.:<!ELEMENT cours (#PCDATA)>
￿ Les contenus possibles d’un type d’élément sont:
◮ Des données de type chaîne de caractères:(#PCDATA).
◮ Un contenu vide:EMPTY.
◮ N’importe quel contenu (légal):ANY.
◮ Une séquence (ordonnée):(elt
1
,elt
2
,...,elt
n
).
Ex.:<!ELEMENT prof (nom,bureau,courriel,cours)>
Remarque
:les sous-éléments doivent être définis àleur tour.
◮ Un choix:(elt
1
| elt
2
|...| elt
n
).
Ex.:<!ELEMENT url (http | ftp | mailto | telnet)>
Remarque
:les sous-éléments doivent être définis àleur tour.
￿ On peut spécifier la multiplicité(fréquence) des éléments:
◮ 0 ou 1 occurrence:?
◮ 1 ou plusieurs occurrences:+
◮ 0 ou plusieurs occurrences:
*
◮ Ex 1:un élément MONTAGNE avec un ou plusieurs noms et une hauteur optionnelle
<!ELEMENT montagne (nom+,hauteur?,pays)>
◮ Ex 2:un élément montagne avec des sous-éléments àoccurrences multiples
<!ELEMENT montagne (nom,hauteur,pays)
*
>
￿ Les sous-éléments peuvent être emboîtés:
Éric Hervet - 14/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
<!ELEMENT montagne (nom,hauteur,(region | province | pays)) >
￿ Exemple complet:liste_profs.dtd
<!ELEMENT liste_profs (prof)+>
<!ELEMENT prof (premier_nom,dernier_nom,bureau,courriel+,cours+,recherche+)>
<!ELEMENT premier_nom (#PCDATA)>
<!ELEMENT dernier_nom (#PCDATA)>
<!ELEMENT bureau (#PCDATA)>
<!ELEMENT courriel (#PCDATA)>
<!ELEMENT cours (#PCDATA)>
<!ELEMENT recherche (#PCDATA)>
￿ La déclaration d’une liste d’attributs se fait par:
<!ATTLIST nom_élément nom_attribut type_attribut valeur _défaut>.Ex.:
<!ATTLIST bureau campus CDATA"Moncton"
batiment CDATA#REQUIRED>
￿ La définition d’un attribut doit contenir:
◮ Le nomde l’attribut.
◮ Son type.
◮ Une valeur par défaut (#REQUIRED = aucune,#FIXED = valeur fixe).
￿ Les types possibles d’un attribut sont:
◮ Chaîne de caractères:CDATA
◮ Type “tokenizé”:
• ID:l’attribut doit avoir une valeur unique dans chaque élémen t.
• IDREF/IDREFS:la valeur de l’attribut doit correspondre àla (aux) valeur s d’un (de plusieurs)
autre(s) attribut(s) de type ID.Pour plusieurs attributs,séparer les valeurs par des espa ces.
◮ Type énuméré:liste de valeurs possibles
Ex.:<!ATTLIST bureau campus (Moncton | Edmundston | Shippagan)
"Moncton">
II.8.
Entités
￿ Une entitéest une constante définie dans une DTD et référençable partou t dans l’élément racine d’un
document XML (∼macro-définition).
￿ La définition (dans la DTD) se fait par:
<!ENTITY nom valeur>
Ex.:<!ENTITY domaine"umoncton.ca">
￿ La référence àune entité(dans un document XML) se fait par:&nom;
Ex.:<courriel>hervete@&domaine;</courriel>
Éric Hervet - 15/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
II.9.
Affichage d’un document XML
￿ Méthode 1
«Affichage direct »dans Internet Explorer:affichage du source XML avec possib ilitéde “dérouler” ou
“enrouler” les éléments (symboles +et −) (Fig.3).
FIGURE 3 – Affichage direct d’un document XML dans Internet Explorer 5.01+.
￿ Méthode 2
Utilisation d’une feuille de style en cascade (CSS,Cascading Style Sheets) (Fig.4).
Les spécifications sont données àl’adresse http://www.w3.org/TR/REC-CSS2.
◮ Définition de la feuille de style (fichier.css).Ex.:
prof {display:block;margin-top:12pt;font-size:12pt}
Éric Hervet - 16/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
nom {font-weight:bold}
courriel {font-style:italic}
• Un fichier.css contient des règles de style constituées d’un sélecteur qui indique l’élément
auquel elle s’applique,et d’une ou plusieurs propriétés ainsi que leurs valeurs respectives.Un
couple propriété:valeur forme une déclaration.
Syntaxe:
sélecteur {propriété
1
:valeur
1
;...propriété
n
:valeur
n
}
• Ex.:
h1 { font-weight:bold;
font-size:12pt;
line-height:14pt;
font-family:arial;
font-variant:normal;
font-style:normal;}
Éric Hervet - 17/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
• Si l’on trouve par exemple une ligne de code HTML de la forme:
<h1>Le titre d’un document est <em>très</em> important</h 1>
et que rien n’a étédéfini dans le fichier.css pour l’élément <em>,le mot en italique très hérite
automatiquement des propriétés de son élément parent (<h1>).
• Pour définir un style par défaut pour tout un document il suffit donc de définir l’élément parent à
tous les autres,c’est-à-dire l’ élément racine (en HTML:<body>).
◮ Liaison de la feuille de style au document XML:
<?xml-stylesheet type="text/css"href="profs.css"?>
FIGURE 4 – Affichage d’un document XML avec une feuille de style en cas cade (CSS).
Éric Hervet - 18/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
Styles
Nom Famille de police Description
Empattement Times,Times New Roman,
Palatino
les “pattes” améliorent la lisibilité
Sans empatte-
ment
Geneva,Helvetica,Verdana,
Arial
caractère massif,souvent utilisépour les titres
Monospace Courier,Courier New,Amer-
ican Typewriter
type machine àécrire,les caractères ont une largeur
fixe
Cursive ZapfChancery police imitant l’écriture manuscrit e
Fantasy Western,Animal,Wingdings texte avec effets spéci aux
Exemple:
texte { font-family:"Courier New"}
Valeurs de l’attribut font-size
Valeur Explication Exemples
Terme les termes constants définis-
sent le format
xx-small,x-small,small,medium,large,
x-large,xx-large
Relation le corps est défini relative-
ment àla taille initiale
larger,smaller
Pourcentage le corps augmente ou diminue
du pourcentage indiqué
150%,75%
Valeur le corps est défini par une
constante
12pt,10px,20em
Exemple:
titre { font-size:medium }
Valeurs de l’attribut font-weight
Valeurs relatives Valeurs absolues
lighter,normal,bold,bolder 100,200,300,400,500,600,700,800,900
Exemple:
cours,courriel { font-size:medium;
font-weight:bold }
Éric Hervet - 19/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
Valeurs de l’attribut text-decoration
Valeur possible Description
none pas de ligne
underline texte souligné
overline texte surligné
line-through texte barré
blink texte clignotant
Valeurs de l’attribut vertical-align
Valeur possible Description
baseline alignement du texte sur la ligne de base
sub texte en indice
super texte en exposant
top texte positionnéen haut
middle texte centréverticalement
bottom texte positionnéen bas
text-top texte alignésur la ligne supérieure
text-bottom texte alignésur la ligne inférieure
pourcentage décalage relatif expriméen pourcentage
Valeurs de l’attribut text-align
Valeur possible Description
left alignement àgauche
right alignement àdroite
center texte centré
justify texte justifié
Couleurs courantes
Couleur Valeur hexadécimale Valeur décimale Valeur en pour centage
Rouge#FF0000 rgb(255,0,0) rgb(100%,0%,0%)
Vert#00FF00 rgb(0,255,0) rgb(0%,100%,0%)
Bleu#0000FF rgb(0,0,255) rgb(0%,0%,100%)
Blanc#FFFFFF rgb(255,255,255) rgb(100%,100%,100%)
Noir#000000 rgb(0,0,0) rgb(0%,0%,0%)
Gris moyen#999999 rgb(153,153,153) rgb(60%,60%,60%)
Brun#996633 rgb(153,102,51) rgb(60%,40%,20%)
Violet clair#FFCCFF rgb(255,204,255) rgb(100%,80%,100%)
Rose#FFCCCC rgb(255,204,204) rgb(100%,80%,80%)
Orange#FFCC00 rgb(255,204,0) rgb(100%,80%,0%)
Éric Hervet - 20/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
Valeurs de l’attribut background-repeat
Valeur possible Description
repeat image d’arrière-plan disposée en mosaïque
no-repeat image d’arrière-plan pas répétée
repeat-x image d’arrière-plan répétée horizontalement
repeat-y image d’arrière-plan répétée verticalement
Valeurs de l’attribut list-style-type
Valeur possible Description
disc cercle plein
circle cercle vide
square carréplein
decimal chiffres arabes
lower-roman petits chiffres romains (i,ii,iii,iv,...)
upper-roman grands chiffres romains (I,II,III,IV,...)
lower-alpha liste alphabétique avec minuscules (a,b,c,d,...)
upper-alpha liste alphabétique avec majuscules (A,B,C,D,...)
none pas de symbole de numérotation
￿ Méthode 3
Utilisation d’une feuille de style XSL(eXtensible Stylesheet Language):modèle de document ( template)
écrit en XML
(Fig.5).
◮ Définition de la feuille de style (fichier.xsl).Ex.:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<h1>Liste des profs du departement d’informatique</h1>
<xsl:for-each select="liste_profs/prof">
<em>Nom:</em> <xsl:value-of select="nom"/> <br/>
<em>Bureau:</em> <xsl:value-of select="bureau"/> <br/>
<em>Courriel:</em> <xsl:value-of select="courriel"/> <br/>
<em>Cours:</em> <xsl:value-of select="cours"/> <br/>
<em>Domaine de recherche:</em> <xsl:value-of select="recherche"/>
<xsl:for-each>
<xsl:template>
<xsl:stylesheet>
◮ Liaison de la feuille de style au document XML:
<?xml-stylesheet type="text/xsl"href="profs.xsl"?>
◮ Voir http://www.w3.org/TR/2001/REC-xsl-20011015/
Éric Hervet - 21/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
FIGURE 5 – Affichage d’un document XML avec une feuille de style XSL.
◮ Le XSLT (eXtensible Stylesheet Language for Transformations) est un sous-ensemble du XSL qui four-
nit un mécanisme de transformation de la structure XML,soit en une autre structure XML,soit en du
HTML,soit en un nombre arbitraire d’autres formats de texte (par exemple SQL).Il s’agit bien d’un
véritable langage avec ses structures de contrôle du type if,for ou case.Exemples:
• xml_mp3.xml avec style xsl_mp3.xsl:Balise <xsl:for-each...>.
• xml_mp3.xmlavec style xsl_filter.xsl:Balise <xsl:for-each...> avec possibilitéde
sélection.
• xml_mp3.xml avec style xsl_sort.xsl:Balise <xsl:sort...>.
• xml_mp3.xml avec style xsl_choose.xsl:Balise <xsl:when...>.
• Autre possibilitédu langage XSL:L’appel de fonction avec o u sans paramètre ( param.xsl).
￿ Méthode 4
Liaison de données pour affichage depuis une page HTML (Inter net Explorer uniquement?) (Fig.6).
◮ Liaison d’éléments HTML aux éléments XML.Ex.:affichage dan s un tableau:
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"xml:lang="fr">
Éric Hervet - 22/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
<head>
<title>Liste des profs du département d’informatique</ti tle>
</head>
<body>
<h1>Liste des profs du département d’informatique</h1>
<xml id="liste_profs"src="profs.xml"></xml>
<table datasrc="#liste_profs"border="1">
<thead>
<th>Nom</th>
<th>Bureau</th>
<th>Courriel</th>
<th>Cours</th>
<th>Recherche</th>
</thead>
<tr>
<td> <span datafld="nom"></span></td>
<td> <span datafld="bureau"></span></td>
<td> <span datafld="courriel"></span></td>
<td> <span datafld="cours"></span></td>
<td> <span datafld="recherche"></span></td>
</tr>
</table>
</body>
</html>
Éric Hervet - 23/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
◮ Liaison du document XML àla page HTML:
<xml id="liste_profs"src="profs.xml"></xml>
FIGURE 6 – Affichage d’un document XML depuis une page HTML.
￿ Méthode 5
Il existe aussi la possibilitéd’utiliser le langage JAVASCRIPT avec des objets ActiveXObject pour
afficher le contenu des éléments ainsi que de leurs attributs.
Éric Hervet - 24/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
III.PHP:HYPERTEXT PREPROCESSOR
III.1.
Introduction
1994:Personal Home Page
http://www.php.net
Langage de script
côtéserveur
inclus dans (X)HTML
(embedded,server-side scripting language)
III.1.1.Àquoi ça sert?
Langage plus “convivial” que ses compères:
scripts CGI (Perl,C),ASP,JSP,JavaScript...(CFML?)
Intérêt principal:interaction avec des bases de données (pages web
dynamiques
).
Exemple:
mysql.php
III.1.2.Fonctionnement
PHP
génère du code (X)HTML
et l’envoie au client qui a fait une requête http.
Exemple:
allo.php
III.2.
Principes de base
Toute instruction PHP se place entre <?php et?> et chaque instruction se termine par
un;
La fonction phpinfo() permet d’avoir des informations sur la version de PHP,le navi-
gateur utilisé,le type de serveur,les variables d’environ nement,etc.
Les fonctions echo() et print() (équivalentes) permettent d’afficher du texte dans la
page du navigateur.Ex.:print("Hello,World!");
Le texte en paramètre peut contenir des balises (X)HTML.
Ex.:print("<strong><center>Hello,World!</center></strong>");
Si l’on doit utiliser des guillemets"àl’intérieur du texte,il faut les déspécialiser avec un
antislash:\".
Éric Hervet - 25/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
Une ligne de commentaire commence par//ou#et se termine àla fin de la ligne.
Pour mettre un bloc de plusieurs lignes en commentaires,l’encadrer par/
*
et
*
/(syntaxe
C).
III.3.
Variables
III.3.1.Syntaxe
En PHP toute variable commence par $ suivi du nom de la variable.Le nom doit com-
mencer par une lettre minuscule ou majuscule ou le caractère _ suivis d’un nombre quel-
conque de lettres,de chiffres ou de _.Les noms de variables sont sensibles àla casse.
III.3.2.Types
En PHP il n’est pas nécessaire de déclarer le type d’une variable.Une variable
est définie la première fois qu’on l’utilise.Les trois grand s types de variables en PHP
sont les nombres,les chaînes et les tableaux.Les nombres peuvent être entiers ou réels.
PHP est un langage orientéobjet,donc il est possible de définir des classes avec des
attributs (publics ou privés),des méthodes (publiques,privées,constructeurs,etc.),et
de créer des objets qui sont des instances de classes (le fameux mot-clef new)...
Constantes
On utilise la fonction define() pour définir des constantes:
define ("Pi",3.14159);
Contrairement aux variables,on ne met pas le $ pour appeler une constante.
Nombres
Les nombres sont signés.
Chaînes
Les chaînes (de caractères) se notent entre apostrophes ’ ou guillemets".Les chaînes
peuvent contenir tout caractère ainsi que des noms de variab les,qui sont substituées par
leurs valeurs.Ex.:"Bonjour $nom"
Tableaux
En PHP un tableau peut contenir des objets de différents type s (nombres,chaînes,objets
prédéfinis ou créés par le programmeur,etc.).
Éric Hervet - 26/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
III.3.3.Affectations
L’affectation se fait avec le symbole =.
$nombre = 1;
$flottant = 3.14156256;
$chaine ="Bonjour toi";
Le type d’une variable peut àtout moment être changé.
$var = 1;
$var ="bonjour";
...mais tout bon programmeur ne fait jamais ça.
Il existe une manière (peu utile) de “déclarer” le type des va riables:
$nombre = (integer) 1;
$var = (string)"bonjour";
III.3.4.Variables prédéfinies
Il existe des variables prédéfinies (système d’exploitation du serveur,du client,
module PHP,etc.).Exemples:$_SERVER[’SERVER_NAME’] (nom du serveur),
$_SERVER[’SERVER_SOFTWARE’](type du serveur),$_SERVER[’PHP_SELF’]
(page courante),etc.
Voir
laboratoire#1
(première partie).
III.4.
Formulaires
Un formulaire (X)HTML peut être traité
côtéserveur par un script PHP:
<form action=’traite.php’ method=’post’>
<!-- Tout composant utile au formulaire:
Champs de saisie,champs pour mot de passe,zones de texte,
listes de sélection,cases àcocher,etc.
ET SURTOUT:un bouton pour soumettre le tout!
-->
<input type=’submit’ value=’Envoyer!’>
</form>
Exemple:
formulaire.html
(Illustrer la différence entre get et post).
Éric Hervet - 27/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
III.4.1.Get ou Post
Avec la méthode get,les informations du formulaire sont envoyées comme arguments
de l’URL.Avec post elles sont envoyées séparément.
III.4.2.Réception des données
...côtéserveur.
Exemple:
traite.php
Pour affecter une valeur àune variable il y a finalement trois manières:directement dans
le code PHP ($nom ="eric"),indirectement par l’intermédiaire d’un formulaire
(get ou post),ou comme argument d’un script PHP (Ex.:
param.php
).
Remarque:àla différence de ColdFusion,si on omet l’argument d’un sc ript paramétré,
cela ne produit pas d’erreur.
III.5.
Arithmétique
III.5.1.Opérations de base
+,-,
*
,/
<?php
$Cout = 2000.00;
$Taxe = 0.15;
$CoutTotal = $Cout
*
$Taxe;
print("Vous nous devez\$$CoutTotal\n<p>");
?>
III.5.2.Formatage
Il existe la fonction printf() comme en C.
Le format %f permet de spécifier le nombre de chiffres voulus avant et après le point
décimal:
printf("Vous nous devez %1.2f\n<p>",$CoutTotal);
/
*
Au moins 1 chiffre avant le.et exactement 2 après
*
/
Éric Hervet - 28/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
III.5.3.Incrémentation/décrémentation
Même syntaxe qu’en C/C++/JAVA:
$compteur++;//même chose que $compteur = $compteur + 1;
$variable--;//même chose que $variable = $variable - 1;
III.5.4.Opérateurs multiples
Attention aux priorités des opérateurs −→parenthésage
$nombre = 10 - 4/2;
III.5.5.Fonctions mathématiques
Il existe un certain nombre de fonctions mathématiques prédéfinies
round(),floor(),ceil(),abs(),etc.
http://www.php.net/manual/fr/ref.math.php
III.6.
Chaînes de caractères
III.6.1.Chaînes tronquées
La fonction trim() élimine automatiquement les espaces en début et fin de chaîne.
$chaine ="salut toi";
$chaine = trim($chaine);
//$chaine est maintenant égale à"salut toi"
La fonction trim() sert souvent lorsqu’on récupère des données de formulaires.
Il existe aussi les fonctions ltrim() et rtrim() pour éliminer les espaces respective-
ment en début et fin de chaîne.
III.6.2.Chaînes concaténées
Le.permet de concaténer (mettre bout-à-bout) deux chaînes.
$Nom = $PremierNom."".$DernierNom;
Éric Hervet - 29/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
III.6.3.Chaînes d’encodage et de décodage
La fonction urlencode() permet de formater une chaîne pour qu’elle puisse être
passée comme argument d’une URL (script php,asp,cfm,etc.).Les espaces sont rem-
placés par des + et les caractères spéciaux (lettres accentu ées,apostrophes,etc.) par des
codes.
$nom = urlencode($nom);
print("<p><a href=\"bienvenue.php?nom=$nom\">
lien vers la page de bienvenue</a>");
Exemples:
encodage.php
,
bienvenue.php
III.6.4.Chaînes de cryptage et de décryptage
La fonction crypt() permet de crypter des données (ex.:mots de passe),àcondition
que l’administrateur du serveur ait activéle droit de crypt age.La fonction decrypt()
permet de décrypter.
III.6.5.Manipulation de chaînes de caractères
strtok(),substr(),strlen(),etc.
http://www.php.net/manual/fr/ref.strings.php
Exemple simple de générateur de mot de passe:
genpass.php
III.7.
Structures de contrôle
III.7.1.if
if (condition)
{
instruction(s);
}
• Accolades obligatoires pour plus que deux instructions
• Possibilitéd’imbrications
• La fonction isset() permet de savoir si une variable existe ou non
• Test d’égalité:avec l’opérateur
==
• Opérateurs logiques:AND (&&),OR (||)
Éric Hervet - 30/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
III.7.2.else
if (condition)
{ instruction.s1;}
else
{ instruction.s2;}
III.7.3.elseif
if (condition1)
{ instruction.s1;}
elseif (condition2)
{ instruction.s2;}
else
{ instruction.s3;}
III.7.4.switch
switch ($variable)
{
case"valeur1":
instruction.s1;
break;
case"valeur2":
instruction.s2;
break;
default:
instruction.s3;
break;
}
Éric Hervet - 31/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
III.7.5.while
while (condition)
{
instruction.s;
}
do
{
instruction.s;
}
while (condition);
III.7.6.for
for(expression initiale;condition;expression finale)
{
instruction.s;
}
III.8.
Tableaux
III.8.1.Création,ajouts,accès aux éléments
La fonction array() permet de créer un tableau.
$mon_tableau = array(’rouge’,’vert’,’bleu’);
//ou bien:
$mon_tableau = array(1 => ’rouge’,2 => ’vert’,3 => ’bleu’);
Lorsqu’un tableau existe,on peut lui ajouter des items àtout moment:
$mon_tableau[] = ’noir’;
$mon_tableau[] = ’blanc’;
On peut aussi spécifier un indice d’un itemàmodifier (ou ajouter):
$mon_tableau[1] = ’rouge vin’;
Éric Hervet - 32/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
La fonction count() retourne le nombre d’éléments d’un tableau.
Exemple:
tableau.php
La fonction array_merge() permet de concaténer deux tableaux.
III.8.2.Accès aux éléments
La fonction each() crée un tableau des indices (keys) et des valeurs (values) d’un
tableau.
Exemple:
parcours.php
III.8.3.Tris
On peut trier selon les valeurs ou les indices (alphabétiquement ou numériquement),en
gardant ou non la correspondance valeur ←→indice.
Les fonctions sort() et rsort() permettent de trier selon les valeurs respectivement
en ordres croissant et décroissant.
Pour trier les valeurs en gardant la correspondance valeur ↔indice,utiliser les fonctions
asort() et arsort().
Pour trier les indices en gardant la correspondance valeur ↔indice,utiliser les fonctions
ksort() et krsort().
La fonction shuffle() permet de réorganiser aléatoirement un tableau.
Exemple:
tris.php
III.8.4.Conversions chaînes ←→tableaux
La fonction implode() transforme un tableau en chaîne.
$chaine = implode($séparateur,$tableau);
La fonction explode() transforme une chaîne en tableau.
Éric Hervet - 33/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
$tableau = explode($séparateur,$chaine);
• On a souvent besoin de convertir un tableau en chaîne pour pou voir le passer en
argument d’une URL ou pour le stocker dans une base de données.
• On a souvent besoin de convertir une chaîne en tableau lorsqu ’on a une chaîne d’items
séparés par des délimiteurs (,;espace etc.)
Exemples:
liste.html
,
alphabetise.php
III.8.5.Création àpartir d’un formulaire
La récupération des données d’un formulaire par un script PH P se fait sous forme de
tableau:
• $_POST[’nom_d_un_champ’] si le formulaire est soumis en méthode post.
• $_GET[’nom_d_un_champ’]si le formulaire est soumis en méthode get.
Exemples (déjàvus):
formulaire.html
,
traite.php
III.8.6.Tableaux multidimensionnels
Un élément de tableau peut non seulement être un nombre ou une chaîne mais aussi un
tableau.
$t1 = array(’pommes’,’bananes’,’oranges’);
$t2 = array(’porc’,’boeuf’,’poulet’);
$t3 = array(’fruits’ => $t1,
’viandes’ => $t2,
’dessert’ =>"forêt noire",
’prix’ => 15.00);
L’élément $t3[’fruits’][1] est ’bananes’.
Éric Hervet - 34/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
III.9.
Expressions régulières
III.9.1.Motifs simples
Table des méta-caractères:
Expression
Chaîne filtrée
.
Tout caractère ( un seul)
ˆa
Motif commençant par a
a$
Motif finissant par a
a+
Au moins un caractère a
a?
Zéro ou un caractère a
\n
Retour àla ligne
\t
Tabulation
\
Échappement (“déspécialisation”)
(ab)
a suivi de b
a|b
a ou b
a{2}
aa
a{1,}
a,aa,aaa,etc.
a{1,3}
a,aa,aaa
[a-z]
Toute minuscule
[A-Z]
Toute majuscule
[0-9]
Tout chiffre
Pour inclure des caractères spéciaux tels que ˆ,.,[,],$,(,),|,
*
,?,{,} ou\il faut
les déspécialiser avec le caractère\.
En PHP il existe deux fonctions pour savoir si une chaîne resp ecte une expression
régulière ou non:
ereg("motif","chaîne");//sensible àla casse
eregi("motif","chaîne");//pas sensible àla casse
Exemples:
formotif.html
,
verifmotif.php
Éric Hervet - 35/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
III.9.2.Motifs plus complexes
Par regroupements on peut définir des motifs plus complexes:
• (abc){3} filtre par exemple abcabcabc
• (bon)+ filtre bonbon
• (oui)|(non) filtre oui ou non
En PHP il existe des classes de motifs prédéfinis:
Classe
Chaîne filtrée
[[:alpha:]]
Toute lettre
[[:digit:]]
Tout chiffre
[[:alnum:]]
Tout chiffre ou lettre
[[:space:]]
Tout espace
[[:upper:]]
Toute majuscule
[[:lower:]]
Toute minuscule
[[:punct:]]
Tout caractère de ponctuation
Le programmeur peut aussi former ses propres classes:
• [aeiouy] filtre toute voyelle
• [A-Z]{3} filtre abc,def,etc.
• (oui)|(non) filtre oui ou non
Exemple de motif pour un code postal canadien:
"^[A-Z][0-9][A-Z] [0-9][A-Z][0-9]$"
Exemple de motif plus précis pour une adresse courriel:
"^([0-9a-z]+)([0-9a-z\.-_]+)@([0-9a-z\.-_]+)\.([0-9a-z]+)"
III.9.3.Filtrage et remplacement
Les fonctions ereg_replace("motif","remplace","chaîne") et
eregi_replace() permettent de filtrer une expression et de la remplacer par
une expression similaire ou du texte spécifique.
Exemples:
formotif2.html
,
remplacemotif.php
Éric Hervet - 36/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
III.10.
Fonctions
III.10.1.Création et utilisation de fonctions simples
Création:
function nom_de_fonction()
{
instruction.s;
}
Utilisation:
nom_de_fonction();
Exemple:
creepass.php
III.10.2.Fonctions avec arguments
Création:
function nom_de_fonction($arg1,$arg2,...,$argn)
{
instruction.s;
}
Utilisation:
nom_de_fonction($var1,$var2,...,$varn);
ou
nom_de_fonction("valeur1","valeur2",...,"valeurn");
ou
nom_de_fonction("valeur1",$var2,...)
Exemple:
salut.php
Éric Hervet - 37/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
III.10.3.Fonctions retournant une valeur
Création:
function nom_de_fonction($arg1,$arg2,...,$argn)
{
instruction.s;
return $valeur;
}
Utilisation:
$valeur = nom_de_fonction($var1,$var2,...,$varn);
Exemple:
taxes.php
III.10.4.Variables globales
Par défaut la durée de vie d’une variable est celle du bloc ( {...}) àl’intérieur duquel
elle se trouve.Avec le mot-cléglobal on peut spécifier qu’une variable locale prend sa
valeur d’une variable de l’extérieur du bloc courant.
function nom_de_fonction($arg1,$arg2,...,$argn)
{
global $variable;
instruction.s;
[return $valeur;]
}
III.10.5.Arguments par défaut
function nom_de_fonction($arg1,$arg2 ="valeur2")
{
instruction.s;
[return $valeur;]
}
Exemple:la fonction
function carre($n ="2")
{ return $n
*
$n;}
Éric Hervet - 38/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
peut s’appeler de deux manières:
$resultat = carre();
//ou bien
$resultat = carre("3");
III.11.
Fichiers et répertoires
III.11.1.Permissions
Sous Unix/Linux et Windows NT,chaque fichier possède des per missions (droits) pour
le propriétaire (u) du fichier,les utilisateurs du même groupe (g) et les autres (o).
L’ouverture d’un fichier peut se faire selon différents modes (fonction fopen()):
Mode
Permission
r
Lecture seulement
w
Écriture
a
Ajout àla fin du fichier (création s’il n’existe pas)
r+
Lecture et écriture
w+
Lecture et écriture - création s’il n’existe pas sinon écras ement des données
a+
Lecture et écriture - création s’il n’existe pas sinon ajout des données
III.11.2.Écritures
La fonction fwrite() permet d’écrire des données dans un fichier.
$descripteur_de_fichier = fopen($nom_de_fichier,"mode");
fwrite($descripteur_de_fichier,"données àécrire");
fclose($descripteur_de_fichier);
Exemples:
formfich.html
,
ecritfich.php
III.11.3.Lectures
La fonction file() permet de lire les données d’un fichier et de les placer dans un
tableau.
Éric Hervet - 39/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
$nom_de_fichier ="data.txt";
$descripteur_de_fichier = fopen($nom_de_fichier,"mode");
$tableau = file($descripteur_de_fichier,"données àécri re");
fclose($descripteur_de_fichier);
Chaque itemdu tableau correspond àune ligne du fichier àlire.
III.11.4.Répertoires
La fonction mkdir() permet de créer un répertoire ( côtéserveur ).
mkdir("chemin","permissions");
Les permissions sont sous forme d’un 0 suivi de 3 chiffres (ex.:"0666").
III.11.5.Uploads
On peut àcertaines conditions envoyer des fichiers au serveu r (upload).Pour ça il
faut inclure àla balise <form> l’attribut enctype="multipart/form-data"
pour indiquer qu’on va soumettre un ou des fichier.s et inclur e un composant <input
type="file"name="nom"> pour indiquer un fichier àuploader (bouton Browse).
III.11.6.Renommage et suppression
La fonction rename() permet de renommer un fichier ou un répertoire.
rename("ancien_nom","nouveau_nom);
La fonction filesize() permet de connaitre la taille d’un fichier en octets ( bytes).
$nombre = filesize("nom_de_fichier");
La fonction unlink() permet d’effacer un fichier ou un répertoire.
unlink("nom_de_fichier");
III.12.
Bases de données
III.12.1.Connection àune base de données
PHP offre des fonctions de connection àla plupart des SGBD:DBASE,FILEPRO,
MSQL,MYSQL,ORACLE,POSTGRESQL,SYBASE,etc.
Éric Hervet - 40/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
Pour des SGBD tels que ACCESS ou SQL SERVER pour lesquels PHP n’a pas de fonc-
tion spécifique,il faut utiliser des fonctions ODBC (Open DataBase Connectivity) asso-
ciées au pilote ODBC de même type.
III.12.2.MYSQL
MySQL est un SGBD relationnel.Le serveur MySQL est très rapide,« multi-threadé»,
multi-utilisateur et robuste.Il est destinéaux missions s tratégiques et aux systèmes de
production àforte charge,ainsi qu’àl’intégration dans de s logiciels déployés àgrande
échelle.MySQL est une marque déposée de MySQL AB
6
.
Le logiciel MySQL est disponible sous forme de deux licences:Les utilisateurs peuvent
choisir entre MySQL Open Source (logiciel libre),ou bien acheter une licence commer-
ciale auprès de MySQL AB.
MySQL fait partie du fameux LAMP:Linux/Apache/MySQL/PHP.Le couple
PHP/MySQL est très utilisépour les sites web et proposépar l a majoritédes hébergeurs.
Plus de la moitiédes sites web fonctionnent sous Apache,qui est le plus souvent utilisé
conjointement avec PHP et MySQL.
La première version de MySQL est sortie le 23 mai 1995.Aujour d’hui la version 6.0 est
en développement (stade Alpha).La dernière version stable est 5.1.
Point fort:Depuis la version 5,il est possible d’utiliser le langage procédural PL/SQL
d’Oracle afin d’utiliser des procédures et fonctions stockées ainsi q ue des déclencheurs
(triggers).MySQL supporte la norme SQL-2 (utilisation des JOIN),ce qui en fait un
SGBD sûr puisque la conformitéàcette norme garantit sa comp atibilitéavec les requêtes
normalisées.
Point faible:Son absence de support des transactions et d’une gestion de l’intégritédes
tables automatique (sauf en utilisant certains moteurs comme InnoBD) ne lui permet pas
d’être utilisédans des applications àdonnées particulièr ement sensibles (exemple:com-
pagnies bancaires).Cependant,ses performances étant gén éralement plus importantes que
la majoritédes autres systèmes concurrents et son prix d’im plantation nettement inférieur,
il connaît un franc succès auprès des entreprises ayant beso in d’une base de données peu
onéreuse et/ou performante.
6.MySQL AB a étéachetéle 16 janvier 2008 par Sun Microsystem s pour un milliard de dollars US.
Éric Hervet - 41/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
III.12.3.Connection àune base de données M YSQL
Les différentes étapes pour se connecter àune base de donnée s MySQL sont générale-
ment:
• Connection PHP - Serveur MYSQL:mysql_connect().
• Sélection de la base de données:mysql_select_db().
• Exécution d’une requête SQL et récupération du tableau ( àdeux dimensions ) des
tuples:mysql_query().
• Récupération d’ une ligne de tuples sous forme de tableau associatif:
mysql_fetch_array().
• Déconnection de la base de données:mysql_close().
Exemples:
mysql.php
,
essai.php
.
(Voir aussi
pgsql.php
pour une base de données POSTGRESQL).
L’adresse http://www.manuelphp.com/fonctions_mysql.phpdonne la liste
de toutes les fonctions PHP spécifiques àM YSQL.Certaines sont utiles et souvent util-
isées:
• Récupération d’une ligne de tuples sous forme d’ objet:mysql_field_object().
• Nombre de tuples (lignes) retournés par mysql_query:mysql_num_rows().
• Nombre de tuples ( lignes) affectés par une requête SQL:
mysql_affected_rows().
• Nombre de champs ( colonnes) retournés par mysql_query:
mysql_num_fields().
• Nomd’un champ (selon sa position):mysql_field_name().
• Type d’un champ (selon sa position):mysql_field_type().
• Longueur (précision) d’un champ (selon sa position):mysql_field_len().
• Nomde la table d’oùun champ spécifiéprovient:mysql_tablename().
• Etc.
III.12.4.Création d’une table
Exemple:
essai.php
Éric Hervet - 42/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
III.12.5.Insertion de données
...par formulaire web!
Exemples:
form_insert.html
,
mysql_insert.php
III.12.6.Récupération de données
Exemples (déjàvus):
mysql.php
,
essai.php
,
mysql_insert.php
.
III.13.
Cookies
III.13.1.Création et lecture
Un cookie se positionne (envoi du serveur vers le client) avec la fonction
setcookie().
setcookie("nom","valeur");
Remarques:
• Par défaut un cookie est sauvegardéjusqu’àla fermeture du n avigateur.
• Limite de 20 cookies par domaine et par utilisateur.
Exemple:
cookies.php
III.13.2.Ajout d’une variable
La fonction setcookie() peut prendre jusqu’à6 paramètres:
setcookie("nom","valeur","expiration","chemin","domaine","secure");
Exemples:
setcookie("nom","valeur",time()+3600);
/
*
pas de guillemets pour le 3ème argument
*
/
setcookie("nom","valeur",time()+3600,"/user/");
setcookie("nom","valeur",time()+3600,"","","1");
/
*
1 indique qu’une connection sécure (https) doit être utilis ée
*
/
*
(0 pour une connection non sécure)
*
/
Éric Hervet - 43/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
III.13.3.Suppression
Pour effacer un cookie il suffit de mettre une valeur nulle et/ou de spécifier une date
d’expiration dans le passé:
setcookie("nom","");
//Ou bien pour être encore plus sûr:
setcookie("nom","",time()-60);
III.14.
Applications web
III.14.1.include et require
Les fonctions include()et require()permettent d’inclure des fichiers séparés dans
un script PHP.
include("fichier.php");
require("fichier.php");
La différence entre include() et require() est que la fonction require() est
appelée quoiqu’il arrive (même dans un if avec une condition fausse!) alors que la
fonction include() peut n’être appelée que dans certains cas.
Exemples:
entete.php
,
bas.php
,
principal.php
III.14.2.Heure et date
La fonction date() permet d’afficher la date et/ou l’heure selon une grande vari étéde
formats.
date("format");
Éric Hervet - 44/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
Caractère
Format
a
am ou pm
A
AM ou PM
d
Jour du mois sur 2 chiffres (01 à31)
D
Jour de la semaine sur 3 lettres (Sun,Mon,etc.)
F
Mois écrit en entier ( January,etc.)
g
Heure au format 12 heures (1 to 12)
G
Heure au format 24 heures (0 à23)
h
Heure au format 12 heures (01 to 12)
H
Heure au format 24 heures (00 to 23)
i
Minutes (00 à59)
j
Jour du mois (1 à31)
l
Jour de la semaine écrit en entier ( Sunday,etc.)
m
Mois sur 2 chiffres (01 à12)
M
Mois sur 3 lettres (Jan,etc.)
n
Mois (1 à12)
s
Secondes (00 à59)
S
Suffixe anglais sur 2 caractères ( th,nd,rd,etc.)
t
Nombre de jour dans le mois donné( 28 à31)
U
Nombre de secondes depuis le 1er janvier
w
Jour de la semaine en chiffre (0 (dimanche) à6 (samedi))
y
Année sur 2 chiffres ( 02)
Y
Année sur 4 chiffres ( 2002)
z
Numéro du jour dans l’année ( 0 à365)
Exemple:
today.php
avec date("l F j,Y");
La fonction date()peut aussi prendre comme deuxième argument une marque de tem ps
(timestamp).Une marque de temps représente le nombre de secondes depui s le 1er jan-
vier 1970.La fonction time() renvoie ce nombre pour l’heure courante.La fonction
mktime() retourne une marque de temps pour une date et une heure donnée s comme
paramètres.
mktime(heure,minute,seconde,mois,jour,année);
Éric Hervet - 45/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
Exemple:$marque = mktime(12,30,0,12,27,1997);affecte à
$marque le nombre de secondes du 1er janvier 1970 au 27 décembre 1997,12:30.
L’appel àdate("D",$marque);renvoie alors Sat.
III.14.3.Entêtes HTTP
La fonction header() permet de gérer le transfert d’informations entre client et serveur
par protocole http.
On peut par exemple rediriger une requête cliente vers une au tre adresse avec
header("Location:page.php");
Exemple:
redirige.php
On peut également positionner un cookie avec
header("Set-cookie:nom=valeur;expires=expiration");
III.14.4.Courriel
La fonction mail() permet d’envoyer des courriels.
mail("destinataire","sujet","corps");
On peut ajouter des arguments pour indiquer l’expéditeur,l a priorité,les copies car-
bones/carbones cachées.
La fonction mail()retourne un booléen pour signifier si l’envoi s’est bien pass éou non.
Pour envoyer des fichiers joints il faut d’abord créer des classes et des objets en PHP.
Exemples:
classes.php
,
test_classes.php
http://www.php.net/manual/fr/ref.classobj.php
http://www.php.net/manual/fr/function.mail.php
III.15.
Erreurs
III.15.1.Erreurs communes
• Erreurs syntaxiques (parse error) (méfiance quant au numéro de ligne indiqué!)
Éric Hervet - 46/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
• Erreurs d’appels de fonctions,de permissions,etc.
• Erreurs de logique (!)
III.15.2.Rapport d’erreurs
La fonction error_reporting() sert àétablir pour quels types d’erreurs on aimerait
avoir des messages plus complets de la part de PHP.
Nombre
Constante
Signification
1
E_ERROR
Erreur d’exécution fatale
2
E_WARNING
Warnings (non fatals)
4
E_PARSE
Erreurs de compilation
8
E_NOTICE
Informations sur l’exécution
16
E_CORE_ERROR
Erreurs fatales àl’initialisation (PHP4)
32
E_CORE_WARNING
Warnings àl’initialisation (PHP4)
64
E_COMPILE_ERROR
Erreur fatale àla compilation (PHP4)
128
E_COMPILE_WARNING
Warnings àla compilation (PHP4)
256
E_USER_ERROR
Erreur générée par le programmeur (PHP4)
512
E_USER_WARNING
Warning du programmeur (PHP4)
1024
E_USER_NOTICE
Message d’information du programmeur (PHP4)
E_ALL
Tous les messages ci-dessus (si supportés)
Exemple:error_reporting(E_ALL);
La fonction error_log("message","type","destination") permet de
sauvegarder les messages d’erreur dans un fichier ou de les en voyer àquelqu’un par cour-
riel.
Exemple:
error_log("aïe aïe aïe","3","errors.txt");
//3 = 1 + 2 = E_ERROR + E_WARNING
III.15.3.Instruction die()
La fonction PHP die() permet d’économiser un if...else en cas d’erreur d’une
commande.Exemple:
$conn = mysql_connect($host,$login,$password)
OR die("impossible de se connecter!");
Éric Hervet - 47/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
IV.COLDFUSION
IV.1.
Généralités sur ColdFusion
IV.1.1.Introduction
￿ CFML (ColdFusion Markup Language) - 1995
◦ Description officielle du logiciel COLDFUSION:
Serveur d’applications Web
(Web application server)
◦ Langage
CFML:large
extension
de HTML (HyperText Markup Language)
￿ Pages Web
dynamiques
(créées “au vol”)
◦ Rassembler des informations de différentes sources de données (datasources) et les
visualiser grâce àun navigateur (browser)
PNO PNOM PRIX POIDS COULEUR
--------- -------------------- --------- --------- ----------
102 fauteuil 300 9 rouge
103 bureau 700 30 vert
101 fauteuil 400 7 gris
105 armoire 500 35 rouge
104 bureau 800 40 gris
107 caisson 200 12 jaune
106 caisson 200 12 gris
108 classeur 300 20 bleu
◦ Gain de temps (fini le copier-coller!)
Éric Hervet - 48/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
FIGURE 7 – Page web générée
àpartir des résultats d’une requête àune base de données.
￿ Pourquoi ColdFusion?
◦ Pas de réécriture nécessaire si la source de données est modi fiée:
Changements en temps réel
◦ Sécurité
◦ “E-Commerce” (transactions en ligne)
Éric Hervet - 49/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
￿ Collections de données (
formulaires électroniques
)
◦ Accès àdes champs (lectures) d’une base de données
◦ Sauvegardes (écritures ) dans une base de données
￿ Plus facile àgérer que:
◦ CGI (Common Gateway Interface)
La plupart des scripts CGI sont écrits en PERL (Practical Extraction and Report
Language,1987)
FIGURE 8 – Fonctionnement d’un script CGI côtéserveur.
◦ ASP (Active Server Pages,1996)
◦ PHP (Php:Hypertext Preprocessor,1994)
◦ JSP (Java Server Pages,1999)
◦ ColdFusion accepte des scripts CGI déjàécrits
◦ ColdFusion met l’accent sur la sécurité
Éric Hervet - 50/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
￿ Architecture Client/Serveur
◦ Le serveur (PC,Mac,Silicon Graphics,etc.) est connectéàInternet en permanence
et attend...de traiter des requêtes des clients
FIGURE 9 – Schéma client/serveur.
◦ Le client envoie une requête au serveur sous forme d’ URL (Uniform Resource
Locator) qui spécifie:
⋄ Quel serveur
⋄ Quel fichier àcharger ou àexécuter
⋆ Fichier ou image àcharger:téléchargement (download)
⋆ Action àexécuter par le serveur,résultat envoyéau client:scripts CGI,COLD-
FUSION
Éric Hervet - 51/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
FIGURE 10 – Architectures à2,3 et n niveaux.
◦ L’architecture àdeux niveaux (Fig.10) caractérise les systèmes clients/serveurs où
le client demande une ressource et le serveur la lui fournit directement
◦ Dans l’architecture àtrois niveaux (Fig.10),il existe un niveau intermédiaire.L’ar-
chitecture est partagée entre:
⋄ Le client:demandeur de ressources.
⋄ Le serveur d’application (appeléaussi middleware):serveur chargéde fournir la
ressource mais faisant appel àun autre serveur.
⋄ Le serveur secondaire (généralement un serveur de base de données):fournit un
service au premier serveur.
Éric Hervet - 52/101 - Automne 2011
INFO4007 S.C.Technologie de l’inforoute XML - PHP/MySQL - ColdFusion
◦ Comparaison des deux types d’architecture:
L’architecture àdeux niveaux est une architecture client/serveur oùle serveur est
polyvalent c’est-à-dire capable de fournir directement l’ensemble de s ressources de-