Programmer en PHP. Julien Gaulmin version 1.44

Dimension: px
Commencer à balayer dès la page:

Download "Programmer en PHP. Julien Gaulmin julien.gaulmin@alcove.fr. version 1.44"

Transcription

1 Programmer en PHP Julien Gaulmin version 1.44 Copyright c 2000 Julien Gaulmin julien.gaulmin@alcove.fr, Alcôve Ce document peut être reproduit, distribué et/ou modifié selon les termes de la Licence GNU de Documentation Libre (GNU Free Documentation Licence) dans sa version 1.1 ou ultérieure telle que publiée, en anglais, par la Free Software Foundation ; sans partie invariante, avec comme première de couverture (front cover texts) les deux premières pages, et sans partie considérée comme quatrième de couverture (back cover texts) Une copie de la licence est fournie en annexe et peut être consultée à l url : http :// Alcôve Centre Paris Pleyel Tél. : bd Anatole France Fax : Saint-Denis, France alcove@alcove.fr, Toile : 1

2 Table des matières Chapitre 1 Introduction au langage La programmation web Présentation de PHP Installation et configuration de PHP 29 Chapitre 2 Les bases du langage Syntaxe du langage Les structures de contrôle Fonctions Programmation orientée objet 126 Chapitre 3 Fonctionnalités essentielles Connexions et utilisateurs Gestion des sessions Autres fonctionnalités 169 Chapitre 4 Utilisation avancée Interopérabilité avec des applicatifs Traitement des chaînes de caractères Fonctionnalités utiles Conclusion 254 3

3 Chapitre 1 Introduction au langage 4 Introduction au langage Objectifs du chapitre Principes de la programmation web ; Présentation de PHP ; Installation et configuration. 5

4 Section 1 La programmation web 6 La programmation web Objectifs de la section Rappels d HTML ; Le web interactif ; Notions de CGI ; Distinction PHP/CGI. 7

5 La programmation web Rappels d HTML H yper T ext M arkup L anguage ; Définit la structure logique d un document web ; Composé d un ensemble de commandes de formatage ; Basé sur la notion d environnement possédant un début et une fin -> délimiteurs : tags ou marqueurs. 8 La programmation web Les marqueurs sont définis entre <> ; Ex : <marqueur>...</marqueur> La plupart des environnements peuvent être imbriqués selon des règles bien définies ; Ex : <H1><B>Mon titre</b></h1> Il n est pas permis de faire chevaucher des environnements. Ex : <H1><B>Mon titre</h1></b> 9

6 La programmation web Structure générale d une page HTML : <HTML> <HEAD> <TITLE>Mon titre</title> <!-- Mes commentaires --> </HEAD> <BODY> <H1>Mon chapitre</h1> <P>Mon paragraphe</p> <ADDRESS>Mes coordonnées</address> </BODY> </HTML> 10 La programmation web Le web interactif Deux principaux types d interactions : côté serveur ( Server-side scripting ), côté client ( Client-side scripting ). Chacun des types précédents se divise encore en sous-catégories. 11

7 La programmation web Côté client : scripts embarqués dans la page HTML ( HTML-embedded scripting ) -> Javascript..., applets -> Java, ActiveX..., plugins propriétaires. 12 La programmation web Côté serveur : CGI -> Perl, C, Shell..., Interpréteurs intégrés au serveur HTTP scripts embarqués dans la page HTML ( HTTPD modules, HTML-embedded scripting ) -> PHP, ASP-VBScript..., scripts à la CGI ( CGI-like ) -> mod_perl/apache Servlets -> Java. 13

8 La programmation web WWW interactif Server-side scripting Client-side scripting CGI (Perl, C, Shell...) HTTPD modules Servlets (Java) Applets (Java, ActiveX) HTML-embedded scripting (PHP, ASP-VBS) CGI-like (mod_perl /Apache) HTML-embedded scripting (JavaScript) 14 La programmation web Notions de CGI C ommon G ateway I nterface ; Interface de communication pour la création de programmes capables d être exécutés par un serveur HTTP ; Permet la création dynamique de pages du côté serveur ; Généralement utilisé pour servir les requêtes en provenance d une page de formulaire HTML. 15

9 La programmation web Principe de la CGI : GET/POST "emballage" APPEL "variables" Formulaire HTML Browser RÉPONSE HTTP Serveur HTTP RÉSULTAT CGI Programme externe 16 La programmation web if ($want_page==1){ $want_page=0 ; } Scénario de génération dynamique de page via la CGI : l utilisateur remplit un formulaire HTML et le valide, le navigateur ouvre une connexion vers le serveur HTTP et lui envoie la requête correspondante (nom du CGI + paramètres), le serveur HTTP invoque le script CGI en lui transmettant les paramètres de la requête, le script CGI génère une page correspondant aux paramètres, le serveur envoie la page au navigateur et ferme la connexion, le navigateur affiche la page. 17

10 La programmation web Distinction PHP/CGI Tous les deux sont situés côté serveur mais : PHP : le code PHP est contenu dans les pages HTML Ex : <?php $username = "toto" ;?> <HTML><BODY><H1> Bonjour monsieur <?php print $username?> </H1></BODY></HTML> CGI : le code HTML est contenu dans le code du CGI Ex : #!/usr/bin/perl -w $username = "toto" ; print "Content-Type : text/html\n\n" ; <HTML><BODY><H1>Bonjour monsieur $username</h1></body></html>" ; 18 Section 2 Présentation de PHP 19

11 Présentation de PHP Objectifs de la section ; Vue d ensemble du PHP ; L histoire du langage ; Ses avantages ; Et ses inconvénients. 20 Présentation de PHP Vue d ensemble du PHP A server-side, HTML-embedded scripting language Langage de script côté serveur ; Embarqué dans les pages HTML ; Syntaxe héritée du C et du Perl ; Extensible (nombreuses bibliothèques) ; Supporte pratiquement tous les standards du web ; Logiciel Open Source (Licence PHP de type BSD). 21

12 Présentation de PHP L histoire du langage Créé par Rasmus Lerdorf en 1994 pour des besoins personnels ( P ersonnal H ome P age) ; Première version publique en 1995 sous le nom de Personnal Home Page Tools capable de gérer un livre d or, un compteur d accès... ; 22 Présentation de PHP Deuxième version plus complète (PHP/FI) en 1995 avec gestion des formulaires HTML et des bases msql ainsi qu un nouvel interpréteur ; PHP/FI est utilisé par environ sites web en 1997 ; 23

13 Présentation de PHP En 1997, le projet devient un travail d équipe et l interpréteur est réécrit par Zeev Suraski et Andi Gutmans pour donner la version PHP3 ; La version 3 de PHP s est rapidement imposée pour atteindre environ sites web durant l été 1999 (source : Netcraft) et devenir P HP : H ypertext P reprocessor ; 24 Présentation de PHP Aujourd hui le projet est chapeauté par Zend, une société privée créée par Suraskyi et Gutmans, qui commercialise des logiciels complémentaires à PHP ; La dernière version en date est la PHP4 (2000). Elle possède un interpréteur optimisé par Zend et s ouvre à d autres serveurs HTTP qu Apache. 25

14 Présentation de PHP 26 Présentation de PHP Les avantages de PHP Le client n a pas accès au code source puisque celui-ci est interprété avant envoi (!= Javascript) ; Le client ne reçoit que le résultat de l exécution du script ; On peut configurer le serveur HTTP pour masquer complètement la qualité dynamique des pages ; Le code n est pas alourdi par des commandes destinées à générer la page HTML (!= CGI) ; 27

15 Présentation de PHP Le langage possède de nombreuses bibliothèques/modules pour : le calcul mathématique, la création dynamique d images, la gestion de sessions, les connexions sécurisées (SSL), l accès à la plupart des SGBD, l accès aux bases LDAP Présentation de PHP Les inconvénients de PHP Pas aussi rapide que mod_perl ou certains CGI mais plus portable ; Pas aussi simple que ASP-VBScript mais plus respectueux des standards web et sous licence Open Source (-> plus facilement extensible) ; Pas d interactivité au niveau du client (-> on doit quand même utiliser du Javascript dans ces cas là). 29

16 Section 3 Installation et configuration de PHP 30 Installation et configuration de PHP Objectifs de la section Installation de PHP ; Configuration via php3.ini/php.ini ; Premier test ; Ajout de nouveaux modules. 31

17 Installation et configuration de PHP Installation Trois types d installation : module dynamique du serveur HTTP (ex : mod_php pour Apache), module statique du serveur HTTP (20% plus rapide que mod_php) qui nécessite de patcher le serveur HTTP et de tout recompiler, sous forme de CGI (pour les serveurs HTTP non supportés). 32 Installation et configuration de PHP Télécharger des sources sur http ://fr.php.net (mirroir français du site officiel de PHP) ; Installer les sources dans un répertoire différent de celui du serveur HTTP (ex : /usr/local/src/php/) avec la commande tar -zxvf php-<version>.tar.gz -C /usr/local/src/php/ ; Configuration de l installation :./setup (configuration interactive), ou./configure <options> (./configure --help pour connaître toutes les options). 33

18 Installation et configuration de PHP Compilation et installation : make ; su ; make install Association des fichiers contenant du code PHP avec l interpréteur PHP dans la configuration du serveur HTTP Ex : serveur Apache (srm.conf ou httpd.conf) PHP3 -> AddType application/x-httpd-php3.php PHP4 -> AddType application/x-httpd-php.php Sous Debian, tout ceci est simplifié grâce à l utilitaire apt-get (remplacer php3 par php4 pour PHP4) : apt-get install php3 pour le module dynamique Apache, ou apt-get install php3-cgi pour le CGI. 34 Installation et configuration de PHP Configuration de PHP (php3.ini/php.ini) Généralement dans /etc/php<version>/apache/ ou /usr/lib/php<version>/ ; Ce fichier (php3.ini pour PHP3 et php.ini pour PHP4) contrôle les principaux comportements de PHP ; Très clair et facilement configurable ; Syntaxe : clef = valeur, clef = "valeur complexe", ; commentaire, booléen -> 1, On, True, Yes / 0, Off, False, No. 35

19 Installation et configuration de PHP Segmenté en parties : options du langage, ressources maximales allouées à PHP, gestion des erreurs, gestion des données HTTP, fichiers et répertoires, extensions dynamiques (modules), configuration des modules. Pour que PHP prenne les modifications en compte il faut relancer le serveur HTTP (ex : serveur Apache -> apachectl restart). 36 Installation et configuration de PHP Premier test Créer le fichier test.php : <?php phpinfo() ;?> Placer ce fichier à la racine du serveur HTTP (ou dans le répertoire doc_root si vous avez activé l option safe_mode) ; Charger l URL http ://localhost/test.php sur votre navigateur web ; Bravo! Vous avez créé votre première page dynamique avec PHP et en plus elle vous résume toutes les fonctionnalités PHP qui sont configurées sur votre machine. 37

20 Installation et configuration de PHP Installer un nouveau module PHP Placer le nouveau fichier <nom>.so dans extension_dir (par défaut /usr/lib/php<version>/apache mais configurable dans php3.ini/php.ini) ou utiliser apt-get install php<version>_<nom> sous Debian ; Ajouter la ligne extension=<nom>.so dans php3.ini/php.ini ; Configurer les aspects relatifs au module dans php3.ini/php.ini ; Redémarrer le serveur HTTP. 38 Chapitre 2 Les bases du langage 39

21 Les bases du langage Objectifs du chapitre Syntaxe du langage ; Les structures de contrôle ; Fonctions ; Programmation orientée objet. 40 Section 1 Syntaxe du langage 41

22 Syntaxe du langage Objectifs de la section Syntaxe de base ; Les types de données ; Les variables ; Les constantes ; Les opérateurs. 42 Syntaxe du langage Syntaxe de base Quatre moyens équivalents pour passer du mode HTML au PHP : standard : <?php...mon code PHP...?>, option short_open_tag : <?...mon code PHP...?>, option asp_tags : <%...mon code PHP... %>, marqueur script du HTML : <script language="php">...mon code PHP... </script>. 43

23 Syntaxe du langage Bases de la syntaxe héritées du C et du Perl : séparateur d instructions -> ; commentaires :...code /*...mes commentaires... */ code...,...code... //...mes commentaires...,...code... #...mes commentaires Syntaxe du langage Les types de données PHP supporte les types de données suivants : nombres entiers, nombres à virgule flottante, chaînes de caractères, tableaux, objets (développés dans la section programmation orientée objet ). Tous les noms de variables sont précédés d un $ (ex : $toto = 5 ;) ; 45

24 Syntaxe du langage Il est possible de spécifier une variable de type entier de la façon suivante : $toto = 123 ; # est un entier en base 10, $toto = -123 ; # est un entier négatif, $toto = 0123 ; # est un entier en base 8, $toto = 0x123 ; # est un entier en base 16. Il est possible de spécifier une variable de type flottant ou double de la façon suivante : $titi = ; # est un nombre à virgule flottante, $titi = 1.2e3 ; # est aussi un nombre à virgule flottante. 46 Syntaxe du langage Il est possible de spécifier une variable de type chaîne de caratères de la façon suivante : $personne = M. Smith ; # est une chaîne de caractères, $personne = "M. Smith" ; # est aussi une chaîne de caractères. Dans le deuxième cas, si la chaîne contient des noms de variables, celles-ci seront remplacées par leur valeur ; Ex : $type = M. ; $nom = "Smith" ; $personne = "$type $nom" ; Equivalent à $personne = M. Smith ;. 47

25 Syntaxe du langage Quand on utilise les "..." on doit donc échapper certains caractères avec un backslash (\) pour pouvoir les afficher comme tels : dollar ($) : \$, double quotes (") : \", backslash (\) : \\. De même, il existe des caractères spéciaux qui nécessitent d être échappés : nouvelle ligne : \n, retour à la ligne : \r, tabulation : \t. Tout autre caractère échappé génèrera un avertissement ( warning ) ; 48 Syntaxe du langage Lorsqu une chaîne de caractères est évaluée comme une valeur numérique, les règles suivantes s appliquent : la chaîne est de type flottant/double si elle contient., e ou E sinon elle est de type entier, la valeur est définie par la première partie de la chaîne (0 si c est du texte), lorsque la première expression est une chaîne, le type de la variable dépend de la seconde expression. Ex : $toto = 1 + "4.5" ; # $toto vaut 5.5 $toto = 1 + "-1e3" ; # $toto vaut -999 $toto = 1 + "titi + 149" ; # $toto vaut 1 $toto = 1 + "149 + titi" ; # $toto vaut

26 Syntaxe du langage Les tableaux de PHP ressemblent aux tableaux associatifs ( hash-tables ) du Perl ; L index dans le tableau est appellé clé et peut être indifféremment un entier ou une chaîne de caractères ; La valeur associée à une clé est appelée valeur ; On peut utiliser la fonction array() pour créer un tableau ; On peut aussi affecter directement les valeurs au tableau ; La fonction list() permet d affecter des variables comme si elles constituaient un tableau ; 50 Syntaxe du langage Ex : $tab[0] = 1 ; $tab[1] = "toto" ; # on peut mélanger les contenus $tab["toto"] = "titi" ; # on peut mélanger les clés $tab["toto"][8] ; # tableau à deux dimensions $tab["toto"][8]["encore"][2] ; # quatre dimensions $suite = array(1, 2, 3, 4) ; $personne = array("type" => "M.", "nom" => "Smith") ; list($num1, $num2) = $suite ; # $num1 vaut 1 et $num2 vaut 2 51

27 Syntaxe du langage On peut connaître le nombre d éléments d un tableau grâce aux fonctions : sizeof() : retourne le nombre d éléments d un tableau, ou count() : retourne le nombre d éléments d un tableau s il existe, 1 si la variable n est pas un tableau et 0 si la variable n existe pas. 52 Syntaxe du langage Chaque tableau entretient un pointeur courant qui sert à naviguer en son sein grâce aux fonctions : reset() : place le pointeur interne sur le premier élément et retourne sa valeur, current() : retourne la valeur de l élément courant, next() : place le pointeur interne sur l élément suivant et retourne sa valeur, prev() : place le pointeur interne sur l élément précédent et retourne sa valeur, each() : retourne la paire clé/valeur courante du tableau et avance le pointeur sur l élément suivant (c est la seule fonction qui ne retourne pas faux si l élément vaut 0 ou ""). 53

28 Syntaxe du langage Un tableau peut être trié en utilisant les fonctions suivantes : asort()/arsort() : trient le tableau en ordre croissant/décroissant de valeurs, ksort()/rsort() : trient le tableau en ordre croissant/décroissant de clés, sort() : trie le tableau en ordre croissant clés et valeurs (on perd la correspondance clé/valeur), uasort()/uksort()/usort() : trient le tableau de la même façon que leurs quasi-homonymes (u pour user ) mais avec une fonction de comparaison fournie par l utilisateur. 54 Syntaxe du langage Ex : function cmp($a, $b) { if ($a == $b) return 0 ; return ($a > $b)? -1 : 1 ; } $tab = array(3,2,5,6,1) ; usort($tab, cmp) ; while(list($cle, $valeur) = each($tab)) { echo "tab[$cle] = $valeur<br>\n" ; } Ce programme est équivalent à rsort(). 55

29 Syntaxe du langage Les variables La portée d une variable dépend du contexte dans lequel elle est définie ; La plupart des variables ont une portée qui s étend sur l intégralité du script PHP, elles sont globales ; Cependant, les variables sont locales au sein d une fonction ; 56 Syntaxe du langage Ex : $toto = 1 ; # portée globale function affiche () { echo $toto ; # portée locale } affiche() ; Cet exemple n affichera rien car echo() utilise la variable locale $toto. 57

30 Syntaxe du langage Deux façons existent pour accéder à une variable globale au sein d un bloc : déclarer la variable comme global au sein du bloc, utiliser le tableau associatif $GLOBALS avec comme clé le nom de la variable globale. 58 Syntaxe du langage Ex : $toto = 1 ; # portée globale $titi = 2 ; # portée globale function affiche () { global $toto ; # portée globale echo "$toto et $GLOBALS[ titi ]" ;} affiche() ; Cet exemple affichera 1 et 2. 59

31 Syntaxe du langage Variables statiques : Une variable statique est une variable locale qui ne perd pas sa valeur à chaque fois que le bloc est exécuté ; On utilise, comme en C, l attribut static pour déclarer une telle variable : Ex : static $toto ; Ce type de variables est très utile pour la création de fonctions récursives ; 60 Syntaxe du langage Ex : compter récursivement jusqu à 10 function compte () { static $compteur = 0 ; $compteur++ ; echo "$compteur " ; if ($compteur < 10) compte() ; } compte() ; Affiche

32 Syntaxe du langage Variables dynamiques : Une variable dynamique prend la valeur d une variable et l utilise comme nom d une autre variable ; Ex : $toto = "Hello" ; # $toto vaut Hello $$toto = "World" ; # $Hello vaut World echo "$toto $Hello!" ; # affiche Hello World! echo "$toto ${$toto}!" ; # affiche aussi Hello World! 62 Syntaxe du langage Le nom d une variable peut être placé entre accolades pour éviter les ambiguïtés ; Ex : $a[1] = "V1" ; $a = "V2" ; $b = "a" ; $b[1] = "a" ; Résultat : ${$b}[1] == "V1" Résultat : ${$b[1]} == "V2" Conclusion : ${$b}[1] et ${$b[1]} s utilisent dans 2 contextes différents. 63

33 Syntaxe du langage Variables extérieures : Toutes les variables transmises par les méthodes POST ou GET sont accessibles via les tableaux associatifs $HTTP_POST_VARS et $HTTP_GET_VARS (si l option track_vars est activée dans php3.ini/php.ini) ; Les variables d environnement sont accessibles comme des variables PHP classiques (ex : $HOME) ; On peut aussi utiliser les fonctions getenv() et putenv() pour manipuler les variables d environnement ; 64 Syntaxe du langage Variables prédéfinies : Certaines variables sont prédéfinies par PHP, elles sont disponibles pendant toute l exécution du script. PHP_SELF GLOBALS HTTP_GET_VARS HTTP_POST_VARS HTTP_COOKIE_VARS URI du script en cours d exécution. Tableau des variables globales. Tableau des variables issues de GET. Tableau des variables issues de POST. Tableau des variables issues des cookies. 65

34 Syntaxe du langage Variables d environnement CGI : SERVER_SOFTWARE GATEWAY_INTERFACE SERVER_PORT PATH_INFO SCRIPT_NAME REMOTE_HOST AUTH_TYPE REMOTE_IDENT CONTENT_LENGTH SERVER_NAME SERVER_PROTOCOL REQUEST_METHOD PATH_TRANSLATED QUERY_STRING REMOTE_ADDR REMOTE_USER CONTENT_TYPE http ://hoohoo.ncsa.uiuc.edu/cgi/env.html 66 Syntaxe du langage Pour déterminer le type d une variable on peut utiliser les fonctions suivantes : gettype() : retourne une chaine décrivant le type de la variable passée en argument ( integer, double, string, array, object, unknown type ), is_long()/is_int()/is_integer() : retourne true si la variable passée en argument est un entier et false dans le cas contraire, is_double()/is_float : idem mais avec les flottants/doubles, is_string() : idem mais avec les chaînes de caractères, is_array() : idem mais avec les tableaux, is_object() : idem mais avec les objets. 67

35 Syntaxe du langage Les constantes PHP définit certaines constantes et propose un mécanisme pour en définir d autres durant l exécution du script ; On définit une constante en utilisant la fonction define() ; Ex : define("ma_constante", "Bonjour") ; echo MA_CONSTANTE ; # affiche Bonjour 68 Syntaxe du langage Les principales constantes définies par PHP sont les suivantes : FILE : nom du fichier actuellement exécuté, LINE : numéro de la ligne qui est actuellement exécutée, PHP_VERSION : présentation de la version du PHP utilisée (ex : dev), PHP_OS : système d exploitation utilisé par la machine qui fait tourner le PHP (ex : Linux), TRUE : vrai, FALSE : faux, E_* : gestion des erreurs (cf. section correspondante). 69

36 Syntaxe du langage Les opérateurs Les opérateurs arithmétiques : addition : $a + $b, soustraction : $a - $b, multiplication : $a * $b, division : $a / $b, modulo (reste de la division entière) : $a % $b. 70 Syntaxe du langage L opérateur sur les chaînes de caractères : concaténation : chaine1. chaine2 Ex : $jour = "Lundi" ; echo Nous sommes. $jour. "!" ; Affiche Nous sommes Lundi! 71

37 Syntaxe du langage Les opérateurs sur les bits : ET bit à bit : $a & $b, OU bit à bit : $a $b, OU-Exclusif/XOR bit à bit : $a ˆ $b, NON bit à bit : $a, décalage à droite de $b bits : $a > > $b, décalage à gauche de $b bits : $a < < $b. 72 Syntaxe du langage Les opérateurs logiques : ET (vrai si $a et $b vrais) : $a and $b, $a && $b. OU (vrai si $a ou $b vrai(s)) : $a or $b, $a $b. OU-Exclusif/XOR (vrai si seul $a ou $b vrai) : $a xor $b, NON (vrai si $a est faux) :!$a. 73

38 Syntaxe du langage Les opérateurs d affectation : l opérateur d affectation le plus simple est le signe =, il ne signifie pas "égal à" mais que l opérande à gauche du signe = se voit affecté de la valeur de l opérande de droite, la valeur retournée par une expression d assignement est la valeur assignée, Ex : $a = ($b = 4) + 3 ; # $a vaut 7 et $b vaut 4 74 Syntaxe du langage il existe en plus des opérateurs combinés pour tous les opérateurs arithmétiques, les opérateurs bits à bits et l opérateur de concaténation, += -= *= /= %=.= &= = ˆ= < <= > >= = ceux-ci permettent d utiliser la valeur d une variable dans une expression et d affecter le résultat de cette expression à cette variable, Ex : $toto += 3 # équivaut à $toto = $toto

39 Syntaxe du langage l opérateur ++ est équivalent à += 1, l opérateur -- est équivalent à -= 1, ces deux opérateurs peuvent être placés avant (pré-exécution) ou après (post-exécution) la variable à laquelle ils s appliquent. Ex : $toto = 0 ; echo ++$toto ; # affiche 1 echo $toto++ ; # affiche 1 echo $toto ; # affiche 2 76 Syntaxe du langage Les opérateurs de comparaison : égal à : $a == $b, différent de : $a!= $b, supérieur à : $a > $b, inférieur à : $a < $b, supérieur ou égal à : $a >= $b, inférieur ou égal à : $a <= $b. 77

40 Syntaxe du langage L opérateur ternaire : issu du langage C, (condition)? (expression1) : (expression2) ;, renvoie expression1 si condition est vraie et expression2 dans le cas contraire. Ex : echo $toto == 0? "Nul" : "Non nul" ; # affiche Nul si $toto vaut 0 et Non nul sinon 78 Section 2 Les structures de contrôle 79

41 Les structures de contrôle Objectifs de la section Introduction ; Instructions conditionnelles ; Boucles ; Inclusions. 80 Les structures de contrôle Introduction Tous les scripts PHP sont une suite d instructions ; Une instruction peut être : un assignement, un appel de fonction, une instruction conditionnelle, ou une instruction qui ne fait rien (une instruction vide). Une instruction se termine habituellement par un point virgule ( ;) ; 81

42 Les structures de contrôle Plusieurs instructions peuvent être regroupées en bloc, délimité par des accolades ({...}) ; Un bloc est considéré comme une instruction ; Les différents types d instructions sont décrits dans ce chapitre. 82 Les structures de contrôle Instructions conditionnelles L instruction if est une des plus importantes instructions de tous les langages, PHP inclus ; Elle permet l exécution conditionnelle d une partie de code ; Les fonctionnalités de l instruction if sont les mêmes en PHP qu en C ; 83

43 Les structures de contrôle Prototype : if (condition) { # instructions à exécuter si la condition est vraie... } Une chaine de caractère ne contenant que 0 sera évaluée comme fausse ; 84 Les structures de contrôle Souvent on souhaite exécuter une instruction si une condition est remplie, et une autre instruction si cette condition n est pas remplie ; C est le rôle du else ; Prototype : if (condition) { # instructions à exécuter si la condition est vraie... } else { # instructions à exécuter si la condition est fausse... } 85

44 Les structures de contrôle elseif permet, comme l expression else, d exécuter une instruction après un if dans le cas où ce dernier est évalué comme faux ; A la différence de l expression else, il n exécutera les instructions que si l expression condionnelle elseif est évaluée comme vraie ; 86 Les structures de contrôle Prototype : if (condition1) { # instructions à exécuter si la condition1 est vraie... } elseif (condition2) { # instructions à exécuter si la condition2 est vraie... } elseif (condition3) { # instructions à exécuter si la condition3 est vraie } else { # instructions à exécuter si aucune des conditions n est vraie... } 87

45 Les structures de contrôle La syntaxe du if que nous venons de voir est directement héritée du langage C ; Pas toujours très adaptée pour mélanger code PHP et HTML ; PHP propose donc une autre syntaxe pour le if qui permet d améliorer la lisibilité ; 88 Les structures de contrôle Prototype simplifié : if (condition1) : # instructions à exécuter si la condition1 est vraie... elseif (condition2) : # instructions à exécuter si la condition2 est vraie... elseif (condition3) : # instructions à exécuter si la condition3 est vraie else : # instructions à exécuter si aucune des conditions n est vraie... endif ; 89

46 Les structures de contrôle Ex : if ($type == "Femme") { echo "Bonjour Madame" ; } elseif ($type == "Homme") { echo "Bonjour Monsieur" ; } else { echo "Bonjour, vous êtes bizarre!" ; } 90 Les structures de contrôle Boucles La boucle while est le moyen le plus simple d implémenter une boucle en PHP ; Cette boucle se comporte de la même manière qu en C : les instructions sont exécutées tant que l expression est vraie ; La valeur de l expression est vérifiée à chaque début de boucle ; 91

47 Les structures de contrôle Si la valeur change durant l exécution de l instruction, l exécution ne s arrêtera qu à la fin de l itération ; Comme avec le if, PHP définit une syntaxe simplifiée, en plus de celle héritée du langage C ; 92 Les structures de contrôle Prototype : while (condition) { # instructions à exécuter tant que la condition est vraie... } Prototype simplifié : while (condition) : # instructions à exécuter tant que la condition est vraie... endwhile ; 93

48 Les structures de contrôle Ex : compter jusqu à 10 $i = 1 ; while ($i <= 10) { echo "$i " ; $i++ ; } Affiche Les structures de contrôle La boucle do..while ressemble beaucoup à la boucle while ; La différence est que l expression est testée à la fin de chaque itération au lieu du début ; La première itération de la boucle est donc toujours exécutée ; Il n y a qu une syntaxe possible pour les boucles do..while qui est, elle aussi, héritée du langage C ; 95

49 Les structures de contrôle Prototype : do { # instructions à exécuter la première fois et ensuite tant que la condition est vraie... } while (condition) ; 96 Les structures de contrôle Ex : compter jusqu à 10 $i = 1 ; do { echo "$i " ; $i++ ; } while ($i <= 10) ; Affiche

50 Les structures de contrôle La boucle for est, en PHP tout comme en C, la boucle la plus complexe mais aussi la plus puissante ; Elle fonctionne comme la boucle for du langage C ; Prototype : for (expression1 ; condition ; expression2) { # instructions à exécuter tant que la condition est vraie... } 98 Les structures de contrôle L expression1 est évaluée (exécutée) quoi qu il arrive au début de la boucle ; Au début de chaque itération, la condition est évaluée ; si elle est vraie, la boucle continue et les instructions sont à nouveau exécutées, si elle est fausse, l exécution de la boucle s arrête. A la fin de chaque itération, l expression2 est évaluée (exécutée) ; 99

51 Les structures de contrôle Les expressions/conditions peuvent éventuellement être laissées vides (-> attention aux boucles infinies) ; Comme avec le if et le while, PHP définit une syntaxe simplifiée, en plus de celle héritée du langage C ; Prototype simplifié : for (expression1 ; condition ; expression2) : # instructions à exécuter tant que la condition est vraie... endfor ; 100 Les structures de contrôle Ex : compter jusqu à 10 for ($i = 1 ; $i <= 10 ; $i++) { echo "$i " ; } Ex2 : compter jusqu à 10 for ($i = 1 ; $i <= 10 ; print "$i ", $i++) ; Ex3 : compter jusqu à 10 for ($i = 1 ; $i <= 10 ; print $i++) ; Ces 3 exemples affichent

52 Les structures de contrôle PHP4 définit une boucle foreach, comme en Perl, pour réaliser une boucle sur les éléments d un tableau ; En PHP3 on peut réaliser l équivalent avec une boucle while et les fonction list() et each() que nous avons vu précédemment ; Ex : afficher tous les arguments d un formulaire POST while (list($cle, $valeur) = each($http_post_vars)) { echo "$cle => $valeur, " ; } 102 Les structures de contrôle Avec l instruction foreach cette boucle devient : foreach ($HTTP_POST_VARS as $cle => $valeur) { echo "$cle => $valeur, " ; } Ou bien, si l on ne veut récupérer que les valeurs : foreach ($HTTP_POST_VARS as $valeur) { echo "$valeur, " ; } 103

53 Les structures de contrôle L instruction break permet de sortir d une boucle à n importe quel moment ; Ex : compter jusqu à 10 for ($i = 1,, $i++) { if ($i > 10) break ; echo "$i " ; } Affiche Les structures de contrôle L instruction continue permet d ignorer les instructions restantes dans la boucle et de passer directement à l itération suivante ; Ex : compter 2 par 2 jusqu à 10 for ($i = 1, $i <= 10, $i++) { if ($i % 2) continue ; # $i impaire echo "$i " ; } Affiche

54 Les structures de contrôle L instruction switch équivaut à une serie d instructions if..elseif..elseif...else ; Elle est utilisée pour comparer la même variable (ou expression) avec un grand nombre de valeurs différentes et d exécuter différentes parties de code suivant la valeur à laquelle elle est égale ; 106 Les structures de contrôle Prototype : switch (expression) { case resultat1 : # instructions à exécuter si l expression vaut resultat1... break ; case resultat2 : # instructions à exécuter si l expression vaut resultat2... break ;... default : # instructions à exécuter en dernier recours... } 107

55 Les structures de contrôle L instruction switch exécute chacune des clauses dans l ordre d écriture ; Elle est exécutée ligne par ligne ; Aucun code n est exécuté jusqu à ce que le premier case soit vérifié ; 108 Les structures de contrôle Lorsqu il trouve le premier case vérifié, PHP exécute alors les instructions correspondantes et continue jusqu à la fin du bloc switch ; Pour reproduire le fonctionnement d un if..elseif..elseif...else, il faut terminer tous les cases par des break ; On peut définir un case exécuté par défaut (équivalent au else) grâce à default ; 109

56 Les structures de contrôle Ex : switch ($type) { case "Femme" : echo "Bonjour Madame" ; break ; case "Homme" : echo "Bonjour Monsieur" ; break ; default : echo "Bonjour, vous êtes bizarre!" ; } 110 Les structures de contrôle Inclusions La fonction require() se substitue elle-même avec le contenu du fichier spécifié en argument ; La substitution s opère avant l interprétation du code ; Elle ressemble à peu près au #include du C ; Si on l utilise au sein d une boucle, c est le fichier tel qu il était à la première itération qui sera réutilisé à chaque itération (même s il a changé entre temps) ; De plus, il est déconseillé d utiliser require() avec un nom de fichier dynamique (contenant une variable) ; 111

57 Les structures de contrôle La fonction include() inclut et évalue le fichier spécifié en argument ; Ceci est fait à chaque fois que la fonction est rencontrée ; On peut donc utiliser cette fonction au sein d une boucle pour inclure un fichier différent à chaque fois par exemple (ex : include("toto_$i") ;). 112 Section 3 Fonctions 113

58 Fonctions Objectifs de la section Présentation des fonctions PHP ; Les valeurs de retour ; Les arguments. 114 Fonctions Présentation des fonctions PHP Une fonction peut être définie en utilisant la syntaxe suivante : function ma_fonction ($arg_1, $arg_2,..., $arg_n) { # Corps de ma fonction... return $valeur_de_retour ; } Tout code PHP correct syntaxiquement peut apparaître dans une fonction et dans une définition de classe ; En PHP3 toute fonction doit être préalablement définie avant d être utilisée (idem langage C). Elle peut être définie n importe où en PHP4. 115

59 Fonctions Les valeurs de retour Les valeurs sont renvoyées en utilisant une instruction de retour optionnelle ; Tous les types de variables peuvent être renvoyés (tableaux et objets compris) ; Ex : function carre($nombre) { return $nombre * $nombre ; } echo carre(3) ; # affiche la valeur Fonctions On ne peut pas renvoyer plusieurs valeurs en même temps mais on peut obtenir un résultat identique en renvoyant un tableau ; Ex : function couleurs() { return array("coeur", "Pique", "Trèfle", "Carreau") ; } list($c1, $c2, $c3, $c4) = couleurs() ; 117

60 Fonctions PHP4 permet également le retour de fonction par référence ; Ce mécanisme est utile lorsque l on cherche à utiliser une fonction pour trouver une variable que l on veux lier ; A la différence du passage par référence, il faut utiliser un & à deux endroits : pour indiquer que l on retourne une référence (et non une copie comme à l habitude), mais aussi pour indiquer qu une liaison à une référence et non un simple assignement de variable doit avoir lieu avec la variable de retour. 118 Fonctions Ex : function & trouve_variable ($param) { #...recherche de la variable $toto... return $toto ; } $titi = & trouve_variable($tata) ; $titi->x = 2 ; Les propriétés de l objet retourné par la fonction trouve_variable() sont liées à $titi. Il ne s agit pas d une copie de $toto. 119

61 Fonctions Les arguments Des informations peuvent être passées à une fonction en utilisant un tableau d arguments dont chaque élément est séparé par une virgule ; Un élément peut être une variable ou une constante ; PHP supporte : le passage d arguments par valeur (méthode par défaut), le passage d arguments par référence, et les valeurs par défaut des arguments. Une liste d arguments dont le nombre est variable ne fonctionne pas en PHP mais un résultat similaire peut être obtenu en utilisant un tableau ; 120 Fonctions Passage d arguments par valeur : C est la méthode par défaut ; Les variables ne sont pas affectées par des changements au sein de la fonction ; On peut donc changer la valeur des arguments au sein de la fonction sans que ceci ait des répercussions à l extérieur de celle-ci ; 121

62 Fonctions Ex : function ajoute_deux($nombre) { $nombre += 2 ; echo $nombre ; } $toto = 3 ; ajoute_deux($toto) ; # affiche 5 echo $toto ; # affiche Fonctions Passage d arguments par référence : Les variables sont affectées par des changements au sein de la fonction ; Deux possibilités : de façon permanente en ajoutant un & devant le nom de la variable dans la définition de la fonction, ou de façon ponctuelle en ajoutant un & devant le nom de la variable lors de l appel à la fonction. 123

63 Fonctions Ex : function retranche_deux( & $nombre) { $nombre -= 2 ; echo $nombre ; } $toto = 3 ; ajoute_deux( & $toto) ; # affiche 5 echo $toto ; # affiche 5 retranche_deux($toto) ; # affiche 3 echo $toto ; # affiche Fonctions Valeurs par défaut des arguments : PHP permet, comme en C++, de spécifier des valeurs par défaut pour les arguments de type scalaire ; Il suffit de spécifier la valeur par défaut avec un = dans la déclaration de la fonction ; Cette valeur doit être une constante (pas de variables ni d attributs de classes) et les arguments par défaut doivent être les derniers dans la liste ; 125

64 Fonctions Ex : function annotation($type = "assez bien") { echo "Vous avez $type travaillé" ; } annotation("mal") ; # affiche Vous avez mal travaillé annotation() ; # affiche Vous avez assez bien travaillé 126 Section 4 Programmation orientée objet 127

65 Programmation orientée objet Objectifs de la section Rappels sur la programmation orientée objet ; Les classes en PHP ; Les objets en PHP ; Particularités de PHP. 128 Programmation orientée objet Rappels sur la programmation orientée objet POO -> raisonner en termes de fonctionnalités et de propriétés et non en terme de traitements ; L encapsulation : L objet représente une abstraction d une entité abstraite ou concrète pour laquelle il regroupe en une même structure les données et les traitements ; Un objet possède des caractéristiques et des fonctionnalités et on l utilise sans savoir comment elles sont implémentées (ex : un téléphone) ; 129

66 Programmation orientée objet Les caractéristiques/fonctionnalités non utiles pour la manipulation de l objet mais utiles à son fonctionnement sont masquées à l utilisateur (ex : les composants internes du téléphone) ; L héritage : Un objet peut dériver d un autre objet et posséder des caractéristiques/fonctionnalités supplémentaires tout en héritant des caractéristiques/fonctionalités de son aïeul (ex : un téléphone sans fils est un téléphone un peu particulier) ; 130 Programmation orientée objet Le polymorphisme : Lorsqu on invoque une méthode d un objet, le programme saura retrouver la méthode parmis celles des aïeux de l objet si celle-ci n est pas explicitement définie pour lui mais qu il en a hérité (ex : la méthode "décrocher le téléphone" pour un sans fils) ; 131

67 Programmation orientée objet A la création ( instanciation ) de l objet, une méthode (qui porte généralement le même nom que la classe) est appellée automatiquement : c est le constructeur ; Parfois, à la destruction de l objet, une méthode (qui porte généralement le même nom que la classe précédé d un ) est appellée automatiquement : c est le destructeur ; 132 Programmation orientée objet Une classe est une collection de variables ( attributs ) et de fonctions ( méthodes ) qui s appliquent à ces variables ; Un objet est une instance d une classe. Son type de données est la classe d objets à laquelle il appartient (un peu comme $toto = 123 ; est une instance du type entier ). 133

68 Programmation orientée objet Les classes en PHP En PHP, on définit une classe d objets de la façon suivante : class MaClasse { # Attributs var $monattribut ; # Méthodes function mamethode($argument) { #...traitement de $monattribut avec $argument... } } 134 Programmation orientée objet Les objets en PHP Il est possible de spécifier une variable objet de la façon suivante : $monobjet = new MaClasse ; On accède à un attribut ou à une méthode de la façon suivante : $monobjet->monattribut = "toto" ; $monobjet->mamethode(23) ; 135

69 Programmation orientée objet Particularités de PHP Tous les attributs et méthodes sont publics ; Les objets sont libérés automatiquement quand ils ne sont plus utilisés ( Garbage Collector ) ; Pas de destructeur. 136 Programmation orientée objet Ex : le Caddie class Caddie { var $elements ; # éléments de notre Caddie # Constructeur qui ajoute un cadeau à chaque nouveau Caddie function Caddie() { $this->ajoute(1, "cadeau") ; } # Ajout de $nombre articles de type $type au Caddie function ajoute($nombre, $type) { $this->elements[$type] += $nombre ; } 137

70 Programmation orientée objet # Retrait de $nombre articles de type $type au Caddie function enleve($nombre, $type) { if ($this->elements[$type] > $nombre) { $this->elements[$type] -= $nombre ; return true ; } else { return false ; } } } 138 Chapitre 3 Fonctionnalités essentielles 139

71 Fonctionnalités essentielles Objectifs du chapitre Gestion des connexions et des utilisateurs ; Gestion des sessions ; Autres fonctionnalités essentielles. 140 Section 1 Connexions et utilisateurs 141

72 Connexions et utilisateurs Objectifs de la section Gestion des utilisateurs - authentification ; Gestion des connexions. 142 Connexions et utilisateurs Gestion des utilisateurs - authentification Les fonctions d authentification HTTP ne sont disponibles que si PHP est exécuté comme module Apache (et non pas comme CGI) ; On utilise la fonction header() pour demander une authentification (Authentication Required) au client, générant ainsi l apparition d une fenêtre de demande de nom d utilisateur et de mot de passe ; 143

73 Connexions et utilisateurs Une fois que les champs ont été remplis, l URL sera de nouveau appelée mais avec les variables suivantes mises à jour : $PHP_AUTH_USER : utilisateur, $PHP_AUTH_PW : mot de passe, et $PHP_AUTH_TYPE : type d authentification. Actuellement, seule l authentification basique (Basic) est supportée ; 144 Connexions et utilisateurs Ex : page d authentification <?php if(!isset($php_auth_user)) { Header("WWW-Authenticate : Basic realm= Titre ") ; Header("HTTP/ Unauthorized") ; echo "Texte à envoyer au client en cas d annulation" ; exit ; } else { echo "Bonjour $PHP_AUTH_USER.<br>" ; echo "Votre mot de passe est $PHP_AUTH_PW." ; }?> 145

74 Connexions et utilisateurs Gestion des connexions Le statut des connexions est conservé en interne par PHP ; Il y a trois états possibles : 0 / NORMAL : le script PHP travaille, 1 / ABORTED : le client distant s est déconnecté, 2 / TIMEOUT : la durée maximale d exécution est dépassée. 146 Connexions et utilisateurs Par défaut, le script PHP se termine dès que le client se déconnecte mais on peut changer cette politique de différentes façons : continuer le script comme si le client était encore là en activant l option : ignore_user_abort dans php3.ini/php.ini, ou [php3_ignore_user_abort/ignore_user_abort dans apache.conf. exécuter une fonction de fermeture préalablement enregistrée grâce à la fonction register_shutdown_function(). 147

75 Connexions et utilisateurs La fonction enregistrée avec register_shutdown_function() sera aussi appelée à la fin du script quand celui-ci se termine normalement ; Pour pouvoir avoir un comportement différent suivant l état du script lors de sa finalisation on peut tester l état déconnecté du script avec la fonction connection_aborted() ; La fonction connection_status() permet également de retourner l état du script (0, 1, 2 ou 3) ; 148 Connexions et utilisateurs On peut modifier le délai de timeout (30 secondes par défaut) de plusieurs manières : fonction set_time_limit(), max_execution_time dans php3.ini/php.ini, ou php3_max_execution_time/max_execution_time dans apache.conf. La fonction enregistrée avec register_shutdown_function() sera également appelée lorsqu un timeout intervient ; On peut tester l état timeout du script avec la fonction connection_timeout() ; 149

76 Section 2 Gestion des sessions 150 Gestion des sessions Objectifs de la section Principe ; Sessions avec PHPlib ; Sessions avec PHP4. 151

77 Gestion des sessions Principe La gestion des sessions avec PHP est un moyen de sauver des informations entre deux accès (requêtes HTTP) ; Cela permet notamment de construire des applications personnalisées, et d accroître les fonctionnalités de votre site ; Malheureusement, la gestion des sessions n était pas inclue dans les fonctionnalités standards de PHP jusqu à la version PHP4 ; Une bibliothèque complémentaire a donc été développée pour gérer les sessions avec PHP3, c est PHPlib ; 152 Gestion des sessions Sessions avec PHPlib PHPlib est une bibliothèque PHP libre qui vise à faciliter la création de sites avec PHP ; Elle est toujours utilisable avec PHP4 et présente d ailleurs des fonctionnalités que ce dernier ne possède toujours pas en natif ; Elle se compose de classes et de fonctions qui permettent : le suivi des sessions, l utilisation de variables persistantes au niveau utilisateur et au niveau session, l authentification et la gestion des permissions, la génération rapide de code HTML

78 Gestion des sessions Installation : récupérer l archive (http ://phplib.netuse.de), la décompresser dans un répertoire quelconque (ex : /usr/lib/phplib/), éditer le fichier php3.ini/php.ini et fixer les options de la façon suivante : magic_quotes_gpc = Off magic_quotes_runtime = Off magic_quotes_sybase = Off track_vars = On auto_prepend_file = <répertoire contenant prepend.php> include_path = <répertoire d installation> 154 Gestion des sessions Pour l utilisation de PHPlib, il faut créer quelques fichiers en plus des scripts PHP : prepend.php sert à définir toutes les librairies PHPlib à inclure avant chaque fichier, et local.inc sert à définir les classes qui vont être utilisées par les scripts. 155

79 Gestion des sessions Pour gérer les sessions et les variables persistantes, la librairie se sert d une base de données, d un annuaire LDAP ou encore d un simple fichier ; Cette base de données et les différentes tables qui sont utilisées par les scripts utilisant PHPlib doivent être créées par vos soins grâce aux fichiers de configurations fournis (généralement dans /usr/lib/phplib/stuff/) ; Ex : base de données MySQL mysql -h <ma_machine_hote> <ma_base> <create_database.mysql 156 Gestion des sessions Pour gérer une session, PHPlib utilise un identifiant qui est transmis de script en script au cours de la navigation ; Pour les sessions sans reprise, cet identifiant peut être transmis dans l URL ; Pour gérer les reprises de sessions, PHPlib peut stocker l identifiant dans un cookie qu il transmet au client à la fin de chaque script (fonction page_close()) ; 157

80 Gestion des sessions PHPlib définit des classes pour accéder aux bases de données et gérer les sessions ; Vous devez définir vos propres classes qui dérivent des classes génériques de PHPlib ; Ces classes sont généralement stockées dans le fichier local.inc ; 158 Gestion des sessions Toutes les pages gérant la session doivent être encadrées par : page_open(array("sess" => "MaSession")), et page_close() ; Si on ne souhaite pas utiliser l option auto_prepend_file pour inclure le fichier prepend.php, on peut commencer le script par un include() de ce fichier ; Pour rendre une variable persistante, on utilise la méthode register() de la classe MaSession ; 159

81 Gestion des sessions Ex : session.php <?php page_open(array("sess" => "MaSession")) ; if(!isset($toto)) $toto = 1 ; print ++$toto ; $sess->register("toto") ; page_close() ;?> 160 Gestion des sessions Ex (suite) : local.php <?php class MaBaseSql extends DB_Sql { var $Host = "ma_machine_hote" ; var $Database = "ma_base" ; var $User = "mon_utilisateur" ; var $Password = "mon_password" ; } class MonContainerSql extends CT_Sql { var $database_class = "MaBaseSql" ; var $database_table = "ma_table" ; } 161

82 Gestion des sessions class MaSession extends Session { var $classname = "MaSession" ; var $mode = "cookie" ; var $lifetime = 6000 ; var $that_class = "MonContainerSql" ; }?> 162 Gestion des sessions Ex (fin) : prepend.php <?php if (!is_array($_phplib)) $_PHPLIB["libdir"] = "" ; require($_phplib["libdir"]. "db_mysql.inc") ; require($_phplib["libdir"]. "ct_sql.inc") ; require($_phplib["libdir"]. "session.inc") ; require($_phplib["libdir"]. "local.inc") ; require($_phplib["libdir"]. "page.inc") ;?> 163

83 Gestion des sessions Sessions avec PHP4 Le principe est le même qu avec PHPlib : on attribue à un nouvel utilisateur un identificateur de session (SID) ; Ce numéro est transmis soit sous forme de cookie soit dans les URLs ; Quand un visiteur accède à la page, PHP4 vérifie si un identificateur de session a été transmis avec la requête ; 164 Gestion des sessions Cette vérification peut être faite de trois manières différentes : automatiquement si l option session.auto_start est activée dans php.ini, explicitement par l appel de la fonction session_start(), ou implicitement par l appel de la fonction session_register(). Dans le cas où le numéro de session est valide, tout l environnement de celle-ci est restauré ; 165

84 Gestion des sessions L option register_globals de php.ini autorise les variables globales à être sauvegardées dans une session ; Ex : <?php session_register("toto") ; $toto++ ;?> L option track_vars de php.ini (qui est bloquée à 1 pour les versions de PHP4 supérieures à la 4.0.3) autorise les variables de $HTTP_SESSION_VARS à être sauvegardées dans une session ; Ex : <?php session_register("toto") ; $HTTP_SESSION_VARS["toto"]++ ;?> 166 Gestion des sessions Il existe deux manières pour transmettre le numéro de session au sein de l URL : manuellement grâce à la constante SID qui est une chaîne de caractères de la forme session_name=session_id (ou vide), automatiquement si PHP4 a été compilé avec l option --enable-trans-sid. 167

85 Gestion des sessions Ex : compteur de visites <?php session_register("compteur") ; $compteur++ ;?> Vous avez vu cette page <? echo $compteur ;?> fois. <!-- <?=SID?> sert à conserver le numéro de session au cas où les cookies sont desactivés --> Pour continuer cliquez <A href="compteur.php?<?=sid?>">ici</a> 168 Gestion des sessions Les fonctions les plus utilisées sont : session_start() : crée ou restaure une session, session_destroy() : détruit une session, session_register()/session_unregister() : sauvegarde/oublie une variable, session_set_save_handler() : permet de définir ses propres fonctions de sauvegarde de sessions (pour stocker les données dans une base de données par exemple). 169

86 Section 3 Autres fonctionnalités 170 Autres fonctionnalités Objectifs de la section Récupération et traitement des erreurs ; Les cookies. 171

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau) CS WEB Ch 1 Introduction I. INTRODUCTION... 1 A. INTERNET INTERCONNEXION DE RESEAUX... 1 B. LE «WEB» LA TOILE, INTERCONNEXION DE SITES WEB... 2 C. L URL : LOCALISER DES RESSOURCES SUR L INTERNET... 2 D.

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation Web. Madalina Croitoru IUT Montpellier Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance

Plus en détail

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1 E-TRANSACTIONS Guide du programmeur API Plug-in Version 1.1 Avertissements : Le fichier Version.txt précise l'environnement dans lequel l API a été compilée et testée. L'installation de l API sur tout

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

TP1. Outils Java Eléments de correction

TP1. Outils Java Eléments de correction c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par

Plus en détail

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6 Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6 1 BERNIER François http://astronomie-astrophotographie.fr Table des matières Installation d un serveur HTTP (Hypertext Transfer

Plus en détail

Pratique et administration des systèmes

Pratique et administration des systèmes Université Louis Pasteur Licence Informatique (L2) UFR de Mathématiques et Informatique Année 2007/2008 1 But du TP Pratique et administration des systèmes TP10 : Technologie LAMP Le but de ce TP est de

Plus en détail

PHP 5.4 Développez un site web dynamique et interactif

PHP 5.4 Développez un site web dynamique et interactif Editions ENI PHP 5.4 Développez un site web dynamique et interactif Collection Ressources Informatiques Table des matières Table des matières 1 Chapitre 1 Introduction 1. Objectif de l'ouvrage.............................................

Plus en détail

L3 informatique TP n o 2 : Les applications réseau

L3 informatique TP n o 2 : Les applications réseau L3 informatique TP n o 2 : Les applications réseau Sovanna Tan Septembre 2009 1/20 Sovanna Tan L3 informatique TP n o 2 : Les applications réseau Plan 1 Transfert de fichiers 2 Le Courrier électronique

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10 Dossier Technique Page 1/10 Sommaire : 1. REPONSE TECHNIQUE A LA DEMANDE 3 1.1. Prise en compte de la dernière version de phpcas 3 1.2. Gestion de la connexion à GRR 3 1.2.1. Récupération des attributs

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Zoom sur Newtest LDAP intégration

Zoom sur Newtest LDAP intégration Zoom sur Newtest LDAP intégration L a suite Newtest doit s intégrer parfaitement dans votre Système d Information afin, notamment, d en faciliter l usage. La version NEP 2.1.1 ne déroge pas à cette règle

Plus en détail

Architectures web/bases de données

Architectures web/bases de données Architectures web/bases de données I - Page web simple : HTML statique Le code HTML est le langage de base pour concevoir des pages destinées à être publiées sur le réseau Internet ou intranet. Ce n'est

Plus en détail

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr Initiation à JAVA et à la programmation objet raphael.bolze@ens-lyon.fr O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation

Plus en détail

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte? Avant-propos... V CHAPITRE 1 Scripting Windows, pour quoi faire?... 1 Dans quel contexte?.................................................. 1 La mauvaise réputation............................................

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

L envoi d un formulaire par courriel. Configuration requise... 236 Mail Texte... 237 Mail HTML... 242 Check-list... 248

L envoi d un formulaire par courriel. Configuration requise... 236 Mail Texte... 237 Mail HTML... 242 Check-list... 248 L envoi d un formulaire par courriel Configuration requise... 236 Mail Texte... 237 Mail HTML... 242 Check-list... 248 Chapitre 9 L envoi d un formulaire par courriel L envoi par courriel d informations

Plus en détail

CGI et SSI. La programmation CGI. Sources. Objectifs. Qu'est ce qu'un programme CGI? CGI

CGI et SSI. La programmation CGI. Sources. Objectifs. Qu'est ce qu'un programme CGI? CGI Sources CGI et SSI Supports de cours de Olivier Glück (Lyon 1) Livres cités en bibliographie Le web Sylvain Brandel Sylvain.brandel@liris.univ-lyon1.fr http://bat710.univ-lyon1.fr/~sbrandel M1 Informatique

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Module BD et sites WEB

Module BD et sites WEB Module BD et sites WEB Cours 8 Bases de données et Web Anne Doucet Anne.Doucet@lip6.fr 1 Le Web Architecture Architectures Web Client/serveur 3-tiers Serveurs d applications Web et BD Couplage HTML-BD

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2) Le langage PHP (2) Walid Belkhir Université de Provence belkhir@cmi.univ-mrs.fr http://www.lif.univ-mrs.fr/ belkhir/ 1 / 54 1 La programmation orientée objet 2 Gestion de Connexions HTTP 3 Manipulation

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

Compte Rendu d intégration d application

Compte Rendu d intégration d application ISMA 3EME ANNEE Compte Rendu d intégration d application Compte Rendu Final Maxime ESCOURBIAC Jean-Christophe SEPTIER 19/12/2011 Table des matières Table des matières... 1 Introduction... 3 1. Le SGBD:...

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires. Installation & Configuration GPLPI / OCS Inventory NG Installer sur Debian 5 Lenny, Liaison Active Directory, Mise en place du couple OCS/GLPI Par : POMENTE Guillaume OCS Inventory et GLPI sont deux outils

Plus en détail

Protection des protocoles www.ofppt.info

Protection des protocoles www.ofppt.info ROYAUME DU MAROC Office de la Formation Professionnelle et de la Promotion du Travail Protection des protocoles DIRECTION RECHERCHE ET INGENIERIE DE FORMATION SECTEUR NTIC Sommaire 1. Introduction... 2

Plus en détail

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N

Plus en détail

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES WEB & DÉVELOPPEMENT LES BASES DU WEB HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES LE LANGAGE HTML STRUCTURE D UNE PAGE En-tête et corps Syntaxe INSÉRER DES CONTENUS Texte : formatage (titre,

Plus en détail

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi Un exemple d'authentification sécurisée utilisant les outils du Web : CAS 111 L authentification CAS : «Central Authentication Service» CAS ou le service central d authentification Le système CAS, développé

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

Plus en détail

Chapitre I Notions de base et outils de travail

Chapitre I Notions de base et outils de travail Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement

Plus en détail

Dans l'article précédent, vous avez appris

Dans l'article précédent, vous avez appris Pour les débutants Les différents formats de sortie proposés par PHPExcel La bibliothèque orientée objet PHPExcel permet de lire et créer des fichiers pour tableurs. Dans cette série d articles, vous apprendrez

Plus en détail

Hébergement de site web Damien Nouvel

Hébergement de site web Damien Nouvel Hébergement de site web Plan L'hébergeur Le serveur web Apache Sites dynamiques 2 / 27 Plan L'hébergeur Le serveur web Apache Sites dynamiques 3 / 27 L'hébergeur L'hébergeur sous-traite l'architecture

Plus en détail

Comment avoir le logiciel? Le serveur web APACHE peut être téléchargé gratuitement du site web de APACHE: http://www.apache.org/.

Comment avoir le logiciel? Le serveur web APACHE peut être téléchargé gratuitement du site web de APACHE: http://www.apache.org/. Installation de base du logiciel APACHE sous Windows Ce chapitre traite l installation du logiciel APACHE à utiliser avec ABCD sous l environment Windows. Au moins Windows NT, Windows 2000 ou les versions

Plus en détail

Chapitre 2. Classes et objets

Chapitre 2. Classes et objets Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org Les sites Internet dynamiques contact : Patrick VINCENT pvincent@erasme.org Qu est-ce qu un site Web? ensemble de pages multimédia (texte, images, son, vidéo, ) organisées autour d une page d accueil et

Plus en détail

MANUEL D INSTALLATION D UN PROXY

MANUEL D INSTALLATION D UN PROXY MANUEL D INSTALLATION D UN PROXY Squid, SquidGuard, Dansguardian Dans ce guide on va détailler l installation et la configuration d une solution proxy antivirale en utilisant les outils ; squid, dansguardian,

Plus en détail

WWSympa, une interface web pour Sympa

WWSympa, une interface web pour Sympa WWSympa, une nterface web pour Sympa V WWSympa, une interface web pour Sympa Olivier SALAÜN, olivier.salaun@cru.fr Comité réseau des universités WWSympa est né du besoin d une interface web homogène et

Plus en détail

Créer et partager des fichiers

Créer et partager des fichiers Créer et partager des fichiers Le rôle Services de fichiers... 246 Les autorisations de fichiers NTFS... 255 Recherche de comptes d utilisateurs et d ordinateurs dans Active Directory... 262 Délégation

Plus en détail

Cours CCNA 1. Exercices

Cours CCNA 1. Exercices Cours CCNA 1 TD3 Exercices Exercice 1 Enumérez les sept étapes du processus consistant à convertir les communications de l utilisateur en données. 1. L utilisateur entre les données via une interface matérielle.

Plus en détail

Installation et configuration d OCS/GLPI sur un Serveur Debian

Installation et configuration d OCS/GLPI sur un Serveur Debian Installation et configuration d OCS/GLPI sur un Serveur Debian GLPI (Gestionnaire Libre de Parc Informatique) est une application web (développée en PHP) qui permet la gestion de parc informatique et de

Plus en détail

Langage W4. Note technique W4 Engine

Langage W4. Note technique W4 Engine Note technique W4 Engine Cette note technique décrit la conception d écrans HTML dynamiques prenant en charge un processus de workflow ; elle explique comment utiliser les mots clés et les API W4 dans

Plus en détail

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

TP réseaux 4 : Installation et configuration d'un serveur Web Apache TP réseaux 4 : Installation et configuration d'un serveur Web Apache Objectifs Installer, configurer, lancer et administrer le serveur Web Apache sous Linux Données de base machine fonctionnant sous Linux

Plus en détail

Vulnérabilités et sécurisation des applications Web

Vulnérabilités et sécurisation des applications Web OSSIR 09/09/2002 Vulnérabilités, attaques et sécurisation des applications Web Pourquoi les firewalls sont impuissants patrick.chambet@edelweb.fr http://www.edelweb.fr http://www.chambet.com Page 1 Planning

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

Notions fondamentales du langage C# Version 1.0

Notions fondamentales du langage C# Version 1.0 Notions fondamentales du langage C# Version 1.0 Z 2 [Notions fondamentales du langage Csharp] [Date : 25/03/09] Sommaire 1 Tout ce qu il faut savoir pour bien commencer... 3 1.1 Qu est ce qu un langage

Plus en détail

Le serveur HTTPd WASD. Jean-François Piéronne

Le serveur HTTPd WASD. Jean-François Piéronne Le serveur HTTPd WASD Jean-François Piéronne Sommaire Caractéristiques Architecture générale Performances Intégration dans OpenVMS Caractéristiques Implémentation complète HTTP/1.0 Méthodes "GET", "HEAD",

Plus en détail

ALGORITHMIQUE ET PROGRAMMATION En C

ALGORITHMIQUE ET PROGRAMMATION En C Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

Web Tier : déploiement de servlets

Web Tier : déploiement de servlets Web Tier : déploiement de servlets 1 / 35 Plan 1 Introduction 2 Servlet : Principe de fonctionnement 3 Création et développement sur un serveur JEE 4 Quelques méthodes de l API des servlets 5 Utilisation

Plus en détail

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

Mysql avec EasyPhp. 1 er mars 2006

Mysql avec EasyPhp. 1 er mars 2006 Mysql avec EasyPhp 1 er mars 2006 Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requètes vers les bases de données relationnelles. Il en reprend la syntaxe

Plus en détail

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS) PHP et mysql php_mysql PHP et mysql Code: php_mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/php-mysql/php-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/php-mysql.pdf Auteurs et

Plus en détail

WebSSO, synchronisation et contrôle des accès via LDAP

WebSSO, synchronisation et contrôle des accès via LDAP 31 mars, 1er et 2 avril 2009 WebSSO, synchronisation et contrôle des accès via LDAP Clément Oudot Thomas Chemineau Sommaire général Synchronisation d'identités WebSSO et contrôle des accès Démonstration

Plus en détail

Programmation Web. Introduction

Programmation Web. Introduction Programmation Web Introduction 1 Introduction 10 séances 1 h cours + 1h TD Notes : contrôle continu DS 1 TP : note de groupe : rapport + code source + démo TD : note personnelle (=0 si 2 absences non justifiées)

Plus en détail

Sécuriser les applications web de l entreprise

Sécuriser les applications web de l entreprise LABORATOIRE SECURITE Sécuriser les applications web de l entreprise Mise en place de ModSecurity pour Apache Julien SIMON - 61131 Sommaire Présentation de la situation actuelle...3 Qu est ce qu un WAF?...5

Plus en détail

Internet. Web Sécurité Optimisation

Internet. Web Sécurité Optimisation Internet Web Sécurité Optimisation Objectif Survol Web / Optimisation / Sécurité Sommaire 1. Fondamentaux 2. Hotes virtuels 3. Règles de réécriture 4. Optimisations 1. Fondamentaux - DNS fsf.com => 208.73.210.29

Plus en détail

Module http MMS AllMySMS.com Manuel d intégration

Module http MMS AllMySMS.com Manuel d intégration Module http MMS AllMySMS.com Manuel d intégration Objectif du document... 3 1 Envoi de MMS par requête http... 4 1.1 Format de la requête utilisée... 4 1.2 Arborescence et explication des balises du flux

Plus en détail

Tuto 2 : Configuration Virtual box, Configuration et installation du serveur XiBO

Tuto 2 : Configuration Virtual box, Configuration et installation du serveur XiBO Tuto 2 : Configuration Virtual box, Configuration et installation du serveur XiBO Dans Virtual box, la machine virtuelle xibo éteinte, sélectionner la et cliquer sur l icône configuration : Dans la fenêtre

Plus en détail

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais BTS S.I.O. 2012-2013 PHP OBJET Module SLAM4 Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais Table des matières 1 But... 3 2 Les bases :... 3 3 Utilisation d'une classe : Instanciation...3

Plus en détail

Génie Logiciel avec Ada. 4 février 2013

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

ECLIPSE ET PDT (Php development tools)

ECLIPSE ET PDT (Php development tools) ECLIPSE ET PDT (Php development tools) Eclipse Eclipse est un IDE (Integrated Development Environment)).C estun projet de la Fondation Eclipse visant à développer tout un environnement de développement

Plus en détail

TD3: tableaux avancées, première classe et chaînes

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

Plus en détail

Single Sign-On open source avec CAS (Central Authentication Service) Vincent Mathieu Pascal Aubry Julien Marchal

Single Sign-On open source avec CAS (Central Authentication Service) Vincent Mathieu Pascal Aubry Julien Marchal Single Sign-On open source avec CAS (Central Authentication Service) Vincent Mathieu Pascal Aubry Julien Marchal SSO open source avec CAS Introduction Pourquoi le Single Sign-On? Principes du SSO sur le

Plus en détail

2 Formation utilisateur

2 Formation utilisateur 2 Formation utilisateur Formation développeur Formation Formation développeur - créer un compte - créer un projet - rejoindre/quitter un projet - rappel sur l'open source et les licences - rappels su PHP

Plus en détail

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail

Tutoriel compte-rendu Mission 1

Tutoriel compte-rendu Mission 1 Mission 1 : Inventaire de l ensemble du matériel BTS SIO 2 2012/2013 MUNIER Julien Tutoriel compte-rendu Mission 1 Sommaire I - OCS Inventory Agent a) Installation et configuration Agent b) Installation

Plus en détail

Hébergement de sites Web

Hébergement de sites Web Hébergement de Solutions complètes et évolutives pour l hébergement de sites Web dynamiques et de services Web sécurisés. Fonctionnalités Serveur Web Apache hautes performances Apache 1. et.0 1 avec prise

Plus en détail

OUAPI Guide d installation Outil d administration de parc informatique. Documentation d installation et de paramétrage

OUAPI Guide d installation Outil d administration de parc informatique. Documentation d installation et de paramétrage Outil d administration de parc informatique Documentation d installation et de paramétrage Nicolas BIDET Ouapi.org 29/07/2012 Sommaire Installation de Wampserver... 3 1.1. Téléchargement de WampServer...

Plus en détail

Automatisation de l administration système

Automatisation de l administration système Automatisation de l administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des solutions Puppet : gestion de configuration de systèmes Capistrano : déploiement d applications

Plus en détail

Installer Enterprise Miner 5.1 en SAS9.1.3 - environnement Windows

Installer Enterprise Miner 5.1 en SAS9.1.3 - environnement Windows Installer Enterprise Miner 5.1 en SAS9.1.3 - environnement Windows Introduction :... 3 1. Présentation de l architecture Enterprise Miner 5.1 :... 4 2. Installation d Enterprise Miner 5.1:... 5 3. Post-installation

Plus en détail

1. La plate-forme LAMP

1. La plate-forme LAMP Servi ces pour intranet et Internet Ubuntu Linux - Création et gestion d un réseau local d entreprise 1. La plate-forme LAMP Services pour intranet et Internet La fourniture d'un site pour le réseau ou

Plus en détail

Installation Iconito École Numérique 2010 sous Windows WampServer

Installation Iconito École Numérique 2010 sous Windows WampServer Installation Iconito École Numérique 2010 sous Windows WampServer Outil web libre, module de la suite logicielle enfance Iconito version 1.0 Table des matières Table des matières...2 Avant-propos...3 Objectif...3

Plus en détail

Sessions en ligne - QuestionPoint

Sessions en ligne - QuestionPoint Sessions en ligne - QuestionPoint Configuration du navigateur Internet Explorer Dernière mise à jour : 12 mai 2012 Vous trouverez dans ce guide les procédures pour configurer votre navigateur Internet

Plus en détail

Devenez un véritable développeur web en 3 mois!

Devenez un véritable développeur web en 3 mois! Devenez un véritable développeur web en 3 mois! L objectif de la 3W Academy est de former des petits groupes d élèves au développement de sites web dynamiques ainsi qu à la création d applications web

Plus en détail

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall Titre Version Date Dernière page Identité du document Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

Plus en détail

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009 HTTP Technologies du Web Programmation Web côté serveur Pierre Senellart (pierre.senellart@telecom-paristech.fr) Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009 P. Senellart (TELECOM

Plus en détail