les serveurs http iis apache. historique la version 1.0 est disponible début décembre 1995. elle...
TRANSCRIPT
Les serveurs HTTP
IIS
APACHE
APACHE
Historique• La version 1.0 est disponible début décembre 1995.
• Elle fut crée par une équipe de Webmaster indépendant.
• Cette équipe fondée par les développeurs du NCAS (National Center for Supercomputing Applications) était à l’origine du plus populaire serveur web de l’époque : Urbain-Champain.
• Dès sa sortie, APACHE fut immédiatement porté sur la pluspart des environnements.
• APACHE est, aujourd’hui, un serveur fiable et robuste utilisé par de grandes entreprises comme
• IBM• MICROSOFT qui utilise APACHE comme serveur Internet.
Voir http://www.toolinux.com/
Configuration
1- arborescence
cgi-bin : par défaut contenant les cgi
conf : Contient les fichiers de configuration du serveur
log : Contient les log
users : Contient les sites des utilisateurs
htdocs : Répertoire par défaut contenant les pages publiées.
modules : Contient les modules optionnels pouvant complèter le serveur.
icons : Répertoires des Icones
Configuration
• Les logsaccess.log : Contient les informations concernant les accès
au serveur. error.log : Contient les erreurs produites par le serveur.
• Les fichiers de configurationAu nombre de trois : access.conf : Droits d'accès aux répertoires du serveur srm.conf : Emplacement des principaux fichiershttp.conf : Directives de fonctionnement du serveur lui-même
Configurationaccess.conf
Sur un répertoire
<Directory ”Nom répertoire">
Options None|All|Includes|ExecCGI order deny,allow
deny from all
allow from 126.52.3.52
AllowOveride None
</Directory>
Sur un URL
<Location /url>
</Location>
Sur un Fichier
<Files “fichier”>
</Files>
Allowoveride : le fichier .htaccess prend le relais sauf si NONE
AuthConfig : config pouvant être modifiée par .htaccess
FileInfo : droit accès aux fichiers
Configuration
srm.conf
1. Etiquette définissant l’emplacement des principaux fichiers :
DocumentRoot, UserDir, DirectoryIndex, AccessFileName, ScriptAlias
Ex : DocumentRoot /Apache/htdocs
2. Permet de lier les types de fichiers à des icônes lorsque le mode FancyIndexing est sur on Ex : AddIcon /icons/binary.gif .bin .exe
3. Permet d’associer un entête à un type de fichier
Ex : AddType text/html .shtml
4. Association des erreurs avec des textes appropriés Ex :
#ErrorDocument 500 "Le serveur a commis une erreur”
#ErrorDocument 404 /missing.html
Configuration
Httpd.conf
port : port TCP/IP par défaut 80
user : utilisateur sous lequel les CGI seront exécutés
ServerAdmin : adresse du gestionnaire de site
ServerRoot : répertoire de l’arborescence du serveur
ServerName : Nom du server
MaxClients : Nombre maximal de clients
ErrorLog : Fichier log des erreurs. relatif à ServerRoot.
CustomLog : Fichier des accès. Relatif à ServerRoot.
TimeOut : Durée maximale avant attente trop longue
Authentificationaccess.conf
<Location /exemple>AuthUserFile “c:\etc\passwd”
AuthName ‘Libellé”
AuthType Basic
require valid-user
</Location>
ATTENTION : Charger le module spécifique dans httpd.confLoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll
La création du fichier password doit être effectuée par l’outil htpasswd
Internet Information Server
IIS : Définition
• Logiciel de Microsoft
• Pour Windows NT à partir de NT 4.0
• Pour Windows NT / XP : IIS 5)
IIS : Définition
• Ensemble de 3 services sous Windows NT.
• Services utilisant le réseau internet
• Services de publication d’information «publishing services»
• Permet de rendre accessibles (mettre en ligne) des sites FTP, Web et NNTP.
IIS : Les services
FTP HTTPSMTP...
IIS
Service Service Service
IIS : DéfinitionService WWW
BROWSER WEB
SERVEUR NT AVEC IIS
FILTRE ISAPI
PROGRAMME CGIDLL ISAPI(dont ASP.DLL)
ASP
SGBD
Pages HTML
Configurer IIS Gérer l’accès aux sites
Onglet «Advanced»
• Autoriser certaines adresses IP ou domaines à se connecter
• Autoriser toutes les adresses IP ou domaines à se connecter sauf certains
• Limiter l’utilisation du réseau. Cumul de l’utilisation de tous les services
Configurer IIS Le compte du logon anonyme
Onglet «Service»
• Compte créé à l’installation d’IIS, avec le nom «IUSR_NomOrdinateur»
• Compte utilisé par NT pour les personnes qui se connectent en anonyme à un des services quand on autorise ce type d’accès
Configurer IIS Propriétés des répertoires
• Permettent de limiter les possibilités du client sur ces répertoires
• Propriétés «Read» et «Write» pour FTP
• Propriétés «Read» et «Execute» pour WWW
Configurer IISLes serveurs virtuels
Onglet «Directory»
• Permettent d’utiliser une autre adresse IP sur le même serveur Web
• On a donc plusieurs serveurs Web sur la même machine
Les technologies Serveur
SSI / CGI / ISAPI /
JAVA SERVLET / JSP /
PHP / ASP / DOT NET
SSI
SSILes SSI (Server Side Include)
Si elles sont supportées par le serveur http, elle seront compatibles avec tous les navigateurs puisque le code des SSI sera transformé en HTML.
Le format d'un appel SSI est le suivant : <!--#<balise><variables> -->
Les balises reconnues sont break, config, echo, email, exec, if, include, fsize, flastmod, label, goto et odbc.
Les commandes
break : La balise break permet de terminer le document HTML
config : Utilisée pour positionner les options de sortie HTML.
<!--#config timefmt="%d/%m/%y" -->
SSI
echo : Permet d'insérer certaines données dans une page HTML. Utilisez la variable var
<!--#echo var="DATE_LOCAL" --> est la date du jour
Afficher des variables d'environnement :
DATE_LOCAL la date et l'heure locales du serveur HTTP DOCUMENT_NAME le nom complet du document REMOTE_ADDR l'adresse IP du client distant REMOTE_HOST le nom de la station cliente REMOTE_USER le nom du client distant
SSIexec : La balise exec permet d'exécuter une commande quelconque par le système d'exploitation du
serveur.<!--#exec cmd='date' -->
goto : La balise goto permet de sauter vers une étiquette #label sans exécuter le code entre l'instruction courante et l'étiquette.<!--#goto ="suite" --> blablabla non renvoyé <BR>
<!--#label ="suite" -->
if : La balise if permet d'effectuer une exécution sous certaines conditions, par exemple, d'afficher une portion de texte HTML si une condition est remplie.
La syntaxe générale de la balise est la suivante : <!--#if expr="expression" --> ... <!--#elif expr="expression" --> ... <!--#else --> ... <!--#endif -->
include : Permet d'inclure le contenu d'un fichier dans la page HTML<!--#include vitual|file = "fichier" -->
SSI Exemple
<!--#if expr="${HTTP_USER_AGENT} = /MSIE 5/" --><!--#set var="brtype" value="msie5" -->
<!--#elif expr="${HTTP_USER_AGENT} = /MSIE 4/" --><!--#set var="brtype" value="msie4" -->
<!--#elif expr="${HTTP_USER_AGENT} = /MSIE 3/" --><!--#set var="brtype" value="msie3" -->
<!--#elif expr="${HTTP_USER_AGENT} = /MSIE 2/" --><!--#set var="brtype" value="msie2" -->
<!--#else --><!--#set var="brtype" value="unknown" -->
<!--#endif -->
<!--#include file="$brtype.txt"-->
CGI
Objectifs du chapitre
• Présentation des CGI
• Programme CGI
• Fonctionnement
• Ecriture d’une application CGI
• Utilisation avancée de CGI
Possibilités d'extension
API filtres ISAPI API filtres ISAPI API filtres ISAPI API filtres ISAPI
API applications ISAPI API applications ISAPI
Windows NT Server,Windows NT Server,Internet Information ServerInternet Information ServerC
GI
CG
I
Client WebClient WebClient WebClient Web
PerlPerlPerlPerl
ApplicationApplicationsimplesimple
ApplicationApplicationsimplesimple
applicationsapplicationsISAPI ISAPI
applicationsapplicationsISAPI ISAPI
InternetInternetDatabaseDatabase
ConnectorConnector(IDC)(IDC)
InternetInternetDatabaseDatabase
ConnectorConnector(IDC)(IDC)
scripts Perl scripts Perl scripts Perl scripts Perl
FiltresFiltresISAPIISAPI
ActiveActiveServerServerPagesPages(ASP)(ASP)
ActiveActiveServerServerPagesPages(ASP)(ASP)
Présentation de CGI«Common Gateway interface»
• Protocole de communication
• Permet à un browser Web et à un programme situé sur un serveur Web de dialoguer
Le support des CGI sur IIS
• Support total des applications CGI
• Basé sur STDIN/STDOUT
• Généralement en Perl
• Accès à toutes les variables HTTP
• Les applications CGI s'exécutent en dehors du processus
• Les applications CGI peuvent s'exécuter dans le contexte du client ou du serveur
Les Variables d'environnement CGI
• En-têtes HTTP
• AUTH_TYPE
• CONTENT_LENGTH
• GATEWAY_INTERFACE
• LOGON_USER
• PATH_INFO
• PATH_TRANSLATED
• QUERY_STRING
• REMOTE_ADDR
• REMOTE_HOST
• REMOTE_USER
• REQUEST_METHOD
• SCRIPT_NAME
• SERVER_NAME
• SERVER_PORT
• SERVER_PORT_SECURE
• SERVER_PROTOCOL
• SERVER_SOFTWARE
• URL
Présentation de CGI
f
Client Serveur Web
Client Serveur Web
Programme
Requête «classique»
Requête «CGI»
Programme CGI Figures imposées
• Respecter le protocole CGI en entrée :– Lire les paramètres d’entrée depuis «stdin» (si
la méthode utilisée par le browser est «POST»)– Lire les paramètres d’entrée depuis une variable
d’environnement (si la méthode utilisée par le browser est «GET»)
Programme CGI Figures imposées
• Respecter le protocole CGI en sortie : – Préciser le type de données retournées ( en
précisant la valeur de «Content-type»)– Retourner le résultat par «stdout»
Fonctionnement : Envoi d’informations à partir du browser
Envoi à partir d’un formulaireExemple de code HTML :<form action="cgi-bin/NomDuProgramme.exe" method="POST">
<input type="text" size="20" maxlength="256" name="NomDuControl" value="defaut">
<input type="submit" value="Submit Form"></FORM>=>Un champ de saisie pour entrer la requête et un bouton
«submit» pour l’exécuter
Fonctionnement : Envois d’informations à partir du browser
GET• Chaîne de requête à la
suite de GET• Le programme lit
depuis une variable d’environnement
• Chaîne limitée à 1024 octets
POST• Chaîne de requête
envoyée séparément• Le programme lit ses
arguments depuis stdin
• Pas de limite
Méthodes de passage de paramètres
Fonctionnement : Renvoi des informations au browser
• Le programme utilise stdout pour renvoyer au serveur le résultat
• Il peut renvoyer une page HTML, une image, ou d’autres types de données en modifiant le Content-type du header HTTP
Ecriture d’une application CGI Exemple : L’application la plus simple
void main() {printf("Content-type: text/html\n\n") ;
printf("<html>\n") ;printf("<head><title>Hello World</title> </head>\n") ;
printf("<body>\n") ;printf("<h1>Hello, world.</h1>\n");printf(«</body></html>\n«);}
ISAPI
Objectifs du chapitre
• Présentation d’ISAPI
• Différences avec CGI
• Les filtres
• Les extensions
Présentation d’ISAPIInternet Server Application Programming Interface
• Technologie de Microsoft et de Process Software, apparue en 1995
• Permet de doter les serveurs Web d’extensions logicielles
Présentation d’ISAPI
Ces applications peuvent:
• Fonctionner avec Microsoft Internet Information Server
• Etre créées avec Visual C++ (à partir de la version 4.1)
Présentation d’ISAPI
Ces applications prennent la forme de :
• Filtres : applications qui «filtrent» toutes les données circulant entre le browser et le serveur Web
• Extensions : comparables à des applications CGI, sont exécutées par le serveur suite à des requêtes du browser
Présentation d’ISAPI
BROWSER WEB SERVICE WWWFiltre ISAPI
Client Serveur
FILTRE
BROWSER WEB SERVICE WWW
EXTENSION
Application ISAPI
Introduction à la Programmation ISAPI
• Les filtres ISAPI– Contrôler l'activité
– Modifier le comportement
– Modifier les Entrées/Sorties
– Participer aux opérations intermédiaires
• Les extensions ISAPI– Etendent les
fonctionnalités
– Hautes performances
– Exécution In-process
– Plug-ins
– Activation par Script
– Maintain state
Les filtresDescription
• Dll qui se placent entre le browser et le service Web
• Toutes les données qui circulent, à partir ou vers le browser, peuvent être lues et modifiées
Les filtres Description
BROWSER WEB SERVICE WWWFiltre
Client Serveur
Les filtres ISAPI
• Pourquoi: Opérations particulières, superviser/modifier les entrées/sorties, applicables à toutes les requêtes
• Architecture: Appelle les filtres pour des opérations immédiates– Plusieurs filtres peuvent être actifs
simultanément– Plusieurs threads peuvent faire appel aux
filtres
Le support d'un Filtre
• Plusieurs filtres peuvent être enregistrés et traiter chaque requête
• Chaque filtre doit indiquer à quel type de notification il s'intéresse
• Quand un filtre est appelé, il peut:– Traiter entièrement la requête– Traiter la requête et la passer au filtre suivant du
type de notification courante– Assumer tout le traitement de la notification
courante
Différences entre ISAPI et CGI
ISAPI• Des .dll• Des filtres et des
applications• Encore très peu
répandu
CGI• Des .exe• Seulement des
applications• Standard mondial
Différences entre ISAPI et CGI
ISAPI• Souvent utilisé avec
un langage compilé comme C ou C++
• Outil d’aide à la réalisation en C++, pour les handlers et les entrées
CGI• Souvent utilisé avec
un langage de script (PERL)
• Rien, le développeur doit décrypter la chaîne d’entrée tout seul comme un grand
Différences entre ISAPI et CGI
ISAPI• Une dll regroupe un
ensemble de fonctions• Pour n utilisateurs, une
dll est en mémoire• A chaque utilisateur,
un thread est lancé
CGI• Un exe contient une
seule fonction• Pour n utilisateurs, n
exe sont en mémoire• A chaque utilisateur,
un processus est lancé
Différences entre ISAPI et CGI
Dll ISAPI
Service Web Service Web3 utilisateurs 3 utilisateurs
ApplicationCGI
threads
JAVA
JAVA - Les SERVLET
•Le JSDK (Java Servlet Development Kit) fournit un modèle de classes pour l'écriture des Servlet. Il est disponible sur : http://java.sun.com/products/servlet.
•Les Servlets sont des modules JAVA exécutés côté serveur pour générer des pages HTML dynamiques. Les Servlets sont en fait des petits serveurs spécialisés.
•Les servlets s'exécutent dans un moteur de servlet (parfois appelé conteneur de servlet) utilisé pour établir le lien entre la servlet et le serveur web
JAVA - Les SERVLET•Le Conteneur Servlet se charge du cycle de vie d'une Servlet. Il crée un Instance, appelle la méthode init () de l'instance, puis il appelle la méthode service () et enfin avant de la détruire appelle la méthode destroy ().
•Une Servlet est crée en étendant soit la classe GenericServlet, soit la classe HttpServlet.
•GenericServlet est déjà une extension de HttpServlet. Elle propose des fonctionnalités spécifique à HTTP tout en simplifiant la création d'une Servlet.
•Une Servlet est chargée une seule fois et peut traiter plusieurs requêtes HTTP .
JAVA - La structure d'une SERVLET•Chaque requête provoque la création d'un Thread par le moteur qui éxécute la méthode Service de la Servlet.
•S'il s'agit une méthode GET (resp. POST), la méthode service transmet la requête à la méthode doGet (resp. doPost).
•Pour établir la réponse HTTP afin d'envoyer une réponse au client,• l'objet HttpServletReponse de la méthode doGet (resp. doPost), permet :
• d'envoyer le type MIME par la méthode setContentType • d'extraire l'objet PrintWriter grâce la méthode getWriter () qui va permettre de générer le contenu du flot de sortie.
JAVA - Exemple d'une SERVLETimport javax.servlet.*;import javax.servlet.http;import java.io.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) {
res.setContentType("text/html");
PrintWriter out = res.getWriter ();
out.println("<HTML>");out.println("<BODY>");out.println("<HELLO WORLD>");
out.println("</BODY>");out.println("</HTML>");out.close ();
}}
Servlet
doGet
Type MIME
Flot de sortie
LES JSP
• JSP (Java Server Page) • Les pages web JSP sont une technologie développée
par Sun basée sur Java qui simplifie le processus de développement de sites web dynamiques
• Lorsque la page est demandée par un utilisateur en HTTP, alors le serveur web HTTP va transmettre sa requête à un moteur de JSP qui va interpréter le page, compiler le code et générer la réponse.
LES JSP - Exemple
<html><body><% String visitor = request.getParameter("name");if (visitor == null) visitor = " World"; %> Hello, <%= visitor %>! </body>
</html>
JSP - Installation
• Les éléments nécessaires pour utiliser JSP sont : – un serveur HTTP (Apache, IIS…) – un logiciel implémentant le conteneur (ou
moteur) de JSP est nécessaire (Tomcat, Netscape entreprise Server)
– une Java Virtual Machine tel que JDK (Java Development Kit) qui contient une JVM, un compilateur...
JSP - Exécution
• Les JSP sont dérivées des servlets (les JSP sont transformées par le conteneur en Servlet),
• Elles sont donc compilées en une classe Java dérivant de la classe HttpServlet
• le serveur Web appelle le conteneur de JSP qui transforme la page JSP en code source Java et compile la classe afin de fournir un fichier compilé (d'extension .class).
• Le script JSP est donc devenu une Servlet.
JSP - Exécution
PHP
PHP - Introduction• PHP, signifie "PHP: Hypertext Preprocessor" (Preprocesseur HyperTexte), est un langage de script HTML.
• La plupart de sa syntaxe est empruntée aux langages C, mais y ajoute plusieurs fonctionnalités uniques.
• Le but de ce langage est de permettre aux développeurs web de concevoir rapidement des sites, aux pages dynamiques
• PHP 3.0 est un logiciel libre : vous pouvez le modifier et/ou le modifier sous licence GNU General Public License, telle que publiée par Free Software Foundation;
• Sources, documentation, executable : www.php.net
•PHP supporte de nombreuses bases de données (et aussi ODBC).
PHP - Installation
• Le langage PHP a été conçu durant l'automne 1994 par Rasmus Lerdof.
• Multi-plateforme, il est disponible sur UNIX, LINUX, WINDOWS.
• Sur WINDOWS, PHP peut-être couplé avec :
· Personal Web Server (Version la plus récente recommandée)· Internet Information Server 3 ou 4· Apache 1.3.x· Omni HTTPd 2.0b1
PHP - Premier Exemple
<html><head>
<title>Exemple</title></head>
<body><?php echo ”Je suis un script PHP!"; ?>
</body></html>
Instruction PHP
Balises HTML
• PHP est un langage de script HTML, qui fonctionne coté serveur.
• Il possède les même fonctionnalités que les autres langages permettant d'écrire des scripts CGI, comme collecter des données, générer dynamiquement des pages web ou bien envoyer et recevoir des cookies.
PHP - Les variables & Les variables dynamiques
• Une variable classique est affecté avec l'instruction suivante:
$a = "bonjour";
• Il est pratique d'avoir des noms de variables qui sont variables.
• C'est-à-dire un nom de variable qui affecté et utilisé dynamiquement.
• Une variable dynamique prend la valeur d'une variable et l'utilise comme nom d'une autre variable.
$$a = "le monde";
• A ce niveau, deux variables ont été définies et stockées dans l'arbre des symboles
$a avec comme valeur "bonjour" et $bonjour avec comme valeur "le monde".
PHP - Les types
• PHP est faiblement typé.
• Les type de base sont : ENTIER, les DOUBLE, les CHAINES :
$str = <<< FINCeci est unechaine decaractèresFIN;
• Pas de type DATE, ni de type BOOLEAN.
PHP - Assignation par référence
• Le & placé au début de la variable qui est assignée permet d’assigner par référence.
<?php$v1 = ‘Valeur1’; $v2 = &$v1; $v2 = ‘valeur 2’; echo $v1; echo $v2;
?>
• Seule les variables nommées peuvent être assignées par référence.
PHP - Les variables prédéfinies• Variables Apache•Elles sont spécifiques et créées par le serveur Apache.SERVER_NAME : nom du serveur hôte SERVER_PROTOCOL: Nom et révision du protocole de communication REQUEST_METHOD : Méthode de requête utilisée pour accéder à la pageQUERY_STRING : La chaîne de requête, DOCUMENT_ROOT : La racine sous laquelle le script courant est exécuté
• Variables PHPElles sont créées par PHPargv : Tableau des rguments passées au script. argc : Contient le nombre de paramètres de la ligne de commande passés au script PHP_SELF : Le nom du fichier du script en cour d'éxécution, HTTP_COOKIE_VARS : Un tableau associatif HTTP_GET_VARS : Un tableau associatif HTTP_POST_VARS : Un tableau associatif
• Variables d’environnementCes variables sont importées depuis l'environnement sous lequel PHP fonctionne.EX : PATH
PHP - Les tableaux
Deux types de tableaux :tables de hashage (tableaux associatifs) tableaux indexés (tableaux scalaires).
Tableaux à une dimension :<?php
$a[0] = "abc";$a[1] = "def";$b["foo"] = 13;
?>Ajout d’un nouvel élément en fin de tableau
<?php$a[] = "Bonjour"; // $a[2] == "Bonjour";$a[] = "Monde"; // $a[3] == "Monde";
?>
Un ensemble de fonctions sont disponibles pour agir sur les tableaux :asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort(), uksort(), count().
PHP - Les tableaux parcours
<?php
reset($arr);while (list($key, $value) = each ($arr)) {
echo "Clé: $key; Valeur: $value<br>\n";}
foreach ($arr as $key => $value) {echo "Clé: $key; Valeur: $value<br>\n";
}
?>
Pointeur interne du tableau au début
Retourne une paire clé /valeur
Permet d ’assigner une liste de variables
Extension de foreach
PHP - Les tableaux à plusieurs dimensionsPour chaque dimension du tableau, ajouter une nouvelle [clef] à la fin.
<?php$a[1] = $f; $a["foo"] = $f;$a[1][0] = $f; $a["foo"][2] = $f;$a[3]["bar"] = $f; $a["foo"][4]["bar"][0] = $f; #
?>
La méthode la plus simple à comprendre est l’utilisation de la fonction array(). $a = array( "pomme" => array(
"couleur" => "rouge","saveur" => "sucrée","forme" => "rond"),
"orange" => array("couleur" => "orange","saveur" => "amère","forme" => "rond”));
Mélanger les types Associatifs / Scalaires
PHP - Les opérateurs
• Les opérateurs arithmétiques : + - * / %• Les opérateurs d'assignement : += -= *= /= %= .=• Bitwise Operators : & | ^ ~ << >>• Opérateurs de comparaison : == === != < > <= >=
=== Egalité et meme type
• Opérateur de contrôle d'erreur : @@ permet d’ignorer les warning
• Opérateur d'exécutions : ` `$d = ` DIR `
•Incrementing/Decrementing Operators : ++ --•Les opérateurs logiques : && and || or xor ! •String Operators : .
PHP - Require & Include• require()La commande require() se remplace elle même par le contenu du fichier spécifié, comme les préprocesseurs C le font avec la commande #include.
• include()La fonction include() inclue et évalue le fichier spécifié en argument.<?php$files = array (’premier.inc’, ’second.inc’, ’troisieme.inc’);for ($i = 0; $i < count($files); $i++) {
include $files[$i];}?>include() diffère de require() car le fichier inclus est ré-évaluée à chaque fois que la commande est exécutée.
include_once () & require_once ()
PHP - Les structures de contrôles• Les conditionnelles
• if else elseif• switch case
• Les itératives• while• do while• for• foreach
Exemple : $a = array (1, 2, 3, 17);foreach ($a as $v) {
print "Valeur courante de \$a: $v.\n";}
• Les ruptures• break• continue
PHP - Les fonctions• En PHP, les fonctions peuvent être utilisées avant d’étre définies.• PHP supporte un nombre variable d’arguments et l’assignation des valeurs par défaut.
func_num_args() : retourne le nombre d’arguments de la fonction
func_get_arg(n) : retourne un argument
func_get_args() : retourne un tableau contenant les arguments
<?PHPfunction test (arg1 = val_defaut1, arg2 = val_defaut2) { .. }
test ();?>
PHP - Les fonctions passage des arguments par références
• Par défaut, les arguments sont passés à la fonction par valeur.• PHP supporte le passage d’arguments par référence.
• Pour passer un argument par référence, utiliser ’&’ devant l’argument dans la déclaration de la fonction :
function add_some_extra(&$string) { $string .= ’, et un peu plus.’;
}$str = ’Ceci est une chaîne’; add_some_extra($str); echo $str;
Pour passer une variable par référence à une fonction ponctuellement :function add_some_extra($string) { … }$str = ’Ceci est une chaîne’; add_some_extra(&$str); echo $str;
PHP - Class & Objet• Une classe est un ensemble de propriétés et de méthodes.
• Une classe est définie par la syntaxe suivante :class exClass {
var $p1;var $p2;function exClass () {}
}
• Un objet est instancié par l’instruction new :obj = new exClass ();obj->p1 = ‘TEST’;
• Une Class peut-être enrichie par héritage : class exFilleClass extends exClass {}
• Un objet peut se référencer par l’objet $this.
Définition d ’une class
Instanciation d ’un objetAccès aux propriétés &Méthodes d ’un objet
Héritage
Référence l ’objet courant
PHP - Images Dynamiques<?php
Header("Content-type: image/png");
$string=implode($argv," ");$im = ImageCreatefromPNG("images\\bouton.png");$orange = ImageColorAllocate($im, 0, 20, 60);$px = (imagesx($im)-7.5*strlen($string))/2;$py = (imagesy($im))/2;ImageString($im,3,$px,$py,$string,$orange);ImagePNG($im);ImageDestroy($im);
?>
Image de fond
Entete HTTP
• PHP n'est pas limité à la création de fichier HTML.
• Il peut aussi servir à créer des images GIF/JPG/PNG à la volée,.
• Cet exemple sera utilié dans une page HTML : <img src="button.php3?text">.
Identifiant IMG
Créée L’IMAGE
PHP - Images Cliquables HTML><BODY>
<FORM action = 'index.php' name = 'img'><INPUT type = "image" src = "image.php?CNAM">
</FORM><BR>
<?phpprintf ("X : %d <BR>",$x);printf ("Y : %d <BR>",$y);
?></BODY></HTML>
Coordonnées X, Y du clique
Permet de récupérer dans un script PHP les coordonnées X, Y relatives d’un clique effectuée sur une Image.
Image
PHP - Les COOKIES
• Le PHP supporte les cookies HTTP de manière totalement transparente,
• La fonction setcookie() sert à créér un cookie.
• Tout cookie envoyé depuis le client sur le serveur sera stocké sous forme de variable, comme pour les méthodes POST ou GET.
• Pour assigner plusieurs valeurs à un seul cookie, il vous faut ajouter les caractères [ ] au nom du cookie.
• Par exemple :SetCookie ("MyCookie[]", "Testing", time()+3600);
PHP - Accès à une Base de données
• PHP dispose, en natif de plusieurs fonctions spécifiques aux bdd du marché :
•dBase•INGRES•INFORMIX•INTERBASE•SQL SERVER•mSQL
$con = mysql_connect("126.52.3.52") or die ("erreur”);
mysql_select_db("test");r = mysql_query ("select * from personne);
mysql_result (r,1,1);
echo (r);
mysql_close($con);
•MySQL•ODBC•ORACLE•Ovrimos SQL•PostgreSQL
Connexion au serveur
Base Requête
Résultat
PHP - Fonctions MySQL
•mysql_connect (s,u,p) : connexion à un serveur de données
•mysql_select_db(bd) : selectionne une bd
•mysql_query (req) : envoie une rêquete au serveur
•mysql_num_fields () : nombre de champs
•mysql_num_rows () : nombre de lignes
•mysql_result (result, row,field): contenu d’un champ
•mysql_field_name (i) : nom du champ
•mysql_field_type (i) : type d’un champ
PHP - Fonctions Supplémentaires en PHP
• Gestion de l’annuaire LDAP• Gestion de la DOM XML• Correcteur orthographique• Gestion des email• Gestion FTP• Gestion réseaux• Gestion des paiements sécurisés• Gestion des fichiers ZIP• Gestion des PDF• Génération d’objet FLASH• Cryptage