Vous êtes sur la page 1sur 15

Introduction aux CGI et Php

Introduction aux CGI et Php


INTRODUCTION AUX CGI ET PHP 1. 2. CGI 1.1. 2.1. 2.2. 2.3. 2.4. 2.5. 3. 3.1. 3.2. 3.3. 4. 5. EXEMPLE SIMPLE PROGRAMME CRIT EN PERL SCRIPT CGI CRIT EN PERL VALIDATION D'UN CGI LES VARIABLES DENVIRONNEMENT DUN SCRIPT CGI INSTALLER DES SCRIPTS CGI SUR LE SERVEUR LINUX04 FONCTIONNEMENT EXEMPLE SIMPLE EXEMPLE AVEC APPEL LA FONCTION DATE PERL ET CGI

PROGRAMMATION SERVEUR EN PHP

EXEMPLE: COMPTEUR DE VISITE SYNTAXE 5.1. VARIABLE 5.2. STRUCTURES 5.2.1. Exemple de tableau 5.3. COMMENTAIRE 5.4. OPRATEURS 5.5. INSTRUCTION CONDITIONNELLE 5.6. BOUCLE 5.6.1. Exemple de boucles

1. CGI
Common Gateway Interface Permet au client (navigateur) d'accder des applications o Qui rsident sur le serveur Web o Qui peuvent produire des documents XHTML (mais peut produire dautres types de documents, des images par exemple). C'est ce qu'on appelle du contenu dynamique (ce qui est diffrent du XHTML dynamique). Les applications se trouvent sur le serveur et sont excutes par le serveur o Cest pourquoi le serveur doit tre configur pour accepter les CGI o Dans le cas d'un langage de programmation compil, les programmes doivent tre compils pour lenvironnement du serveur o On retrouve le plus souvent ces applications dans des langages interprts (Shell ou Perl), c'est pourquoi on parle habituellement de script.

2008 Hlne Desaulniers

Introduction aux CGI et Php o Les scripts peuvent lire et crire des donnes sur lordinateur serveur. CGI est une interface : o Un rpertoire dsign (habituellement cgi-bin) contient des programmes CGI. a veut dire que quand le serveur reoit une requte pour un fichier qui se trouve dans ce rpertoire, il ne retourne pas ce fichier : il va faire excuter le fichier et retourner le rsultat de cette excution. o Une srie de donnes que le serveur sauvegarde et qui sont accessibles au programme CGI : les variables denvironnement CGI. L'avantage d'un script CGI par rapport un script excut par le navigateur: o Ne dpend pas de la configuration du navigateur o Donne accs la puissance du serveur o Possibilit d'crire dans des fichiers o Accs aux bases de donnes Dsavantages o Lent o Plus complexe programmer que Javascript o Problme de scurit. La prsence de script CGI prsente des risques pour le serveur. Un script CGI est en fait une "fentre" sur le serveur. Si le logiciel serveur a des erreurs qui introduisent de "trous" dans la scurit, il est possible que des usagers malveillants exploitent ces trous pour accder des donnes non autorises ou mme dtruire des donnes. Il est ncessaire de prendre des prcautions.

1.1. Exemple
Voici le fichier dateXHTML.cgi
#!/bin/sh tmp=`/bin/date` cat << EndFile Content-type: application/xhtml+xml; charset=UTF-8 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta name="Author" content="Hlne Desaulniers"/> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/> <title> Simple script sh</title> </head> <body> <h1>La date courante sur le serveur est:</h1> <p>$tmp</p> </body> </html> EndFile

2008 Hlne Desaulniers

Introduction aux CGI et Php Interaction du client vers le serveur: 1. Si on entre lURL http://www.uqtr.ca/~helene/cgi-bin/dateXHTML.cgi dans la barre dadresse du navigateur o Le navigateur envoie une requte HTTP pour le document date.cgi dans le rpertoire cgi-bin de lusager helene Interaction du serveur vers le client: 2. Le serveur reoit la requte et fait sexcuter le programme dateXHTML.cgi . Il attend la rponse du script par l'intermdiaire de la sortie standard o Le programme dateXHTML.cgi sexcute. o Le principal travail que fait le script est de crer un document texte. Le script va simplement crire du texte sur la sortie standard. La premire ligne dans ce document est la dclaration du type de contenu: Content-type: application/xhtml+xml La deuxime ligne doit ncessairement tre une ligne vide Le reste du script va crire un document XHTML sur la sortie standard. Cette sortie standard sera redirige au serveur par l'intermdiaire de l'interface CGI Le script accs aux commandes du shell (ici date qui retourne la date courante) 3. Le serveur rpond la requte du navigateur en lui envoyant le document XHTML 4. Le navigateur affiche ce document XHTML Ce script est crit en shell; directement excutable sur une machine UNIX (il doit avoir des permissions en consquence)

2. Perl et CGI
Le langage de programmation Perl est un des langages les plus utiliss pour crire des script CGI. Pratical Extraction and Report Language Cr en 1987 par Larry Wall Langage interprt Possde plusieurs fonctions puissantes pour manipuler du texte (et souvent un script CGI doit produire un document HTML donc du texte) Largement disponible en freeware Plusieurs modules permettent d'ajouter des fonctionnalits. Facile installer localement

2008 Hlne Desaulniers

Introduction aux CGI et Php

2.1. Simple programme crit en Perl

first.pl est un programme Perl. L'interprteur Perl va lire, interprter et excuter

les instructions. Il est souhaitable de tester localement un script CGI avant de l'installer sur le serveur.

Mais first.pl n'est pas un script CGI. o Si on appelle ce programme par un navigateur on a une erreur. o Essayez http://linux04.uqtr.ca/~helene/cgi-bin/first.pl o C'est parce que le serveur ne reconnat pas le fichier produit comme un document xhtml. Il manque la ligne qui dclare le type de contenu. Instructions spars par ; Commentaires avec # Premire instruction: #!/usr/bin/perl o Le "shebang" (she pour sharp # et bang pour !) o C'est un commentaire qui indique au serveur o se trouve l'interprteur de Perl. o Pour les systmes "Unix" Le caractre "\n" indique un changement de ligne On aurait pu crire ( la place de print "hello, World!\n") o print ("Hello, World\n"); o print "Hello, ","World\n"; C'est que la fonction print s'attend recevoir comme argument une liste. La liste peut tre ou non entre parenthses. Si la liste contient plus d'un lment, ils sont spars par une virgule.
o o print "Hello, "; print "World\n"; print 'Hello, '; print "World\n";

Pour ce dernier exemple il faut prciser que l'usage de ' la place de " pour dlimiter une chane de caractres n'est pas exactement quivalent. Dans une chane de caractres dlimite par ' le caractre d'chappement \ n'est pas interprt. Ce qui fait que print 'World\n'; ne produira pas l'effet recherch:

2008 Hlne Desaulniers

Introduction aux CGI et Php

Les mots rservs sont sensibles la casse: print est diffrent de Print.

2.2. Script CGI crit en Perl


Ce premier exemple de script CGI crit en Perl va crire sur la sortie standard le code XHTML pour gnrer un document simple. Voici le contenu de firstCGIXHTML.pl

#!/usr/bin/perl -wT use strict; print "Content-type: application/xhtml+xml; charset=UTF-8 \n\n"; print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n " ; print "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\">\n"; print "<head>\n"; print "<title>Page test</title>\n"; print "</head>\n"; print "<body>\n"; print "<h2>Hello world!</h2>\n\n"; print "<p><a href=\"http://www.uqtr.ca/~helene/INF1001\">Site du cours </a></p>\n"; print "</body></html>\n";

L'instruction /usr/bin/perl wT donne en commentaire sert indiquer: o Le chemin pour accder l'interprteur Perl. Ici /usr/bin/perl o L'option w pour que le compilateur crive les messages d'avertissement o L'option T indique au compilateur de considrer risque toutes les donnes provenant de l'extrieur. L'instruction use strict va faire en sorte que le compilateur va empcher certaines constructions de code non scuritaires. On peut voir que le programme fait simplement une srie d'instructions d'criture. o Il crit du code XHTML qui sera envoy au serveur la fin de l'excution du programme. o La premire instruction d'criture est essentielle pour tout script CGI. Elle permet d'crire l'entte de la transaction http. Cet entte comporte la ligne Content-type: application/xhtml+xml; charset=UTF-8 suivi d'une ligne vide. Ce qui se traduit par l'instruction
print " Content-type: application/xhtml+xml; charset=UTF-8\n\n";

tant donn que le guillemet est le dlimiteur de chane de caractres pour Perl et qu'il est aussi le dlimiteur de chane pour les valeurs d'attributs en XHTML, il est ncessaire d'utiliser le caractre d'chappement \ pour utiliser un guillemet l'intrieur d'une chane de caractres de Perl. C'est pourquoi on retrouve:

2008 Hlne Desaulniers

Introduction aux CGI et Php

"<p><a href=\"http://www.uqtr.ca/~helene/INF1001\">Site du cours </a></p>\n"

Les caractres \n servent gnrer un changement de ligne dans le code XHTML. Essayez http://linux04.uqtr.ca/~helene/cgi-bin/firstCGIXHTML.pl Si vous regardez le source du document affich vous obtenez:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <title>Page test</title> </head> <body> <h2>Hello world!</h2> <p><a href="http://www.uqtr.ca/~helene/INF1001">Site du cours </a></p> </body></html>

Comparez avec le script perl. Version secondCGIXHTML.pl


#!/usr/bin/perl -wT use strict; print "Content-type: application/xhtml+xml; charset=UTF-8 \n\n"; print <<finDuHTML; <?xml version="1.0" encoding="UTF-8\"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <title>Page test</title> </head> <body> <h2>Hello world!</h2> <p><a href="http://www.uqtr.ca/~helene/INF1001">Site du cours </a></p> </body></html> finDuHTML

C'est un code plus simple crire : pas de guillemets donc pas ncessaires d'ajouter des caractres dchappement pour les guillemets: Print "<a href =\"http://..\"> Site du cours</a>" devient simplement
<a href = "http://.. ">Site du cours</a>

Plus besoin d'indiquer les changements de lignes avec

\n

Essayez http://linux04.uqtr.ca/~helene/cgi-bin/secondCGIXHTML.pl L'instruction indiquant la fin du bloc doit ncessairement commencer au dbut de la ligne et ne pas avoir de ;

2008 Hlne Desaulniers

Introduction aux CGI et Php

2.3. Validation d'un CGI


Quand on crit un script CGI, il faut bien sr que le programme soit valide pour le langage du script, mais le XHTML qui est gnr par le script doit aussi tre valide. Avec l'outil de validation de W3C, il est possible de valider le XHTML gnr par un script CGI. Il suffit de valider le script CGI sur le serveur (et non localement) de faon ce que le serveur retourne au valideur le document xhtml gnr par le CGI.

2.4. Les variables denvironnement dun script CGI


Quand un serveur Web reoit une requte, il conserve dans des variables les diffrentes informations sur cette requte. Par exemple l'adresse IP de l'usager qui a fait la requte, le nom de l'agent usager qui a fait la requte,C'est ce qu'on appelle les variables d'environnement. Les variables d'environnement contiennent galement de l'information sur le serveur. Par l'interface CGI, le serveur rend ces donnes accessibles un script CGI. Le simple programme Perl envValideXHTML.pl permet l'affichage de toutes les variables d'environnement en ordre alphabtique.
#!/usr/bin/perl -wT use strict; use CGI::Carp qw(fatalsToBrowser); my $key; print "Content-type: application/xhtml+xml; charset=UTF-8 \n\n"; print <<finDuHTML; <?xml version="1.0" encoding="UTF-8\"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <title>Variables d'environnement</title> </head> <body> <h1>Variables d'environnement CGI</h1> <p> finDuHTML foreach $key (sort (keys %ENV)) { print "$key = $ENV{$key}<br />\n"; } print "</p></body></html>";

Si on entre lURL: http://linux04.uqtr.ca/~helene/cgi-bin/envValideXHTML.pl dans la barre dadresse du navigateur Le programme va simplement afficher les variables denvironnement CGI

2008 Hlne Desaulniers

Introduction aux CGI et Php

Variables d'environnement CGI


DOCUMENT_ROOT = /var/www/html GATEWAY_INTERFACE = CGI/1.1 HTTP_ACCEPT = text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 HTTP_ACCEPT_CHARSET = ISO-8859-1,utf-8;q=0.7,*;q=0.7 HTTP_ACCEPT_ENCODING = gzip,deflate HTTP_ACCEPT_LANGUAGE = fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3 HTTP_CONNECTION = keep-alive HTTP_COOKIE = __utma=84728605.1312241110.1193162415.1226093583.1226175477.478; __utmz=84728605.1224878806.464.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); __utmc=84728605 HTTP_HOST = linux04.uqtr.ca HTTP_KEEP_ALIVE = 300 HTTP_USER_AGENT = Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 PATH = /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin QUERY_STRING = REMOTE_ADDR = 132.209.3.79 REMOTE_PORT = 1716 REQUEST_METHOD = GET REQUEST_URI = /~helene/cgi-bin/envValideXHTML.pl SCRIPT_FILENAME = /home/helene/public_html/cgi-bin/envValideXHTML.pl SCRIPT_NAME = /~helene/cgi-bin/envValideXHTML.pl SERVER_ADDR = 132.209.3.4 SERVER_ADMIN = root@localhost SERVER_NAME = linux04.uqtr.ca SERVER_PORT = 80 SERVER_PROTOCOL = HTTP/1.1 SERVER_SIGNATURE = Apache/2.0.46 (Red Hat) Server at linux04.uqtr.ca Port 80

SERVER_SOFTWARE = Apache/2.0.46 (Red Hat) UNIQUE_ID = ipXz5sCoAAEAAFgepucAAAAB

o Remarquez que la mthode pour la requte est GET Si vous entrez une chane de caractres avec la requte, par exemple http://linux04.uqtr.ca/~helene/cgi-bin/envValideXHTML.pl?chane , o Observez la valeur de la variable d'environnement QUERY_STRING o Observez galement la valeur de la variable d'environnement QUERY_STRING dans le cas o vous entrez "une chaine" la place de "chaine". Le navigateur a remplac le caractre "espace" par %20 qui est la valeur en ASCII du caractre espace, prcd du signe % Si je fais excuter le programme partir de linvite de commande jai dautres variables denvironnement. (Ce n'est plus l'environnement CGI, c'est l'environnement du systme.)

2008 Hlne Desaulniers

Introduction aux CGI et Php

2.5. Installer des scripts CGI sur le serveur Linux04


Rpertoire cgi-bin (dans public_html) Le fichier doit tre excutable, c'est--dire que le fichier doit avoir les permissions qui le rendent excutable o Sur un serveur Unix, la commande chmod permet de modifier les permissions d'un fichier. o La plupart des clients ftp donnent accs des commandes pour modifier les permissions des fichiers sur le serveur. o Avec FileZilla, Slectionner le fichier dont vous voulez modifier les permissions Avec le menu contextuel, slectionnez la commande Attributs du fichier... pour accder la bote de dialogue Changer les
attributs de fichiers

Cocher la permission Excution pour chaque catgorie d'usager (Attention, seul l'usager propritaire doit avoir la permission Ecriture.) o Avec SmartFtp, Slectionner le fichier dont vous voulez modifier les permissions Avec le menu contextuel, slectionnez la commande
Properties/CHMOD

Cocher la permission execute pour chaque catgorie d'usager (Attention, seul l'usager user doit avoir la permission write.) Le fichier doit tre un fichier texte o Quand vous transfrez le fichier sur le serveur avec un client ftp, assurezvous que le transfert se fait en mode texte. o Habituellement les clients FTP offrent 2 types de transfert: ASCII, pour du texte Binaire, pour du code. o Il est possible aussi de faire en sorte que le client FTP dtecte le type de transfert (texte ou binaire) selon l'extension du fichier, le transfert se fait alors en mode Auto. Pour un script Perl: o Premire ligne : #!/usr/bin/perl (retour aprs cette ligne) o Extension pl

3. Programmation serveur en Php


Un des outils les plus populaires actuellement pour faire de la programmation cot serveur est le Php. Php Hypertext Preprossessor ( l'origine: Personal HomePage Tools !!!) Cr par Rasmus Lerdorf en 1994 Langage de programmation cot serveur Permet de programmer o Groupe de discussion

2008 Hlne Desaulniers

Introduction aux CGI et Php o Engin de recherche o Panier d'achat Plusieurs versions. o Ici versions 4.3.2 Mlange de C et de Perl Avantage par rapport un CGI o Plus rapide parce que le traitement est habituellement intgr au serveur Web o Le code peut tre directement dans le document HTML o Compatible avec de nombreux gestionnaires de bases de donnes Rfrence: http://www.php.net/manual/fr/index.php

3.1. Fonctionnement
Quand le serveur reoit une requte pour un fichier avec l'extension php le processeur php traite le fichier pour produire un document xhtml o le document ressemble du xhtml sauf qu'il contient du code php. le processeur traite le code php et garde intact tout le reste (le xhtml) le serveur envoie le document xhtml produit par le processeur php

3.2. Exemple simple


<?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <meta name="Author" content="Hlne Desaulniers"/> <title>Un document PHP de base</title> </head> <body> <p> <?php echo "Bonjour, je suis un script PHP!"; ?> </p> </body> </html>

Extension php Fichier texte Selon la configuration du serveur, un script php est excut comme un script CGI ou il est interprt directement par le serveur. Sur linux04, les scripts sont interprts directement par le serveur Il y a plusieurs faons d'introduire du code php dans un document HTML, le plus recommand est de placer le code entre <?php et ?>

2008 Hlne Desaulniers

10

Introduction aux CGI et Php o <?php indique le dbut du code php au prprocesseur php
echo

o Affiche une chane de caractres o Fonctionne avec et sans les parenthses Les instructions sont spares par ";" Voir http://linux04.uqtr.ca/~helene/Php/exemple1XHTML.php . Consultez le code source du document affich par le navigateur et faites le lien avec le code php!

3.3. Exemple avec appel la fonction date


<p> <?php $date = date("l F d, Y"); print $date ; ?> </p>

La fonction date retourne une chane de caractres reprsentant la date du jour o Prend en paramtre une chane de caractres indiquant le format de la date: o l pour jour de la semaine en version longue o F pour le mois en version longue o d pour le jour du mois avec 2 chiffres o Y pour l'anne avec 4 chiffres o Voir http://ca.php.net/manual/fr/function.date.php $date est une variable o Le type de la variable est dtermin par le contexte. Ici c'est une variable de type chane de caractres La fonction print est comme echo sauf que a retourne une valeur o Voir http://ca.php.net/manual/fr/function.print.php o Comme argument print, $date n'est pas entre guillemets parce que ce n'est pas un chane de caractres. Voir http://linux04.uqtr.ca/~helene/Php/exemple2XHTML.php On peut intercaler le php et le html:

<?php $date = date("l F d, Y"); print "<p> Nous sommes le: <strong> $date </strong> </p>"; ?>

Voir http://linux04.uqtr.ca/~helene/Php/exemple2aXHTML.php Ici, l'argument print est une chane de caractres qui contient la fois des caractres et une variable. Au moment de l'valuation de l'argument print, la variable est remplace par sa valeur.

2008 Hlne Desaulniers

11

Introduction aux CGI et Php Si la chane de caractres de print n'est pas entre guillemets mais entre apostrophes, print 'Nous sommes le: <strong> $date </strong>'; alors les valeurs des variables l'intrieur de la chane ne sont pas substitues. o Voir http://linux04.uqtr.ca/~helene/Php/exemple2bXHTML.php

4. Exemple: compteur de visite


Le fichier compteur.txt contient le nombre de fois que le document a t visit. Le document va simplement ouvrir ce fichier, lire le nombre de visites, l'incrmenter et l'afficher. De plus le contenu du fichier compteur.txt sera mis jour et le fichier sera ferm. Voir http://ca.php.net/manual/fr/ref.filesystem.php pour la description du systme de fichiers en php. La fonction file_exists() retourne vrai si le fichier donn en argument existe. La fonction fopen() cre une ressource pour un fichier. o La fonction fopen retourne un manipulateur de fichier (file handle) qui sera utilis par la suite pour crire ou lire dans le fichier. o Le fichier peut tre ouvert en lecture (r), en criture (w), en ajout (a) ou en cration (x). o La fonction retourne false si l'ouverture du fichier a chou. La fonction fgets() renvoie la ligne courante d'un fichier. La fonction fputs()crit une chane de caractres dans un fichier. La fonction fclose()ferme le fichier.

<p> <?php $nomFichier = "/home/helene/public_html/Php/compteur.txt"; if (file_exists($nomFichier)){ $fichier = fopen("/home/helene/public_html/Php/compteur.txt", "r"); $nbVisite = fgets($fichier);//fgets retourne une chaine de caractres }else{ $fichier = fopen("/home/helene/public_html/Php/compteur.txt", "x"); $nbVisite = 1; } echo "Ce document a t visit $nbVisite fois"; fclose($fichier); //Le fermeture va permettre d'ouvrir en dbut de fichier $fichier = fopen("/home/helene/public_html/Php/compteur.txt", "w"); $nbVisite++; //la chane nbVisite sera automatiquement //transforme en entier avant de faire l'incrmentation fputs($fichier,$nbVisite); fclose($fichier); ?> </p>

La premire fois que le document est charg, le fichier compteur.txt n'existe pas et la fonction file_exists() va retourner false. Dans ce cas le fichier sera ouvert en cration.

2008 Hlne Desaulniers

12

Introduction aux CGI et Php o Il faut cependant que le rpertoire contenant le fichier crer (ici le rpertoire Php) ait les permissions d'criture. o Voir http://linux04.uqtr.ca/~helene/Php/exemple3XHTML.php Attention, une utilisation de fichier pour mmoriser un compteur d'accs peut prsenter des anomalies dans le cas par exemple o il y aurait 2 accs simultans au fichier. D'une faon gnrale, il vaut mieux garder ce genre d'information dans une base de donnes. Le gestionnaire de base de donnes va grer les problmes d'accs.

5. Syntaxe
5.1. Variable
Identifie par $ o Commence par une lettre ou du caractre _ o Suivi d'une lettre, un chiffre ou du caractre _ Un caractre majuscule est diffrent du caractre en minuscule Diffrents types o Chane de caractres (string) o Entier (integer) base dcimale, (15) base hexadcimale (0xf) base octale (017) o Nombre virgule flottante (double) 1.234 1.2e2 o Boolen (valeur TRUE ou FALSE)

5.2. Structures
Tableau o Introduit par le mot rserv array o La cl des lments d'un tableau peut aussi bien tre une chane de caractres qu'un entier. tant donn que la cl des lments d'un tableau peut aussi bien tre une chane de caractres qu'un entier, la notion de tableau de Php englobe la notion de liste associative. o Par dfaut la cl est de type entier. 5.2.1. Exemple de tableau
<p> <?php $aujourdhui = getDate(); $leJour = $aujourdhui['wday']; $leMois = $aujourdhui['mon'] -1; $jours= array('dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi'); $mois = array('janvier', 'fvrier', 'mars', 'avril', 'mai', 'juin', 'juillet', 'aot', 'septembre' ,'octobre', 'novembre', 'dcembre'); print "Nous sommes aujourd'hui le $jours[$leJour] $aujourdhui[mday] $mois[$leMois]" ; ?> </p>

2008 Hlne Desaulniers

13

Introduction aux CGI et Php

o La fonction getDate() retourne la date du jour dans une liste associative. Voir http://ca.php.net/manual/fr/function.getdate.php o $aujourdhui['wday'] contient la reprsentation numrique du jour de la semaine courante; 0 (pour Dimanche) 6 (pour Samedi) o $aujourdhui['mon'] contient la reprsentation numrique du mois (de 1 12) o $ ['mday'] contient la reprsentation numrique du jour du mois courant (de 1 31) o Remarquez que dans $aujourdhui[mday], la cl mday n'est pas entre guillemets (ou apostrophe) tant donn que la valeur du tableau associatif sera interpol (entre guillemets). o Voir http://linux04.uqtr.ca/~helene/Php/exempleDateFrXHTML.php Objet o Cr par la commande new Ressources o Type de donne spcial faisant rfrence une ressource externe (fichier ouvert, connexion une base de donnes,)

5.3. Commentaire
Commentaire sur plusieurs lignes: /* */ Commentaire sur une ligne // ou #

5.4. Oprateurs

Affectation: = Concatnation de chanes: . Oprateurs arithmtiques: +, -, *, /, % Oprateurs logiques: !, and, &&, or, || Oprateurs de comparaison: <, >,<=, >=, = =, !=

5.5. Instruction conditionnelle



If o if (condition){traitement} If..else o if (condition){traitement1} else {traitement2} If .. elseif o if (cond1){traitemen1t}elseif (cond2){traitement2} else {traitement3}

5.6. Boucle
for o for(exp1,exp2,exp3){traitement}

while o while (condition){traitement}

2008 Hlne Desaulniers

14

Introduction aux CGI et Php


do..while o do {traitement} while (condition) foreach o foreach(nomDuTableau as nomDeVariable){traitement}

o Fonctionne comme en Perl 5.6.1. Exemple de boucles Nous pouvons utiliser les instructions rptions en php pour gnrer plusieurs contrles d'un formulaire:
<p>Navigateur(s) utilis(s)<br /> <?php $listeNav = array('IE6', 'IE5.5', 'N7', 'Moz', 'FFX'); $navDefaut = 'FFX'; foreach ($listeNav as $leNav){ print "<input type='checkbox' name='" . $leNav . "' value='".$leNav ."'"; if ($leNav == $navDefaut){print " checked ='checked'"; } print "/> $leNav \n"; } ?> </p>

Remarquez l'utilisation de l'oprateur de concatnation pour concatner une chane de caractres une variable. Voir http://linux04.uqtr.ca/~helene/Php/exempleBoucleXHTML.php

2008 Hlne Desaulniers

15

Vous aimerez peut-être aussi