Title: Client/Serveur Internet Conception de pages dynamiques
1Client/Serveur InternetConception de pages
dynamiques
- Jean-Marc Thévenin
- Laurent Perrussel
- thevenin,perussel_at_univ-tlse1.fr
2Plan du Cours
- I/ Introduction
- II/ Architecture Client/Serveur dans Internet
- III/ Configuration dun serveur HTTPD
- IV/ Conception de Pages Dynamiques
- V/ Le Langage PHP
- VI/ Interactions avec une Base de Données
- VII/ Saisie dInformations sur Plusieurs Pages
3I/ Introduction
- 1/ Architecture client/serveur Internet
- 2/ Lien avec le cours de conception de pages HTML
- 3/ Les pages HTML dynamiques
4I.1/ Arch. client/serveur Internet
- Rôle du client ?
- Programme permettant de demander des données ou
des services à une autre machine - données pages, messages, fichiers
- services programme sexécutant sur une machine
distante (exemple HotMail) - le client doit connaître la seconde machine
- la seconde machine sappelle un Serveur
5I.1/ Architecture client/serveur Internet
- Trois types de client ?
- Navigateur de pages Web Netscape, MS Internet
Explorer, Word... - logiciel de messagerie électronique Eudora,
Outlook Express, Netscape, Word - logiciel de transfert de fichiers WS-FTP, MS
Internet Explorer, Word
6I.1/ Arch. client/serveur Internet (suite)
- Rôle du serveur
- Programme qui attend, traite et répond à des
requêtes provenant de clients localisés sur des
machines distantes - Rappel une requête peut concerner des données
et/ou un service.
7I.1/ Arch. client/serveur Internet (suite)
- Trois types de serveur
- Serveur de pages Web Apache, Microsoft Server,
Netscape Server - Serveur de messagerie SendMail, Microsoft
Exchange - Serveur FTP WU-FTP
8I.1/ Arch. client/serveur Internet (suite)
- Une Transaction Type
- a) le client, un navigateur, demande une page à
un serveur Web. - b) le serveur, qui attendait reçoit la requête et
cherche la page sur sa machine. - c) le serveur envoie la page au client et attend
à nouveau.
Client (Navigator)
a)
c)
b)
Fichiers (pages)
Serveur (Apache)
9I.2/ Lien avec le cours de conception de pages
HTML
- Dreamweaver éditions de pages
- Pour rendre ces pages accessibles il faut
- définir le fonctionnement du serveur (URL,
autorisations, organisation des répertoires...) - publier ces pages, i.e. stockage dans les
répertoires adaptés
10I.2/ Lien avec le cours (suite)
- Dreamweaver conception de la structure de pages
et de formulaires (aspect statique) - Nécessité de prendre en compte les aspects
dynamiques - associer des instructions au(x) bouton(s)
- récupérer et traiter les données saisies
- interaction avec une base de données
- génération de pages pour afficher des résultats
11I.3/ Les pages dynamiquesTransaction type
- client
- saisie de données dans un formulaire et envoi
- réception de la page générée dynamiquement et
affichage
- Serveur
- réception des données
- génération dune page en fonction des données
reçues - envoi de cette page
12I.3/ Les pages dynamiques (suite)
- Génération de pages
- effectuée sur le serveur
- programme de génération souvent appelé CGI
(Common Gateway Interface) - le programme interagit avec le serveur (E/S) et
éventuellement dautres programmes et/ou un
serveur de bases de données
13I.3/ Les pages dynamiques (suite)
- Objectif du cours
- génération de pages HTML conditionnées par des
paramètres - écriture de CGI simples accédant à une base de
données relationnelle
14II/ Architecture Client/Serveur dans Internet
- 1/ Introduction
- 2/ Dans le contexte HTTP
- 3/ Dans le contexte du Mail
- 4/ Dans le contexte des News
15II.1/ Introduction
- Internet / Intranet / Extranet
- Internet
- ensemble de machines interconnectées selon le
protocole de communication TCP/IP . - Les machines ont un nom et sont dans un domaine
(ex igsi.univ-tlse1.fr). - Différents services offerts sites web, accès
distant à des documents, courrier électronique,
forums de discussion
16II.1/ Introduction (suite)
- Internet / Intranet / Extranet
- Intranet
- C est une sous-partie dInternet
- Réseau privé et donc inaccessible de l extérieur
(i.e. Internet) pour des raisons de sécurité - limitation à un domaine
- ex univ-tlse1.fr
- Utilisé pour le fonctionnement dune organisation
(ex Citroën)
17II.1/ Introduction (suite)
- Internet / Intranet / Extranet
- Extranet
- C est une sous-partie dInternet
- Réseau privé et donc inaccessible de l extérieur
(i.e. Internet) pour des raisons de sécurité - limitation à quelques machines
- utilisé pour relier une entreprise avec ses
partenaires (ex suivi de commandes). - Intranet et Extranet font souvent partie du S.I.
de l entreprise
18II.1/ Introduction (suite)TCP/IP
- Transmission Control Protocol / Internet Protocol
- Circulation des données par paquets
- le message est découpé en paquets.
- Chaque paquet est envoyé à un nœud qui renvoie
vers un autre nœud suivant lencombrement. - A larrivée, les paquets sont réordonnés
Message P1 P2
Système A
P1, P2
P2
P1
P2
P1
Système B
19II.1/ Introduction (suite)TCP/IP
- Expéditeurs et Destinataires des paquets sont
identifiées - Numéro de machine adresse IP
- ex 190.10.20.30
- Nom complet de machine www.lemonde.fr
- nom www
- nom de domaine lemonde.fr
20II.1/ Introduction (suite)TCP/IP
- Fonctionnement des serveurs DNS
- Domain Name System
- association entre le nom dune machine et son
adresse IP - Un serveur de noms par domaine
- Quand le nom accédé nest pas dans le domaine, le
serveur de nom local transfère la requête à un
serveur de noms Internet
21II.1/ Introduction (suite)
- Les URLs
- un protocole
- éventuellement un nom dutilisateur suivi de _at_
- un nom complet de machine
- éventuellement un nom de dossier et/ou de
document - ex
- news//news.cict.fr
- mailto//Jean-Marc.Thevenin_at_univ-tlse1.fr
- http//igsi.univ-tlse1.fr/igsi
22II.1/ Introduction (suite)
- Les principaux protocoles
- http (et https) pages HTML (et pages
sécurisées) - mailto envoi de messages
- news forums de discussion
- ftp transfert de fichiers
- Chaque protocole est pris en charge par un
service (un serveur)
23II.2/ Client/Serveur HTTP
- HTTP protocole permettant de demander et de
recevoir des pages HTML auprès dun serveur de
pages localisé sur une machine distante - le serveur est désigné sous le nom de HTTPD
démon HTTP
24II.2/ Client/Serveur HTTP (suite)
- Principaux HTTPD
- Apache (Unix, Windows, MacOS X...)
- Microsoft Personal Web Server (Win)
- Microsoft Site Server (Win NT)
- Netscape iPlanet Web Server (Unix, NT)
25II.2/ Client/Serveur HTTP (suite)
- Transaction type avec une page limitée à du texte
- http//uneMachine.unDomaine.fr/undossier/unePage.h
tml - 1. le serveur sur la machine uneMachine.unDomaine.
fr reçoit la demande - 2. le serveur associe à undossier le nom réel sur
le disque. - 3. Le serveur vérifie lexistence de la page et
les droits daccès - 4. le serveur envoie la page unePage.html à la
machine cliente - 5. le serveur enregistre la transaction dans un
journal
26II.2/ Client/Serveur HTTP (suite)
- Zoom Etape 2 associer undossier à un nom réel
sur le disque. - http//igsi.univ-tlse1.fr/thevenin
- http//igsi.univ-tlse1.fr/thevenin/p1.html
/home /thevenin /public_html
/index.html /home /thevenin
/public_html /p1.html
Machine IGSI
27II.2/ Client/Serveur HTTP (suite)
- Transaction type avec une page multimédia (texte
images animations ) - http//uneMachine.unDomaine.fr/undossier/unePage.h
tml - A. le client demande la page et le serveur envoie
le texte (étapes 1 à 5 précédemment) - B. le client analyse la page et demande le
chargement pour chacun des composants - les étapes 1 à 5 sont répétées par le serveur
pour chaque composant. - Autrement dit, une requête d un client se
traduit par un ensemble de transactions
élémentaires
28II.2/ Client/Serveur HTTP (suite)
- Transaction HTTPS
- transaction HTTP sécurisée
- Principes identiques aux transactions HTTP
- Communication Client/Serveur sécurisée par
encodage des paquets.
29II.2/ Client/Serveur HTTP (suite)
- Publication dune page
- URL de la page
- http//uneMachine.unDomaine.fr/undossier/unePage.h
tml - transfert FTP du fichier unePage.html sur la
machine uneMachine.unDomaine.fr dans le dossier
associé au chemin undossier en lui donnant le
même nom (unePage.html)
30II.3/ Client/serveur Mail
- Client lecture, stockage définitif et
rédaction de messages - Serveur boite postale (stockage temporaire des
messages) et envoi des messages. - Deux serveurs distincts (entrée et sortie)
- chaque serveur peut être sur une machine
distincte
31II.3/ Client/serveur Mail (suite)
- Client
- rédaction du message
- adresse
- sujet
- corps
- envoi du message au serveur de courrier sortant
- Serveur
- Réception du message à envoyer
- envoi du message selon le protocole SMTP (Simple
Mail Transfer Protocol) à ladresse adresse
32II.3/ Client/serveur Mail (suite)
- Client
- interrogation du serveur de courrier entrant (la
boite au lettre), récupération des messages - affichage des messages à la demande
- Serveur
- Réception du message et stockage dans une boite
temporaire selon le protocole POP (Post Office
Protocol) - suppression dans la boite des messages transférés
33II.3/ Client/serveur Mail (suite)
- Circulation des messages texte
- documents attachés encodés (binaire --gt texte)
- client encode et décode
- expéditeur et destinataire doivent respecter la
même convention dencodage - conventions usuelles Mime, Uuencode, Base64
34II.3/ Client/serveur Mail (suite)
- Principaux clients
- Eudora
- Netscape Messenger
- Outlook
- Pegasus
- elm
- Principaux Serveurs
- Sendmail
- iPlanet Messaging Server 5.0 (Netscape)
- Microsoft Exchange Server
35Client/Serveur News
- News forums de discussion thématique
- Principe
- envoi dun message au serveur de forums
- le message est publié dans le forum
- lecture du forum par les utilisateurs
- les utilisateurs répondent au forum
36Client/Serveur News (suite)
- Contrôle de la discussion
- publication sur le forum peut être modérée par un
modérateur (administrateur) - les forums peuvent être privés
- dans un intranet
- abonnement
37Client/Serveur News (suite)
38Client/Serveur News (suite)
- Rôle du lecteur de forums
- Sélection des forums préférés auprès de
différents serveurs de forums - Affichage des entêtes des messages du forum
sélectionné - Réception du corps du message sélectionné et
affichage - Envoi dun message au serveur du forum sélectionné
39Client/Serveur News (suite)
- Rôle du serveur de forums
- Stockage des messages dans les forums
- Gestion de larchivage
- Envoi sur demande dun client les entêtes des
messages dun forum - Idem pour les corps des messages
- Publication des messages
- Synchronisation avec les autres serveurs de forums
40III/ Configuration dun serveur HTTPD
- 1/ Présentation de Apache
- 2/ Configuration de Apache
- 3/ Configuration des espaces publics/personnels
- 4/ Exercices
- dossier personnel et publication de pages
- autorisation
- consultation des journaux
41III.1/ Présentation de Apache
- Serveur HTTP
- Plates-formes Windows 9x/NT, Unix (Linux),
- logiciel libre programme source accessible et
distribué avec la licence GNU - Serveur rapide et stable
- utilisé sur plus de 6 millions de serveurs
42III.1/ Présentation de Apache (suite)
- Site www.apache.org (en anglais)
- Configuration utilisée
- machine igsi
- système linux
- apache version 1.3.12-2
43III.1/ Présentation de Apache (suite)
- Quelques fonctionnalités
- définition de ladministrateur
- gestion du nombre daccès simultanés (nombre de
transactions HTTP) - surveillance des accès (journaux)
- organisation des répertoires contenant les pages
du site - définition des répertoires de pages personnelles
- droits daccès généraux et personnels
- définition personnalisée des pages derreur
- pied de page personnalisé
44III.2/ Configuration de Apache
- Configuration
- responsable propriétaire (au sens unix) du
logiciel - définie dans le fichier /etc/httpd/httpd.conf
- configuration principale
- déléguer des configurations spécifiques en
fonction des répertoires de pages
45III.2/ Configuration de Apache (suite)
- Structure du fichier httpd.conf
- document texte avec des lignes de commentaires et
des lignes de configuration - ligne de commentaire
- débute par un
- ligne de configuration
- MotClef Valeur
- ex Adresse du fichier derreurErrorLog
/var/log/httpd/error_log
46III.2/ Configuration de Apache (suite)
- Fichier httpd.conf chargé au lancement du
processus HTTPD - Généralement préconfiguré par défaut et très peu
de choses à changer - Toutes les options sont spécifiées il suffit
d enlever les commentaires pour les options
choisies
47III.2/ Configuration de Apache (suite)
- Principaux paramètres (présentés avec leur valeur
par défaut) - Nombre de processus serveurs en //
- StartServers 8
- nom et groupe de l utilisateur executant HTTPD
- User nobody (droit du processus serveur)
- Group nobody
- addresse de l administrateur
- (ajoutée au pages générées ex 404).
- ServerAdmin root_at_localhost
- Répertoire racine des pages du serveur
- DocumentRoot /home/httpd/html
48III.2/ Configuration de Apache (suite)
Preciser que le chargement par defaut est
uniquement effectue si l url se conclue par un
nom de repertoire
- Principaux paramètres (présentés avec leur valeur
par défaut) - Répertoire racine d un utilisateur de la
machine - Userdir public_html
- gt pour lutilisateur ayant le login monLogin le
répertoire racine est /home/monLogin/public_html
et lURL est http//uneMachine.unDomaine.fr/monLo
gin - Page par défaut à charger dans un répertoire
- DirectoryIndex index.html index.htm index.cgi
49III.2/ Configuration de Apache (suite)
- Principaux paramètres concernant les journaux
(présentés avec leur valeur par défaut) - fichier derreur
- ErrorLog /var/log/httpd/error_log
- Niveau de journalisation des erreurs
- (info, notice, error, alert,)
- LogLevel warn
- Fichier de journalisation des accès et niveau
- CustomLog /var/log/httpd/access_log common
50III.3/ Configuration des espaces
publics/personnels
Mentionner le dans le nom du repertoire décrit
- Description des droits effectuée par répertoire
- droit dexécuter des CGI
- droit à restreindre les accès
- droit de redéfinir les droits
- Syntaxe
- Droit pour le répertoire /home//public_html
- ltDirectory /home//htmlgt
- (liste des droits)
- lt/Directorygt
51III.3/ Configuration des espaces
publics/personnels (suite)
Droit a redéfinir les droits, mentionnez que
cette redefinition sera faite dans un fichier
particulier. Redefinition de Options --gt droit de
définir les droits précédents.
- Quelques droits
- Droit précisé avec le mot clef Option
- None aucun droit, all tous les droits
- FollowSymLinks, ExecCGI, droit
particuliers - pouvant être combinés
- Options FollowSymLinks ExecCGI Indexes
- Droit à redéfinir les droits
- Droit précisé avec le mot clef AllowOverride
- None aucun droit, all tous les droits
- Options, AuthConfig, droit particuliers
- pouvant être combinés
- AllowOverride AuthConfig
52III.3/ Configuration des espaces
publics/personnels (suite)
- Restriction daccès au répertoire
- Autorisation ou restriction par machine ou
domaine (autoriser quelques machines ou interdire
quelques machines). - Autoriser des individus ou des groupes
dindividus (nom mot de passe). - combinaison des deux quelques individus sur un
sous-domaine (ex intranet).
53III.3/ Configuration des espaces
publics/personnels (suite)
- Autoriser - Interdire quelques machines
- clauses allow from et deny from
- allow from nomDomaine1 nomDomaine2 nomMachine1
nomMachine2 adresseIP1 adresseIP3 - deny from nomDomaine1 nomDomaine2 nomMachine1
nomMachine2 adresseIP1 adresseIP3 - pour désigner toutes les machines all
- Ordre dapplication de la restriction
- clauses Order deny, allow et Order allow, deny
54III.3/ Configuration des espaces
publics/personnels (suite)
- Exemple limiter au domaine de luniversité
- allow from .univ-tlse1.fr
- deny from all
- Order deny, allow
- Exemple interdire les accès de UT2
- allow from all
- deny from .univ-tlse2.fr
- Order allow, deny
- Exemple accès depuis une machine précise
- allow from igsi.univ-tlse1.fr
- deny from all
- Order deny, allow
55III.3/ Configuration des espaces
publics/personnels (suite)
Les personnes autorises n ont pas besoin d un
compte UNIX
- Limitation à quelques personnes
- nécessité dun fichier (ou éventuellement une
base de données) contenant les personnes
autorisées - couples nomLogin, MotDePasse
- Création du fichier
- htpasswd -c nomFichier premierLogin
- Ajout dans le fichier
- htpasswd nomFichier nouveauLogin
56III.3/ Configuration des espaces
publics/personnels (suite)
- Limitation à quelques personnes
- Directive pour spécifier le fichier des personnes
autorisées (rappel entre les balises
ltDirectorygt lt/Directorygt) - Nom du fichier contenant les logins
- AuthUserFile nomFichier
57III.3/ Configuration des espaces
publics/personnels (suite)
- Limitation à un groupe de personnes
- Regrouper les personnes autorisées dans un groupe
- Les groupes sont référencés dans un fichier texte
ayant la forme suivante - nomGroupe1 nomLogin1 nomLogin2 nomLogin3
- nomGroupe2 nomLogin1 nomLogin2 nomLogin3
58III.3/ Configuration des espaces
publics/personnels (suite)
- Limitation à un groupe
- Directive pour spécifier le fichier des groupes
autorisés (rappel entre les balises ltDirectorygt
lt/Directorygt) - Nom du fichier contenant les groupes
- AuthGroupFile nomFichier
59III.3/ Configuration des espaces
publics/personnels (suite)
- Configuration de lespace personnel
- Autorisation de la configuration d un dossier
est donné dans le httpd.conf avec la clause
AllowOverride (cf. page préc.) - La clause AccessFileName précise le nom du
fichier de configuration particulier - Nom du fichier de configuration particulier
- à rechercher
- AccessFileName .htaccess
60III.3/ Configuration des espaces
publics/personnels (suite)
- Configuration de lespace personnel
- Pour configurer votre espace personnel créer le
fichier - /home/monLogin/public_html/.htaccess
- le fichier est un fichier texte contenant les
clauses à l intérieur des balises ltDirectorygt
lt/Directorygt (les balises ne doivent pas être
mentionnées).
61IV/ Conception de Pages Dynamiques
- 1/ Principe
- 2/ Transaction Type
- 3/ Exemple Perl - PHP
- 4/ CGI/PHP Principales différences
62IV.1/ Principe
La page générée par le serveur peut être
dynamique
- Deux Types de dynamique
- Dynamique prise en charge par le client
- Page animée
- Programme(s) exécuté(s) par le client prenant en
charge la dynamique - Dynamique prise en charge par le serveur
- Page créée dynamiquement par un programme exécuté
sur le serveur - Page statique affichée sur le client
63IV.1/ Principe
- Dynamique dans les clients
- Applets Java
- Fonctions JavaScript
- Plug-In
- Composants ActiveX (Microsoft)
64IV.1/ Principe (suite)
- Applets Java
- Programme exécuté par le client et dont
l affichage est effectué dans un espace clos de
la fenêtre - Programme autonome dont le nom est représenté
comme une URL dans la page d hôte - Intérêt Tous types daffichage (graphique,
interaction avec des images...) - Applications exécutables dans la plupart des
navigateurs.
65IV.1/ Principe (suite)
- JavaScript
- fonctions de manipulation de la page
- Les instructions sont dans le source HTML
- Intérêt Faire des contrôles sur des éléments
dun formulaire pour diminuer les dialogues entre
le client et le serveur.
66IV.1/ Principe (suite)
- Dynamique pris en charge par le serveur
- Récupérer et gérer des informations transmises
par un client - calcul, stockage dans une base de données,
- Génération dynamique de pages
- Génération dun fichier source HTML
- Affichage dun résultat (interrogation dune base
de données)
67IV.1/ Principe (suite)
- Génération du fichier source HTML
- Effectué par un programme indépendant appelé CGI
- Le programme peut être écrit dans de nombreux
langages (Perl, Visual Basic, C, PL/SQL,) - Pré-traitement par le serveur HTTPD de fichiers
HTML pré-existants comportant des instructions
conditionnant la génération de lignes HTML - langage PHP
68IV.2/ Transaction Type
- Le client reçoit une page contenant un formulaire
- Lutilisateur clique sur Envoi après avoir garni
les zones de saisie - Le navigateur demande au serveur une URL associée
au bouton Envoi tout en transmettant des couples
ltnomZone, valeurZonegt - lURL contient le nom du CGI à exécuter
69IV.2/ Transaction Type (Suite)
- Le serveur HTTPD reçoit lURL et lance
lexécution du CGI mentionné dans lURL en lui
transmettant les paramètres. - Le CGI traite les couples de paramètres et génère
une page HTML - La page est transmise au serveur HTTPD
- Le serveur transmet la page au client
- Le client affiche la page
70IV.2/ Transaction Type (Suite)
- Mécanismes dinvocation
- le programme est stocké dans un fichier
- le nom de ce fichier conditionne le mécanisme
dinvocation (CGI ou pré-traitement)
71IV.2/ Transaction Type (Suite)
- Invocation du CGI
- Deux types de programmes CGI
- exécutable (ex extension .exe sous W9x) le
programme est lancé - interprété (ex extension .cgi) les premières
lignes du programme spécifie l'interprète à
utiliser
72IV.2/ Transaction Type (Suite)
- Invocation du pré-processeur
- les extensions .PHP, .PHP4, .PHP3 sont des
fichiers HTML contenant des instructions PHP - le serveur transmet la page au pré-processeur
PHP. - le pré-processeur exécute les instructions PHP.
73IV.2/ Transaction Type (Suite)
- Transmission des paramètres deux méthodes
- méthode GET
- méthode POST
- la méthode est mentionnée dans la balise de
description du formulaire (dans la page HTML)
74IV.2/ Transaction Type (Suite)
- Méthode GET
- les paramètres sont transférés dans l URL du CGI
(paramètres visibles) - ex monCGI.cgi?nomMartinprenomJean
- Méthode POST
- les paramètres sont transférés dans le corps de
la requête (comme dans un fichier) les
paramètres ne sont pas visibles - ex monCGI.cgi
-
- nomMartinprenomJean
75IV.3/ Exemple Perl (sans paramètre)
http//igsi.univ-tlse1.fr/thevenin/bonjour.cgi
!/usr/bin/perl -gtIdentification de
linterpréte use CGI moncgi new
CGI() description de l'entete print
moncgi-gtheader(-typegt'text/html') print
moncgi-gtstart_html() print moncgi-gtp("Bonjour")
print moncgi-gtend_html() exit
76IV.3/ Exemple PHP (sans paramètre)
http//igsi.univ-tlse1.fr/thevenin/hello.php3
lthtmlgt ltbodygt lt?php echo("hello!")
?gt lt/bodygt lt/htmlgt
Balises des instructions PHP à l intention du
pré-processeur
77IV.3/ Exemple Perl (avec paramètres)
http//igsi.univ-tlse1.fr/thevenin/addition.html
lthtmlgt ltheadgt lttitlegt Addition effectue par un
CGI en PERL lt/titlegt lt/headgt ltbodygt ltform
name"formAddition" action"calculAddition.
cgi" method"get"gt premier nombre ltinput
type"text" name"nombre1"gt second nombre
ltinput type"text" name"nombre2"gt ltinput
type"submit" value "Additionner"gt lt/formgt lt/bo
dygt lt/htmlgt
CGI exécuté à la soumission
78IV.3/ Exemple Perl (avec paramètres)
http//igsi/thevenin/calculAddition.cgi?nombre1
10nombre220
!/usr/bin/perl use CGI moncgi new
CGI() a moncgi-gtparam("nombre1") b
moncgi-gtparam("nombre2") total a
b description de l'entete print
moncgi-gtheader(-typegt'text/html') print
moncgi-gtstart_html() print moncgi-gtp("Résultat
total") print moncgi-gtend_html() exit
79IV.3/ Exemple PHP (avec paramètres)
http//igsi.univ-tlse1.fr/thevenin/addition.html
lthtmlgt ltheadgt lttitlegt Addition effectue par PHP
lt/titlegt lt/headgt ltbodygt ltform
name"formAddition" action"calculAddition.
php" method"get"gt premier nombre ltinput
type"text" name"nombre1"gt second nombre
ltinput type"text" name"nombre2"gt ltinput
type"submit" value "Additionner"gt lt/formgt lt/bo
dygt lt/htmlgt
Page PHP à pré-traiter à la soumission
80IV.3/ Exemple PHP (avec paramètres)
http//igsi/thevenin/calculAddition.php?nombre1
10nombre220
lthtmlgt ltbodygt Résultat lt? total
nombre1 nombre2 echo(total) ?gt lt/bodygt
lt/htmlgt
814/ CGI/PHP Principales différences
- CGI
- impossible dutiliser un éditeur pour décrire la
page générée. - Les lignes HTML sont générées par des
instructions print ou des instructions
spécifiques aux balises - print moncgi-gtstart_html()
- print moncgi-gtp("Résultat total")
- gt
- ltHTMLgt
- ltPgt Résultat ??? lt/Pgt
824/ CGI/PHP Principales différences
- PHP
- Possibilité dutiliser un éditeur pour décrire la
page générée (Dreamweaver). - Les lignes HTML statiques sont écrites
directement dans le fichier PHP avec les balises
HTML - coût moindre lisibilité de la partie
algorithmique - bénéfice
- aspect WYSIWYG
- possibilité de traiter la requête et sa réponse
en une seule page.
83IV.3/ Exemple PHP (avec paramètres)
http//igsi/thevenin/additionToutEnUn.php
lthtmlgt ltheadgt lttitlegt Addition effectue par PHP
lt/titlegt lt/headgt ltbodygt ltform
name"formAddition" action"calculAdditionT
outEnUn.php" method"get"gt premier nombre
ltinput type"text" name"nombre1"gt second
nombre ltinput type"text" name"nombre2"gt ltinpu
t type"submit" value "Additionner"gt lt/formgt lt?
if(nombre1 ! 0 nombre2 ! 0)
?gt Résultat lt? total nombre1
nombre2 echo(total) ?gt lt/bodygt lt/html
gt
84V/ Le langage PHP
- 1/ Présentation
- 2/ Structure dun fichier
- 3/ Le langage
- 4/ Exemples
85V.1/ Présentation du langage
- Langage récent 1994
- Première version mature PHP3
- Version actuelle PHP4
- Utilisé par plusieurs millions de sites.
- Couplage avec Apache (possible aussi avec
dautres serveurs).
86V.1/ Présentation du langage (suite)
Dans la page affichée dans le client, on ne voit
pas le PHP
- Interprète PHP module de Apache
- instructions enchâssées dans le fichier HTML
- instructions à pré-traiter sont identifiées par
des balises - Traitement sur le serveur (contrairement à
JavaScript)
87V.1/ Présentation du langage (suite)
- Intégration avec de nombreux SGBD (MySQL,
Oracle,) - Pour plus dinformations
- http//www.php.net/
- Configuration utilisée Serveur Apache sous
Linux (RedHat) avec PHP4
88V.2/ Structure dun fichier
- Extension du fichier .php ou .php3 ou .php4
- Extension du fichier source (non pré-processé)
.phps - Les Balises pour encadrer les instructions PHP
- lt? ?gt
- ltscript language"php"gt lt/scriptgt
- lt?php ?gt
89V.3/ Le langagemanuel http//www.php.net/manual
/fr/manual.php
- Séparateur d instructions
- commentaires
- // commentaire sur une seule ligne
- commentaire sur une seule ligne
- / commentaire sur plusieurs lignes/
90Le langage - les variables simples
- Pas de déclaration et pas de typage explicite
- les noms des variables sont toujours préfixés par
un . - Exemples
- age 10 age est un entier
- nom "titi" nom est une chaîne
- pi 3.14 pi est un nombre réel
91Le langage - les variables tableaux
- Les tableaux ne sont pas déclarés et non typés.
- les noms des variables tableaux sont toujours
préfixés par un . - Le premier élément est en 0.
- Exemples
- daltons0 "Joe"
- daltons "Jack" Averell est le deuxieme
element (numero 1) - nb count(dalton) nb vaut 2
92Le langage - Les opérateurs
- Opérateur d'affectation
- nomVar expression
- Opérateurs arithmétiques
- opérateurs binaires , -, , / et (modulo)
- opérateur unaires et --
- i 0
- j i i et j valent 1
- i-- i vaut 0
93Le langage - Les opérateurs
- Opérateurs logiques
- And, Or, Xor et ! (not)
- Opérateurs de comparaison
- gt, lt, gt, lt, (égalité) et ! (différent)
- Opérateurs sur les chaînes
- . (concaténation)
94Le langage - Structure de contrôle
- Structure alternative
- SI condition ALORS
-
- SINON
- ...
- FIN SI
95Le langage - Structure de contrôle
- Structure itérative
- TANT QUE condition FAIRE
-
- FIN TANT QUE
- REPETER
- ...
- JUSQUA condition
- while (conditionPHP)
-
-
- do
- ...
-
- while(!conditionPHP)
96Le langage - Structure de contrôle
- Structure itérative
- POUR i allant de 1 à n
- ...
- FIN POUR
97Le langage - Définition de fonctions
- Fonction nomFonction (nomP1, nomP2, nomP3)
TypeRetour - DEBUT
- ...
- FIN
- function nomFonction (nomP1, nomP2, nomP3)
-
- return nomVarDuTypeRetour
98Le langage - Appel de fonctions
- function addition (n1, n2)
- somme n1 n2
- return somme
-
- utilisation de la fonction
- i 8
- monTotal addition(12,i)
99Le Langage - Fonctions utiles
- Afficher écrire dans la page HTML.
- echo(eltAafficher)
- echo (monTotal)
- print(eltAafficher)
- print (addition(12,i))
100Le Langage - Fonctions utiles
- Manipulation de chaînes.
- trim(chaine) enlever les blancs au début et à
la fin. - echo trim(" Joe ") affiche "Joe"
- substr(chaine, debut, long) recopier la
sous-chaine de long caractères débutant à debut. - echo substr("Averell",3,3) affiche "rel"
- strlen(chaine) longueur de la chaine
- echo strlen("Averell") affiche 7
101Le Langage - Fonctions Utiles
- Manipulation de dates
- getDate(chaine) obtenir la date système.
- date(format) obtenir la date dans un format
précis de son choix. - echo(jMY) affiche "26 JAN 20001"
102Le Langage - Fonctions Utiles
- Il est possible d'utiliser date() et mktime()
ensemble pour générer des dates dans futur ou
dans passé. - lt?php
- tomorrow mktime (0,0,0,date("m")
,date("d")1,date("Y")) - lastmonth mktime (0,0,0,date("m")-1,date("d"),
date("Y")) - nextyear mktime (0,0,0,date("m"), date("d"),
date("Y")1) - ?gt