Title: PHP
1PHP
2Préambule - Internet
- Internet
- Réseau dinterconnexion entre deux ou
- plusieurs réseaux.
- Linternet
- Lensemble des réseaux internet utilisant le
protocole TCP / IP en respectant les standard en
vigueurs
3Préambule - Internet
- Ensemble de logiciels et de protocoles
- Basé sur larchitecture TCP/IP
- Fonctionne en mode client/serveur
- Offre un ensemble de services (e-mail, transfert
de - fichiers, connexion à distance, www, )
4Préambule - Internet
- Structure arborescente
- Réseau local (laboratoire, département,)
- Réseau local (campus, entreprise,)
- Réseau régional
- Réseau national
- Réseau mondial
5 Programmes Web
Source http//pierre.senellart.com/enseignement/
2005-2006/l2web/cours3.pdf
6Historique dInternet
- 1959-1968 Programme ARPA
- Ministère américain de la défense lancer un
réseau capable de supporter les conséquences dun
conflit nucléaire. - 1969 ARPANET (lancêtre dInternet)
- Les universités américaines séquipent de gros
ordinateurs et se connectent au réseau ARPANET. - 1970-1982 ouverture sur le monde
- Premières connexions avec la Norvège et Londres
- 1983 Naissance dInternet
- Protocole TCP/IP tous les réseaux
sinterconnectent, les militaires quittent le
navire
7Historique dInternet
- 1986
- Les autoroutes de linformation La National
Science Fondation décide de déployer des
super-ordinateurs pour augmenter le débit
dInternet - 1987-1992
- Les années dexpansion Les fournisseurs daccès
internet apparaissent et les entreprises se
connectent au réseau - 1993-2006
- Explosion dInternet Ouverture au grand public
- Avènement du courrier électronique et du Web
- Marché considérable
- Naissance des services Internet (cf. dispo
suivante)
8Services dInternet
- Un service une application qui utilise un
protocole et un numéro de port - Fonctionnement en mode client/serveur au dessus
de TCP/IP
9Modèle Internet
- Une version du modèle OSI (très simplifié)
- Service
- ftp, www, telnet,
- Transport
- TCP, UDP (entre deux processus aux extrémités)
- Réseau
- IP (routage)
- Transmission
- Entre 2 sites pas de protocoles spécifiques
10Services de base de lInternet
- telnet (TErminaL NETwork)
- non sécurisé !
- Accéder à une machine distante
- FTP (File Transfert Protocol)
- Transfert de fichier
- E-mail (Electronic mail ou méssageir
électronique) - SMTP (Simple Mail Transfert Protocol)
- POP (Post Office Protocole)
- News
- NNTP (News Network Transport Protocol)
11Services de base de lInternet
- World Wide Web (ou Web)
- Le web repose sur lhypertexte
- Une page hypertexte est écrite en HTML
- Ces pages se trouvent sur un serveur Web
- Le protocole utilisé est le HTTP (Hyper Text
Transport Protocol)
12Web
- Architecture pour accéder à des documents liées
entre eux et situés sur des machines reliées par
Internet - Architecture basée sur 3 concepts
- La localisation URL
- Le protocole HTTP
- Le langage HTML
- Popularité due à
- Interface graphique conviviale
- Très grande quantité dinformations
- Grande diversité dinformations
13Web
- Une page web
- Contient des objets
- Désignés par une adresse (URL)
- Les pages web contiennent en général
- Du code HTML
- Des objets référencés
- LURL a au moins deux composantes
- Le nom de lhôte contenant
- la page web
- Le chemin daccès sur lhôte www.free.fr/perso/we
b - Lagent utilisateur pour le web est le browser
(navigateur) - Netscape
- Mozilla
- Internet Explorer
- Opera
-
- Le serveur web
- Apache (domaine publique)
- MS Internet Information Server
14Fonctionnement du web
- Le client (browser) dialogue avec un serveur web
selon le protocole - Le serveur vérifie la demande, les autorisations
et transmet linformation - Le browser interprète le fichier reçu et
laffiche - A ceci peut sajouter des contrôles ou des
exécutions (côté client ou côté serveur)
15Adressage de documents
- Il faut nommer localiser et accéder à une page
- Quoi ? Où ? Comment ?
- Solution
- URL Uniforme Ressource Locator Adresse
Universelle de Ressource - En 3 parties le protocole (comment), le nom DNS
(où), le nom du document (quoi). - Exemple dURL
- http//www.perdu.com/index.html
16Adressage de documents
- Différentes composantes dune URL
- protocol//host_nameport/path/extrapath?arguments
- La racine / de path est définie par la
configuration du serveur web (à ne pas confondre
avec la racine du système de fichier sur le
serveur) - extrapath?arguments permettent de passer des
informations à des programmes sexécutant sur le
serveur
17Vision côté client
- Le Web est un ensemble de pages (documents)
pouvant contenir des liens vers d'autres pages
n'importe où dans le monde - Consultation des pages via un navigateur
- L'utilisateur suit ces liens par simple click
notion d'hypertexte (information répartie) - Le navigateur (browser)
- analyse l'URL demandée
- demande au DNS l'adresse IP du site distant
- établit une connexion TCP vers le numéro de port
de l'URL (80 par défaut) - formule la requête au serveur
18Vision côté serveur
- Le navigateur (browser)
- va rechercher la page demandée
- interprète les commandes de formatage et de mise
en forme (police, gras, couleurs...) - va rechercher et affiche des images
- animation (code JavaScript, gifs...)
- affiche la page correctement formatée
- Paramétrage à plusieurs niveaux
- valeurs par défaut du navigateur
- valeurs fixées dans le document
- préférences de l'utilisateur (navigateur)
- exemples couleur des liens (visités ou non),
du texte, fond de la page, polices...
19Vision côté serveur
- Le serveur est en permanence à lécoute des
requêtes formulées par les clients (qui peuvent
être très nombreux !) - Il vérifie la validité de la requête...
- adresse correcte (URL)
- client autorisé à accéder au document
- et y répond envoi du texte, des images, du
code à exécuter sur le client, d'un message
d'erreur, d'une demande d'authentification, ... - Il peut exécuter un programme localement qui va
générer une réponse HTML (pages dynamiques)
20Introduction au PHP
- Langage né en 1994 par Rasmus Lerdof pour son CV
et pour garder trace de consultations. - Le PHP permet de réaliser des sites Internet
élaborés. - Le HTML simple ne suffit pas à répondre aux
impératifs imposés par les dernières évolutions
du Web. - PHP est un disponible dans plusieurs
environnements, tels qu'Unix (Linux, AIX),
Windows (95, 98, NT) et Macintosh. - PHP est un langage de programmation spécialisé
dans la génération de code, dont le langage de
prédilection est le HTML (crée en, 1984 par le
CERN). - Il possède une impressionnante quantité d'outils
(manipulation d'images, traitement de fichiers,
accès aux bases de données, etc.)
21La langage
- Le PHP est un langage complet, écrit en C, qui
reprend une grande partie des spécificités
techniques et sémantiques de ce langage. - Le moteur d'interprétation du langage lit un
fichier source PHP, puis génère un flux
destination, en respectant les définitions et
règles suivantes - Un bloc PHP est un groupe continu de lignes,
encadré par deux balises lt? et ?gt ou lt?php et
php?gt - Toute ligne située à l'extérieur de ces balises
n'est pas interprétée et est envoyée telle quelle
dans le flux de sortie. - Toute ligne située à l'intérieur de ces balises
est considérée comme une instruction PHP et est
donc interprétée par le moteur. - Les instructions PHP n'apparaissent pas dans le
résultat généré. - Lorsqu'une erreur survient, un message est
intégré dans le flux de sortie, et la génération
du script est interrompue.
22Schéma de fonctionnement général
d'un langage de script
23Premier programme
- La conception du script PHP est réalisé avec un
éditeur quelconque, Emacs (hé hé hé !) est très
bien pour cela. - ltHTMLgt
- ltHEADgtltTITLEgtMon premier programmelt/TITLEgtlt/HEADgt
- ltBODYgt
- lt? echo "Ca marche !" ?gt
- lt/BODYgt
- lt/HTMLgt
- L'extension de votre fichier doit être .php ou
.php3 afin d être interprété par le serveur
(Apache par exemple)
24Les variables
- Contrairement à beaucoup de langages, PHP ne
contient de partie déclarative clairement
définie. Pour déclarer une variable, il suffit de
l'initialiser. Celle-ci sera immédiatement
accessible, et le restera jusqu'à la fin du
script. - Les variables en PHP sont toutes dotés du préfixe
- exemple
- toto 1
- Le type d'une variable est également défini par
la valeur qui lui à été affecté lors de sa
création. Il existe5 types de données - Entier (int, integer)
- Décimal (real, double, float)
- Chaîne de caractères (string)
- Booléen (boolean)
- Tableau (array)
- Objet (object)
25Les constantes
- Inutile de revenir sur l'intérêt des constantes.
Il existe deux constantes prédéfinis en PHP. - Pour définir une constante il suffit d'utiliser
l'instruction - define
- exemple
- define(MACONSTANTE, Hello World)
- if (defined(MACONSTANTE))
- print La valeur de ma constante est
.MACONSTANTE //Attention, on accède au contenu
sans le . -
26Portée des variables
- Selon l'endroit du code où les variables sont
définies, ces dernières auront une portée plus ou
moins grande, c-à-d qu'elles seront définies soit
pour une parie du code (fonction) soit pour sa
totalité. - Il existe trois niveaux de définition de
variables - Le niveau global. Il définit des variables dans
l'intégralité du code d'une page PHP. - Le niveau local. Il définit des variables propres
à une fonction, dont la durée de vie ne dépasse
pas le temps de cette fonction. - Le niveau static. Il définit des variables
propres à une fonction, qui persistent pendant
l'intégralité du code de la page PHP. -
27Les tableaux
- Dans PHP, comme dans tout autre langage, les
tableaux sont une structure de données
incontournable. - La déclaration d'un tableau se fait de la même
manière que la déclaration d'une variable avec un
indice se trouvant entre et .
28Les tableaux
- tableau0 1 // on crée un tableau, et sa
première valeur est 1 - Pour un tableau à deux dimensions, il suffit de
mettre un second indice au moment de
l'affectation. - exemple
- tableau00 1 // on crée un tableau, et sa
première valeur est 1 - Il n'est pas obligatoire de préciser l'indice
pour affecter une valeur. - exemple
- tableau 1 // équivaut à tableau0 1
- tableau 45 // équivaut à tableau1 45
- tableau 6 // équivaut à tableau2 6
- La déclaration et linitialisation d'un tableau
peuvent également se faire par l'intermédiaire de
la fonction 'array()'. Cette fonction permet de
préciser les indices ainsi que les valeurs du
tableau (à l'aide de l'opérateur gt).
29Les tableaux
- Exemple
- tableau array(0gt1, 1gt45, 2gt6)
- tableau array("rouge"gt"red",
"vert"gt"green", "bleu"gt"blue") - La navigation dans les éléments du tableau
s'effectue à l'aide des fonctions 'next()' ,
'prev()' et 'each()'. - Le nombre d'éléments d'un tableau peut être
obtenu à l'aide de la fonction 'count()'. Le tri
des tableaux est facilité par de nombreuses
fonctions asort(), ksort(), sort(), usort(),
etc...
30Variables d'environnement
- L'un des aspects fondamentaux d'une application
construite sur une architecture de type intranet
est l'utilisation des variables d'environnement
du serveur, et notamment celles du serveur HTTP. - Avec PHP toutes les variables d'environnement du
serveur sont automatiquement reprises dans les
scripts PHP en tant que variables globales. Ainsi
il suffit de les utiliser directement dans le
code.
31Variables d'environnement
- exemple
- Tableau _SERVER /HTTP_SERVER_VARS
- IP_SERVERREMOTE_ADDR
- echo IP _at_ IP de la machine cliente
32Exemples de variables denvironnement
- SERVER_NAME Le nom du serveur hôte qui exécute
le script suivant. Si le script est exécuté sur
un hôte virtuel, ce sera la valeur définie pour
cet hôte virtuel. - PHP_SELF Le nom du fichier du script en cour
d'exécution, par rapport au document root. - DOCUMENT_ROOT La racine sous laquelle le script
courant est exécuté, comme défini dans la
configuration du serveur. - REMOTE_ADDR L'adresse IP du client qui demande
la page courante. - REMOTE_PORT Le port utilisé par la machine
cliente pour communiquer avec le serveur web. - SCRIPT_FILENAME Le chemin absolu jusqu'au
script courant. - SERVER_PORT Le port de la machine serveur
utilisé pour les communications. Par défaut,
c'est '80'. En utilisant SSL, par exemple, il
sera remplacé par le numéro de port HTTP
sécurisé. - REQUEST_URI L'URI qui a été fourni pour accéder
à cette page. Par exemple '/index.html'.
33Variables issues de formulaires
- Les variables sont issues de formulaires HTML,
elles correspondent aux différents champs
positionnés entre les balises ltFORMgt et lt/FORMgt
de ce formulaire. La page qui reçoit ces
variables est celle qui est désignée par
l'attribut ACTION de la balise ltFORMgt. - exemple (fichier test.html)
- ltHTMLgt
- ltFORM ACTION"test.php" METHODPOSTgt
- ltINPUT TYPEhidden NAME"toto" VALUE"bonjour"gt
- Nom ltINPUT TYPEtext NAME"nom"gt
- ltINPUT TYPEsubmit VALUE"Envoyer"gt
- lt/FORMgt
- lt/HTMLgt
34Variables issues de formulaires
35Variables issues de formulaires
- Tableaux
- HTTP_GET_VARS/_GET
- HTTP_POST_VARS/_POST
- Exemple
- nom _POSTtoto
- echo nom
36Tests if... then... else
- Test de base que l'on trouve dans la majeure
partie des langages. Si une condition est vrai
alors on exécute des instructions sinon
(facultatif) on en exécute d'autre. On peut
changer de condition avec un 'elseif'. - syntaxe
- if ( condition1 )
- Action 1
- elseif ( condition2 )
- Action 2
-
- else
- Action 3
-
-
37Tests if... then... else
- exemple
- if (ab)
- echo "A est égal à B"
- elseif (a gt b)
- echo "A est supérieur à B"
- else
- echo "A est inférieur à B"
-
38Tests switch... case... default
- Si les conditions successives ne portent que sur
la valeur d'une variable, on pourra
avantageusement remplacer le test 'if...
elseif... else' par 'switch'. Dans ce test, la
condition est associée à la valeur d'une
variable, de plus l'instruction 'break' est
primordiale à la fin de chaque bloc de
conditions, sinon toutes les conditions seront
vérifiées et exécutées. - exemple
- switch (a)
- case b
- echo "A est égal à B"
- break
- case gtb
- echo "A est supérieur à B"
- break
- default
- echo "A est inférieur à B"
- break
39Boucles
- while ( condition )
- Action
-
- do
- Action
- while (condition)
- for (expr1 expr2 expr3)
- Action
40Boucles
- i1
- while (i lt 10)
- echo "- i -"
- i
-
- i1
- do
- echo "- i -"
- i
- while (i lt 10)
- for (i 1 i lt 10 i)
- echo "- i -"
41BreakContinue
- Break Cette instruction permet de sortir de
n'importe quelle boucle, à n'importe quel moment. - Continue Cette instruction permet de ne pas
exécuter le code contenu dans la boucle et de
passer à l'itération suivante. - for (i1 ilt10 i)
- if (ilt5) echo i
- else
- break
-
- echo "- "
-
- // cette boucle affichera 1 - 2 - 3 - 4 - 5
42Fonctions each() et list()
- Ces fonctions sont aussi étroitement liées aux
boucles. - each(..)
- Cette fonction permet de parcourir tous les
éléments d'un tableau sans se soucier de ses
bornes. Elle retourne la combinaison clé-valeur
courante du tableau passé en paramètre, puis se
positionne sur l'élément suivant, et cela du
premier au dernier indice. Lorsque la fin du
tableau est atteinte, each( ) retourne la valeur
faux (false). - list(..)
- Cette fonction est très souvent associée à la
fonction each(), elle permet d'affecter les
éléments du tableau dans des valeurs distinctes.
43Fonctions each() et list()
- exemple
- tableau array("val1","val2","val3","val4")
//on crée un tableau avec 4 valeurs - while (var each(tableau))
- echo "var0 var1"
-
- Ce code produit le résultat suivant
- 0 val1
- 1 val2
- 2 val3
- 3 val4
- ici l'indice est affecté au premier élément de
var et la valeur au deuxième élément var
44Fonctions each() et list()
- tableau array("val1","val2","val3","val4")
//on crée un tableau avec 4 valeurs - while (list(cle, valeur) each(tableau))
- echo "cle valeur"
45Les Fonctions
- Comme dans tout langage structuré, en PHP, les
fonctions sont la base dune programmation claire
et efficace. Une fonction est une sorte de
sous-programme isolé du reste du code, exécutable
à tout moment, depuis nimporte quelle partie du
code principal ou nimporte quelle autre
fonction, par simple appel. De plus, les
avantages des fonctions sont - La non répétition de la même séquence de code
- De cet avantage découlent
- Le gain de productivité.
- La meilleure lisibilité du code.
- La maintenance facilitée.
46Déclaration, paramètres, valeurs de retour
- Une fonction est une séquence de code qui peut
remplir nimporte quelle tâche. Tout code valide
peut figurer dans le corps dune fonction. - Déclaration
- La syntaxe de déclaration sappuie sur le mot
clé function. Ce mot clé est immédiatement suivi
du nom de la fonction, puis de parenthèses
(obligatoires) destinées à accueillir les
éventuels paramètres à passer à la fonction.
47Déclaration, paramètres, valeurs de retour
- exemple
- function bonjour( )
- echo Bonjour !
-
- Cette fonction ne fait quafficher 'bonjour' et
ne retourne aucun résultat, on lutilisera de la
manière suivante - Bonjour( ) // affiche 'bonjour' à lécran
- Pour que la fonction retourne un résultat, on
utilisera le mot clé return - function bonjour2( )
- return Bonjour !
-
- echo bonjour2( )
- bonjour affiche le résultat elle-même, alors
quil faut afficher le résultat de bonjour2 pour
obtenir une action similaire.
48Déclaration, paramètres, valeurs de retour
- function dire_texte(qui, texte 'Bonjour')
- if(empty(qui)) // qui est vide, on retourne
faux - return false
- else
- echo "texte qui" // on affiche le texte
- return true // fonction exécutée avec
succès -
49Déclaration, paramètres, valeurs de retour
- Passage par valeur par référence Le passage
des paramètres tel quon la vu précédemment est
ce que lon appelle le passage par valeur. Il
existe une autre manière de procéder le passage
par référence. On passe à la fonction la
référence (adresse mémoire) dune variable
existante, et la fonction modifie directement la
valeur de cette variable. - exemple function bonjour(phrase) phrase
bonjour Toto Dupont chaine Phrase
qui va disparaître bonjour(chaine) echo
chaine // affiche 'bonjour Toto Dupont' à
lécran
50Opérateurs Logiques
- Ils permettent de combiner plusieurs tests entre
eux. - exemple Ici a et b peuvent prendre les
valeurs booléennes vrai ou faux. - Opérateur Exemple Résultat
- and ( ) a and b vrai si a et b sont vrai
a b tous les deux - or ( ) a or b vrai si a est vrai ou b
a b est vrai, ou encore si a et
b sont vrai tous les deux - not ( ! ) not a vrai si a est faux !a
51Opérateurs de Comparaison
- Ils permettent de comparer les valeurs de deux
variables. - exemple Ici a et b sont du même type de
variable. - Opérateur Exemple Résultat
- a b vrai si a est égal à b
- ! a ! b vrai si a est différent de b
- lt a lt b vrai si a est inférieur b
- gt a gt b vrai si a est supérieur b
- lt a lt b vrai si a est inférieur ou égal à
b - gt a gt b vrai si a est supérieur ou égal à
b
52Gestion de la date
- Fonction Date nombreux paramètres
- echo date("d-m-Y") // affiche "12-12-2000"
53Gestion des fichiers
- La fonction de base est la fonction fopen( ).
C'est elle qui permet d'ouvrir un fichier, que ce
soit pour le lire, le créer, ou y écrire. Sa
syntaxe est - entier fopen(chaine nomdufichier, chaine mode)
- Différents modes disponibles
- r ouverture en lecture seulement
- w ouverture en écriture seulement (la fonction
crée le fichier s'il n'existe pas) - a ouverture en écriture seulement avec ajout du
contenu à la fin du fichier (la fonction crée le
fichier s'il n'existe pas) - r ouverture en lecture et écriture
- w ouverture en lecture et écriture (la
fonction crée le fichier s'il n'existe pas) - a ouverture en lecture et écriture avec ajout
du contenu à la fin du fichier (la fonction crée
le fichier s'il n'existe pas).
54Gestion des fichiers
- Exemples
- fp fopen("../fichier.txt","r") //lecture
- fp fopen("ftp//iutbayonne.univ-pau.fr./pub/fic
hier.txt","w") - //écriture depuis début du fichier
- fp fopen("http//www.nexen.com/fichier.txt","a"
) - //écriture depuis fin du fichier
55Lecture dans un fichier
- lt ?
- monfichier fopen(monfichier.txt, r)
// ouverture en lecture - if ( !(monfichier))
- print( Impossible douvrir le fichier )
- exit
-
- while ( !feof(monfichier) )
- ligne fgets(monfichier,255) // 255
caractères max. ou bien fin de ligne. - print ligne ltBRgt
-
- fclose (monfichier)
- ?gt
56Écriture dans un fichier
- lt ?
- monFichier fopen(monfichier.txt, w)
// ouverture en écriture - if ( !(monfichier))
- print( Impossible de créer le fichier \n)
- exit
-
- fputs(monfichier, ligne 1) // on écrit
deux lignes - fputs(monfichier, ligne 2)
- fclose(monfichier) // on ferme le fichier, on
libère les ressources - ?gt
57Fonction Explode
- Il est fréquent davoir des fichiers contenant
différents champs séparés par un délimiteur
quelconque. Une fonction très utile dans ces cas
là est la fonction explode. Sa syntaxe est la
suivante - explode ( caractère délimiteur , chaîne de
donnée) - Roose Philippe 27
- Goudin David 28
58Fonction Explode
- lthtmlgt ltheadgt lttitlegtExemples de Explodelt/titlegt
lt/headgt ltbodygt - lt?php
- if (!file_exists( test.txt ))
- print "ltH3gtltBRgtErreur, fichier compteur
manquantltBRgt" - exit
- else
- fd fopen(fic,"r")
- while (!feof(fd))
- ligne fgets(fd,255)
- tabexplode("",ligne)
- print "Nom tab0ltbrgt"
- print "Prénom tab1ltbrgt"
- print "Age tab2ltbrgt"
-
- fclose(fd)
-
- php?gt
59Fonctions Mathématiques
- Elles y sont toutes !
- Abs, cos, sin, tan, sqrt, exp,
- pi( )
60Chaînes de caractères
- strpos (chaîne, sous chaîne) retourne la
position de la sous chaîne dans la chaîne. Dans
le cas où la chaîne existe en plusieurs
exemplaires, cest la position de la première
occurrence qui est retournée. strrpos retourne
quand à elle la position de la dernière
occurrence. - strstr (chaîne, sous chaîne) retourne la portion
de la chaîne à partir de la première occurrence
de la sous chaîne. - foreach (nom tableau) A chaque appel, cette
fonction retourne la valeur suivante du tableau. - strlen (chaîne) retourne la taille de la
chaîne. - strtolowerstrtoupper (chaîne) retourne la
chaîne passée en paramètres an minuscules (resp.
majuscules). - str_replace (car dorigine, car de destination,
chaîne) remplace le caractère dorigine par le
caractère de destination dans la chaîne. - g supprime les caractères invisibles (espaces,\n,
) au début et à la fin de la chaîne. - ereg(chaîne à chercher, chaîne) retourne vrai
si la chaîne à chercher (sous forme de chaîne ou
sous forme dexpression régulière) est contenue
dans chaîne.
61Mail
- Il existe une méthode PHP permettant denvoyer un
mail directement, sans appeler un quelconque
gestionnaire de courrier. - La fonction mail (ou email parfois) permet de
réaliser cela. Elle nécessite au moins trois
paramètres - Le destinataire,
- Lobjet du message,
- Le corps du message.
- lt ?
- mail(dupont_at_mondomaine.fr, Test de la
commande mail, Voici le corps du mail) - ?gt
- Enverra un mail à dupont_at_mondomaine.fr avec
comme sujet de mail Test de la commande mail ,
et comme corps du mail Voici le corps du
mail .
62FTP
- Il est possible de se connecter et de
s authentifier à un serveur FTP pour le
transfert (download/upload) de fichiers. - L ensemble des fonctions de connexion,
récupération de liste de fichiers, upload,
download sont disponibles - ftp_connect, ftp_login, ftp_quit, ftp_get,
ftp_put, ftp_size, etc.
63Coté serveur
- passthru(commande)/system(commande) exécute une
commande sur le serveur et de visualiser le
résultat sur la sortie standard. - exemple passthru("ls -l") donnera à l'écran la
liste des fichiers du répertoire contenant le
script où est située cette instruction). - Rq passthru retourne les résultats à la fin de
l'exécution de la commande alors que system
essaie de les envoyer au fur et à mesure qu'ils
sont retournés. - exec (commande, resultat) idem mais sans echo
64Sérialisationen très bref !
- Permet de sauvegarder un objet ou le contenu d'un
tableau dans son état. - Le mécanisme de sérialisation transforme dans un
format de type chaîne de caractères le contenu
d'un tableau ou un objet quel qu'il soit. - Pour ce faire, deux fonctions de sérialisation
(encodage) et désérialisation (décodage) sont
nécessaire - monobjetserialise serialize(monobjet) //
sérialisation - monnouvelobjet unserialize
(monobjetserialise) // désérialisation - L'intérêt est qu'au delà de l'encodage, il est
ainsi possible d'envoyer via le réseau des
objets/tableaux en PHP, mais également de
sauvegarder des objets/tableau aisément dans des
fichiers/BD pour les retrouver tels quels plus
tard.
65Bases de Données
- lt?
- bdd "mabase" // Base de données
- host "sql.iutbayonne.univ-pau.fr"
- user "roose" // Utilisateur
- pass "12345"
- mysql_connect(host,user,pass) or die
("Impossible de se connecter à la base de
données") - mysql_select_db(bdd)
- ?gt
66Requêtes SQL
- query
- "SELECT num, pays, date, circuit FROM nomtable
" - result mysql_query(query)
- if (mysql_error())
- print "Erreur dans la base de données
".mysql_error() exit()
67Récupération résultats
- La fonction mysql_fetch_row() retourne un tableau
qui représente tous les champs dune rangée de
résultat (un tuple). Chaque appel produit le
tuple jusquà ce quil ny en ai plus. - Il existe dautres fonctions pour réaliser cela,
mais celle-ci est la plus rapide pour obtenir des
résultats à partir dune requête.
68Récupération résultats
- while (rowmysql_fetch_row(result)) // result
a été obtenu par le msql_query précédent. -
- // récupération des informations
- num mysql_result(rowt0)
- pays mysql_result(row1)
- date mysql_result(row2)
- circuit mysql_result(row3)
- print
-
- A noter qu'au lieu d'utiliser les indices 0, 1,
... il est possible de donner le nom du champ
(row'pays') à la condition d'utiliser
mysql_fetch_array() en lieu et place de
mysql_fetch_row().
69Exemple de script
- lthtmlgt ltheadgt lttitlegtPage persolt/titlegt lt/headgt
ltbodygt - je mets ici tout le code nécessaire avant
d afficher le compteur. - lt?php
- fic"cpt.txt"
- if (!file_exists(fic))
- print "ltH3gtltBRgtErreur, fichier compteur
manquantltBRgt" - exit
-
- else
- fd fopen(fic,"w")
- hits fgets(fd,10)
- hits
- fseek(fd,0)
- fputs(fd,hits)
- fclose(fd)
- print "ltboldgthitslt/boldgt"
- php?gt
70Formulaire/Mail
- lthtmlgt ltheadgt lttitlegtFormulaire/Maillt/titlegtlt/head
gtltbodygt - ltFORM method"POST" action"mail.php3"gt
- ltPgt Adresse ltINPUT TYPEtest NAMEadr_mail
VALUE"" SIZE50 MAXLENGTH50 lt/Pgt - ltinput type"submit" value Mail"gt
- lt/FORMgt
71PHP et les Images
- Formats supportés
- JPG, GIF, PNG
- Fonctionnalités
- Récupération,
- Création,
- Modification,
- Manipulation,
72Fonctions liées aux images (1)
- Id getimagesize (nom de fichier)
- hauteur, largeur, type, balise HTML
- id imagecreate(largeur, hauteur)
- imagedestoy(identifiant image)
- imagefill (image, x, y, couleur)
- imagechar(image, police de car., x, y, car ,
couleur) - imagecharup ...
73Fonctions liées aux images (2)
- imagestring et imagestringup
- imagecolorat(image, x, y)
- imagecolorstotal(image)
- imagecolortransparent(entier image, entier
couleur)
74Fonctions liées aux images (3)
- imagecreatefromjpeggifpng(nom du fichier)
- imagedashedline(image, x début, y début, x fin, y
fin, couleur) - imagefilledpolygon(image, tableau de points,
nombre de points, couleur) - imagefilledrectangle(image, x haut gauche, y
haut gauche, x bas droite, y bas droite, couleur)
75Fonctions liées aux images (4)
- imageloadfont(nom de la police de caractère)
- fonction imagesetpixel(image, x, y, couleur)
- imagesx(image) et imagesy(image)
- imagejpggifpng (id image) -gt le navigateur.
76Gestion de sessions cookies
- setcookie (nom, valeur, expiration, chemin,
domaine, securite) permet de créer un cookie sur
le poste client. - Le premier champs nom est obligatoire et défini
son nom. - Si l'on souhaite lui associer une valeur on
renseignera le second champs. - Le troisième permet de spécifier une date
d'expirationdans le cas où rien n'est précisé,
le cookie devient permanent. - Les champs chemin et domaine permettent de
préciser les URL et domaines auxquels sont
associés le cookie. Enfin le dernier, sécurité
permet de n'envoyer le cookie que si la connexion
est réalisée via le protocole sécurisé HTTPS
(TRUE).
77Gestion de sessions cookies
- Une fois le cookie crée, il est possible de le
récupérer dans les pages suivantes via le tableau
_COOKIE'nom cookie'. - setcookie("TestCookie", value, time()3600) //
expire dans une heure - La suppression d'un cookie se fait en le
recréant...mais avec une date d'expiration passée
! - setcookie ("TestCookie", "", time() - 3600) //
a expiré y'a une heure - Les cookies ne sont malheureusement pas supportés
par l'ensemble des navigateurs pour des raisons
de confidentialité. Aussi, il est nécessaire de
mettre en oeuvre d'autres mécanismes afin de
gérer les sessions.
78Gestion de sessions variables de sessions
- bool session_start( ). Dans le cas ou true est
retournée, cette fonction permet soit de créer
une session (si pas encore définie) soit
dutiliser les variables de la session en cours. - string Session_ID (string id) permet daccéder
à lidentifiant unique dune session. Dans le cas
où un paramètre est précisé, l'identifiant de
session changera et prendra la valeur fournie - string Session_Name(string name) retourne le
nom de la session en cours ou le change avec la
valeur du paramètre précisé. - L'affectation du tabeau _SESSION permet de créer
des variables de session (il faut que
session_start() soit en entête de page).
79Programmation OO
- classe MaClasse
- attribut1
- attribut2
- function maMethode1( )
-
-
- function maMethode2(param1, param2 je suis
une chaîne ) // paramètre par défaut -
-
- // fin de la déclaration de la classe.
80Programmation OO - exemple
- lt?php
- class classBD
- var base var host var user var
passwdvar request - var resultvar tuple
- function classBD(hote, utilisateur, mp)
// Initialisations - this-gthost hote
- this-gtuser utilisateur
this-gtpasswd mp - // Connexion _at_mysql_connect(this-gthost,
this-gtuser,this-gtmp) or die( "Impossible de se
connecter à la base de données") function
selectBD(nombase) this-gtbasenombase
_at_mysql_select_db(this-gtbase) - ... function close()
- MYSQL_CLOSE()
- ?gt
81Programmation OO - exemple
- lt?php
- include("./classBD.inc")
- ?gt
- ltHTMLgtltTITLEgtUtilisation de classes en PHP
lt/TITLEgt - ltBODYgtExemple d'accès à une BD sous mySQL ltBRgt
- lt?phpo new classBD()
-
- ?gt
- lt/BODYgtlt/HTMLgt
82PHP3 vs PHP4
- PHP/FI (Personal Home Page / Form Interpreter)
fût la première version officielle de PHP (tout
est parti d'une librairie Perl à l'origine). - PHP3 résulte d'une réécriture complète de PHP/FI.
- PHP3 et PHP/FI ne sont plus officiellement
supportés. Néanmoins, ils persistent encore en
particulier chez certains hébergeurs. - Quant à PHP4, il résulte à son tour d'une
réécriture de PHP3 et utilise le moteur Zend.
C'est la branche courante de PHP.
83PHP3 vs PHP4 nouveautés
- PHP4 ré-écriture complète du moteur
d interprétation. D une interprétation ligne à
ligne, on passe à une compilation du code
souhaitable pour de gros développements. - Auteurs Zeev Zuraski, Andi Gutmans.
84PHP3 vs PHP4
- Meilleure gestion du Garbage Collector
- Gestion des sessions évite de passer par des
variables partagées et/ou des cookies. Elles sont
stockées dans un SGBD-R et/ou dans un fichier
ASCII. - Bufferisation des sorties.
- Comparaison valeur à valeur type à type
- ajout d un type Booléen
85PHP3 vs PHP4
- Gestion des COM sous Windows
- exemple tiré de www.phpheaven.net
- lt?php
- word new COM( "word.application") or die(
"Impossible to instantiate WordApp") - print "Word is running, version
word-gtVersion\nltbrgt" - word-gtVisible1
- word-gtDocuments-gtAdd()
- word-gtSelection-gtTypeText( "This is a test...")
- word-gtDocuments1-gtSaveAs( "test_com_php.doc")
- word-gtQuit()
- ?gt
86Évolution importante
87Gestion des Exceptions (PHP5)
- Les programmeurs Java sont familiers avec ce
concept. L'idée est d'encapsuler du code à
problème dans une section. Si ce code se déroule
mal, une exception est levée et la procédure
associée sera exécutée. - Il est possible d'associer plusieurs procédure
(plusieurs catch) à un try dans le cas où le code
critique peut lever plusieurs exceptions
différentes.
88Gestion des Exceptions (PHP5)
- try
- ...
- throw new Exception ('Aïe, y a un problème',
1) -
- catch (Exception e)
- print ltbrgtException n .e-gtgetCode()
- print ltbrgtMessage .e-gtgetMessage()
- print ltbrgtDans le fichier .e-gtgetFile()
- print ltbrgtA la ligne .e-gtgetLine()
-
89PHP vs ASP
- En premier lieu, PHP et les ASP sont très proches
dans la philosophie et la mise en oeuvre (code
directement intégré aux pages HTML). - Comparé à PHP3, les ASP se montrent parfois plus
rapides et implémentent un concept très utile,
celui des sessions. Les sessions ne sont pas
supportées en natif par PHP3, même si de
multiples solutions existent (PHPLib
http//phplib.netuse.de/). - Comparé à PHP4, ces différences s'estompent. Ce
dernier gagne en rapidité et introduit à son tour
le concept de sessions. - Notons aussi que les ASP sont largement inféodés
au monde Win32, même si des solutions Unix
existent (ChiliSoft http//www.chilisoft.com/) - PHP quant à lui est disponible sous NT comme sous
Unix. - Enfin, précisons que PHP dispose d'un plus grand
nombre de fonctions, s'interface aisément avec
des librairies et outils externes. En
particulier, il est en mesure de s'interfacer, le
plus souvent en natif, avec l'ensemble des SGBD
standards du marché. Les ASP ne proposent qu'une
approche ODBC, bien moins performante.
90PHP en chiffres
- PHP 500 000 développeurs à travers le monde
- Un marché de 4,8 milliards d.
- Le langage (en fait la plate-forme) est utilisée
par plus de 1/3 des sites web dans le monde (46
en France), ce qui représente 17 millions de
domaines. Parmi les entreprises du CAC40, 78 en
2003 et 87 en 2004 utilisent le PHP. - Interopérabilité PHP peut instancier des objets
COM, .NET mais également Java. - PHP peut se connecter à lensemble des ténors des
SGBD, mais aussi aux annuaires (LDAP), à Lotus
Notes, à SAP, permet lutilisation des services
web (SOAP/WSDL), gère le XML, s interface avec
les systèmes de paiement en ligne (VeriSign,
Cybercash, Crédit Mutuel, etc.), génère du Flash
(extension Ming), du PDF (classe FPDF). - Robustesse (performances/fiabilités) 90 des
sites web les plus fréquentés dans lhexagone
avec des sites dépassant les 500 000
connexions/jour. Une des plus forte plate-forme
au monde supportant PHP permet 150 000
utilisateurs simultanément (avec 220 serveurs en
cluster).
91Bibliographie
- Maîtrisez PHP4 Wankyu et al. - Éditions Campus
Press/Wrox 2001 ISBN 2-7440-9002-6 - Programmez en PHP Léon Atkinson Éditions
Campus Press Référence 1999 ISBN
2-7440-0771-4 - PHP 5 MySQL 5 Luke Welling et Laura Thomson
Campus Press Pearson Education ISBN
2-7440-1887-2 - PHP 5 3ème édition Léon Atkinson Campus
Press Pearson Education ISBN 2-7440-1634-9