Td corrigé PHP Séance n°8 ? SMARTY - Exercices corriges pdf

PHP Séance n°8 ? SMARTY - Exercices corriges

Devoir papier : écrire 3 algorithmes 17. Devoir machine : écrire 2 algorithmes 17. PHP Séance n°6B = 2h ... Exercice n°1 : la banque ? les transactions 21. Exercice n°2 ... (13 exercices corrigés) vous pouvez consulter http://fr.php.net/tut. php ...




part of the document



introduction PHP – 10 séances de 4h
Licence Pro IRSII – 2009-2010Support proposé par C. Dabancourt, inspiré aussi par des exemples et tutoriaux Internet



 TOC \o "1-3" \h \z \u  HYPERLINK \l "_Toc244909834" PHP Séance n°1 – introduction & CMS  PAGEREF _Toc244909834 \h 3
 HYPERLINK \l "_Toc244909835" Exercice n°1 : principe du PHP  PAGEREF _Toc244909835 \h 3
 HYPERLINK \l "_Toc244909836" Exercice n°2 : les programmes de base  PAGEREF _Toc244909836 \h 3
 HYPERLINK \l "_Toc244909837" Exercice n°3 : les CMS  PAGEREF _Toc244909837 \h 4
 HYPERLINK \l "_Toc244909838" Exercice n°4 : faire un site avec SPIP  PAGEREF _Toc244909838 \h 4
 HYPERLINK \l "_Toc244909839" Création du site  PAGEREF _Toc244909839 \h 4
 HYPERLINK \l "_Toc244909840" Structuration et données du site :  PAGEREF _Toc244909840 \h 4
 HYPERLINK \l "_Toc244909841" La mise en forme du site (squelette)  PAGEREF _Toc244909841 \h 5
 HYPERLINK \l "_Toc244909842" Exercice n°4 : insérer une page php dans Spip  PAGEREF _Toc244909842 \h 5
 HYPERLINK \l "_Toc244909843" Exercice n°5 : vous pouvez essayer de faire le même travail avec Joomla  PAGEREF _Toc244909843 \h 5
 HYPERLINK \l "_Toc244909844" PHP Séance n°2 – introduction  PAGEREF _Toc244909844 \h 6
 HYPERLINK \l "_Toc244909845" Exercice n°1 : les types de variables simples  PAGEREF _Toc244909845 \h 6
 HYPERLINK \l "_Toc244909846" Exercice n°2 : les chaînes de caractères (les fonctions)  PAGEREF _Toc244909846 \h 6
 HYPERLINK \l "_Toc244909847" Exercice n°3 : les conditions  PAGEREF _Toc244909847 \h 6
 HYPERLINK \l "_Toc244909848" Exercice n°4 : les boucles (for et while)  PAGEREF _Toc244909848 \h 7
 HYPERLINK \l "_Toc244909849" Exercice n°5 : les tableaux (foreach)  PAGEREF _Toc244909849 \h 7
 HYPERLINK \l "_Toc244909850" Exercice n°6 : les tableaux associatifs  PAGEREF _Toc244909850 \h 7
 HYPERLINK \l "_Toc244909851" Exercice n°7 : les fonctions  PAGEREF _Toc244909851 \h 8
 HYPERLINK \l "_Toc244909852" Exercice n°8 : les variables d’environnement  PAGEREF _Toc244909852 \h 8
 HYPERLINK \l "_Toc244909853" Exercice n°9 : les dates  PAGEREF _Toc244909853 \h 8
 HYPERLINK \l "_Toc244909854" Exercice n°10 : portée des variables (include)  PAGEREF _Toc244909854 \h 8
 HYPERLINK \l "_Toc244909855" Exercice n°11 : lire/écrire un nombre dans un fichier texte  PAGEREF _Toc244909855 \h 8
 HYPERLINK \l "_Toc244909856" Exercice n°12 : deux pages : GET  PAGEREF _Toc244909856 \h 8
 HYPERLINK \l "_Toc244909857" Exercice n°13 : deux pages : POST  PAGEREF _Toc244909857 \h 9
 HYPERLINK \l "_Toc244909858" Exercice n°14 : deux pages : le jeu « plus grand-plus petit »  PAGEREF _Toc244909858 \h 9
 HYPERLINK \l "_Toc244909859" Exercice n°15 : test des formulaires HTML  PAGEREF _Toc244909859 \h 9
 HYPERLINK \l "_Toc244909860" PHP Séance n°3 – PHP et Mysql  PAGEREF _Toc244909860 \h 10
 HYPERLINK \l "_Toc244909861" Exercice n°0 : connexion-déconnexion à une BDD mysql (1 seule table)  PAGEREF _Toc244909861 \h 10
 HYPERLINK \l "_Toc244909862" Exercice n°1 : select dans un tableau – 1 page  PAGEREF _Toc244909862 \h 10
 HYPERLINK \l "_Toc244909863" Exercice n°2 : gestion des erreurs SQL  PAGEREF _Toc244909863 \h 11
 HYPERLINK \l "_Toc244909864" Exercice n°3 : Insert – 2 pages  PAGEREF _Toc244909864 \h 11
 HYPERLINK \l "_Toc244909865" Exercice n°4 : Delete – 1 page  PAGEREF _Toc244909865 \h 11
 HYPERLINK \l "_Toc244909866" Exercice n°5 : Update – 2 pages  PAGEREF _Toc244909866 \h 11
 HYPERLINK \l "_Toc244909867" Exercice n°6 : les Magic Quotes  PAGEREF _Toc244909867 \h 12
 HYPERLINK \l "_Toc244909868" Exercice n°7 : session simple (le panier !)  PAGEREF _Toc244909868 \h 12
 HYPERLINK \l "_Toc244909869" Exercice n°8 : protéger des pages - session  PAGEREF _Toc244909869 \h 13
 HYPERLINK \l "_Toc244909870" PHP Séance n°4 - PROJET – 4h  PAGEREF _Toc244909870 \h 14
 HYPERLINK \l "_Toc244909871" Exercice n°1 : structure d’une application (pour déploiement/maintenance facilité)  PAGEREF _Toc244909871 \h 14
 HYPERLINK \l "_Toc244909872" Exercice n°2 : projet à réaliser. Trombinoscope  PAGEREF _Toc244909872 \h 14
 HYPERLINK \l "_Toc244909873" PHP Séance n°6A – devoir = 2h (version 2008)  PAGEREF _Toc244909873 \h 16
 HYPERLINK \l "_Toc244909874" Devoir papier : écrire 3 algorithmes  PAGEREF _Toc244909874 \h 16
 HYPERLINK \l "_Toc244909875" Devoir machine : écrire 2 algorithmes  PAGEREF _Toc244909875 \h 16
 HYPERLINK \l "_Toc244909876" PHP Séance n°6B = 2h  PAGEREF _Toc244909876 \h 17
 HYPERLINK \l "_Toc244909877" Exercice n°1 : Utilisation de la classe fpdf  PAGEREF _Toc244909877 \h 17
 HYPERLINK \l "_Toc244909878" Installez et testez la classe fpdf et ses exemples  PAGEREF _Toc244909878 \h 17
 HYPERLINK \l "_Toc244909879" Utilisation de la classe fpdf  PAGEREF _Toc244909879 \h 17
 HYPERLINK \l "_Toc244909880" Exercice n°2 : Utilisation de la classe fpdf  PAGEREF _Toc244909880 \h 17
 HYPERLINK \l "_Toc244909881" PHP Séance n°5 – 4h  PAGEREF _Toc244909881 \h 18
 HYPERLINK \l "_Toc244909882" Exercice n°1 : Yahoo YUI et Google AJAX Libraries API  PAGEREF _Toc244909882 \h 18
 HYPERLINK \l "_Toc244909883" Exercice n°2 : Ajax pour envoyer un nom de fichier.  PAGEREF _Toc244909883 \h 18
 HYPERLINK \l "_Toc244909884" Exercice n°3 : deux pages : le jeu « plus grand-plus petit » avec Ajax  PAGEREF _Toc244909884 \h 18
 HYPERLINK \l "_Toc244909885" Exercice n°4 : reprendre l’application « trombinoscope ».  PAGEREF _Toc244909885 \h 19
 HYPERLINK \l "_Toc244909886" PHP Séance n°7 – Transaction & ADODB  PAGEREF _Toc244909886 \h 20
 HYPERLINK \l "_Toc244909887" Exercice n°1 : la banque – les transactions  PAGEREF _Toc244909887 \h 20
 HYPERLINK \l "_Toc244909888" Exercice n°2 : Analyser le corrigé du TP6  PAGEREF _Toc244909888 \h 20
 HYPERLINK \l "_Toc244909889" Exercice n°3 : Analyser le corrigé du TP3 : l’adapter à ADODB  PAGEREF _Toc244909889 \h 20
 HYPERLINK \l "_Toc244909890" Exercice n°4 : reprendre le corrigé du trombinoscope : l’adapter à ADODB  PAGEREF _Toc244909890 \h 20
 HYPERLINK \l "_Toc244909891" Exercice n°5 : projet – gestion de bateaux  PAGEREF _Toc244909891 \h 21
 HYPERLINK \l "_Toc244909892" PHP Séance n°8 – SMARTY  PAGEREF _Toc244909892 \h 22
 HYPERLINK \l "_Toc244909893" Exercice n°0 : Tester SMARTY  PAGEREF _Toc244909893 \h 22
 HYPERLINK \l "_Toc244909894" Exercice n°1 : Tester les exemples SMARTY  PAGEREF _Toc244909894 \h 22
 HYPERLINK \l "_Toc244909895" Exercice n°2 : reprendre trombinoscope avec SMARTY  PAGEREF _Toc244909895 \h 23
 HYPERLINK \l "_Toc244909896" Exercice n°3 : projet – gestion de bateaux avec SMARTY  PAGEREF _Toc244909896 \h 23
 HYPERLINK \l "_Toc244909897" PHP Séance n°9 – Devoir 4h  PAGEREF _Toc244909897 \h 24
 HYPERLINK \l "_Toc244909898" Le projet gestion de …  PAGEREF _Toc244909898 \h 24
 HYPERLINK \l "_Toc244909899" Le sujet  PAGEREF _Toc244909899 \h 24
 HYPERLINK \l "_Toc244909900" La réalisation : écrire les 5 pages php.  PAGEREF _Toc244909900 \h 24
 HYPERLINK \l "_Toc244909901" PHP Séance n°10 – utilisation d’outils PHP  PAGEREF _Toc244909901 \h 25
 HYPERLINK \l "_Toc244909902" Exercice n°1 : PHPCheckStyle  PAGEREF _Toc244909902 \h 25
 HYPERLINK \l "_Toc244909903" Exercice n°2 : insérer googleMap en PHP  PAGEREF _Toc244909903 \h 25
 HYPERLINK \l "_Toc244909904" Exercice n°3 : AjaxTerm : un xterm via le web  PAGEREF _Toc244909904 \h 25
 HYPERLINK \l "_Toc244909905" Exercice n°4 : GLPI  PAGEREF _Toc244909905 \h 25
 HYPERLINK \l "_Toc244909906" Exercice n°5 : Nagios  PAGEREF _Toc244909906 \h 25

PHP Séance n°1 – introduction & CMS
(13 exercices corrigés) vous pouvez consulter  HYPERLINK "http://fr.php.net/tut.php" http://fr.php.net/tut.php
Exercice n°1 : principe du PHP

 HYPERLINK "http://fr.wikipedia.org/wiki/Fichier:Php_arch_shema.png" \o "Schéma du fonctionnement de PHP"  INCLUDEPICTURE "http://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Php_arch_shema.png/600px-Php_arch_shema.png" \* MERGEFORMATINET 
 HYPERLINK "http://fr.wikipedia.org/wiki/PHP" http://fr.wikipedia.org/wiki/PHP
Exercice n°2 : les programmes de base
Quelques outils pour commencer :
En local (tout sur votre ordinateur : plus rapide !) :
Un serveur WEB Apache avec le module PHP
Un éditeur de texte (VI, Quanta+, Notepad++, Dreamwaver disponible à l’iut))
Un navigateur
Sur un Serveur Distant (en production !)
Un serveur WEB distant avec PHP et un serveur FTP
Un éditeur de texte
Un client FTP (pour déposer les fichiers php)
Un navigateur
Sous windows, vous avez des programmes WAMP (Windows-Apache-Mysql-Php), les pages sont dans le dossier C:\wamp\www\.
Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php), les pages sont dans le dossier /var/www/

A faire : installer le système linux pour tester le programme « bonjour.php » suivant :



Attention !!! : [Fichier][ouvrir][c:\wamp\www\ tp1\e0.php] `" « http://localhost/ tp1/e0.php »
Regardez le « code source » de la page web…
Exercice n°3 : les CMS
Un système de gestion de contenu ou SGC ((en) Content Management Systems ou CMS) est une famille de logiciels destinés à la conception et à la mise à jour dynamique de site web ou d'application multimédia. Ils partagent les fonctionnalités suivantes :
Ils permettent à plusieurs individus de travailler sur un même document ;
Ils fournissent une chaîne de publication (workflow) offrant par exemple la possibilité de mettre en ligne le contenu des documents ;
Ils permettent de séparer les opérations de gestion de la forme et du contenu ;
Ils permettent de structurer le contenu (utilisation de FAQ, de documents, de blogs, de forums de discussion, etc.) ;

 HYPERLINK "http://fr.wikipedia.org/wiki/Syst%C3%A8me_de_gestion_de_contenu" http://fr.wikipedia.org/wiki/Syst%C3%A8me_de_gestion_de_contenu

Voici des exemples réels de sites SPIP :
 HYPERLINK "http://www.urbasolar.com/" http://www.urbasolar.com/
 HYPERLINK "http://www.theatre2lacte.com/" http://www.theatre2lacte.com/
 HYPERLINK "http://fabulousnet.free.fr/" http://fabulousnet.free.fr/
 HYPERLINK "http://www.chantier-capvert.fr/" http://www.chantier-capvert.fr/
 HYPERLINK "http://www.apard.com/" http://www.apard.com/
Exercice n°4 : faire un site avec SPIP
Création du site
Installer SPIP en local dans un dossier (voir le fichier PDF joint).
 HYPERLINK "http://www.spip.net/rubrique151.html" http://www.spip.net/rubrique151.html
Notez sur un papier les mots de passe et les comptes utilisateurs que vous définissez.
Structuration et données du site :
Faire un site qui reprend ce cours « Introduction PHP »
Vous créerez une rubrique par séance : 10 en tout.
Chaque rubrique possèdera une sous rubrique par exercice.
Chaque sous-rubrique possèdera au moins un article (l’énoncé) et des fichiers ou des liens s’ils sont disponibles…
N’oubliez pas de publier les articles
La mise en forme du site (squelette)
Utilisez un squelette tout fait pour rendre votre site agréable.
Exercice n°4 : insérer une page php dans Spip
Il vous sera utile d’inclure des pages php dans votre article spip.
 HYPERLINK "http://www.eklesia.net/spip.php?article47" http://www.eklesia.net/spip.php?article47
Exercice n°5 : vous pouvez essayer de faire le même travail avec Joomla
Il vous sera utile d’inclure des pages php dans votre article spip.


PHP Séance n°2 – introduction
Vous pouvez consulter la documentation, et particulièrement l’« Index des fonctions »
Exercice n°1 : les types de variables simples
Les variables sont définies par le caractère « $ ». Elles ne sont pas typées.
Définir et afficher les variables suivantes :
$a= 1 ; // un commentaire
$b= 21.55 ;
$c= 22,66 ;
$d= $a + $b ;
$e= " attention \n";
$f= " à vous";
$g= $e.$f ;
$h= " le resultat = ". $a+$b ;
$i= $a).
if(isset($_POST['nom'])) $nom=$_POST['nom']; else      $nom="";
pour tester l’existence d’une variable
Exercice n°14 : deux pages : le jeu « plus grand-plus petit »
Au début, le jeu place un nombre aléatoire dans un fichier. Le joueur dispose de 10 essais pour trouver le nombre.
Exercice n°15 : test des formulaires HTML
Voir les différents formulaires sur Internet.

Par exemple : http://www.siteduzero.com/tutoriel-3-13596-les-formulaires.html#ss_part_2
(le contenu de cette page est donnée dans un fichier PDF ci-joint)

Rq : Si vous avez de multiples fois le même input dans un formulaire : utilisez un tableau !
Pour un formulaire avec un tableau, le nom des variables sera indiqué avec « [ ] », par exemple : (il sera ensuite récupéré en get ou post sous forme de tableau).


Exercice : écrire un fichier HTML (« demande.html ») avec 1 formulaire contenant :
La saisie d’une personne (nom-prenom-adresse - code postal sur 5 caractère -ville)
La ville : une case à cochée parmi 5 villes.
Un petit texte à saisir
Un menu déroulant pour choisir un jour de la semaine (par défaut, le mardi)
Et le bouton de validation pour ouvrir la page « reponse.php ».


Afficher les résultats dans la page PHP (« reponse.php »)

Autre question : que se passe-t-il si on place 2 formulaires dans la page « demande.html » ?
PHP Séance n°3 – PHP et Mysql
(BDD mysql en PHP et Sessions)
Exercice n°0 : connexion-déconnexion à une BDD mysql (1 seule table)
Créez la BDD « seance3 » avec la table « produit » :
NPProduitCouleurQSIntegerVarchar(20)Varchar(20)IntegerAvec la documentation, créer un fichier « fonctionSQL.php » qui contient la fonction de connexion et la fonction deconnexion. Tester.
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) {     die('Connexion impossible : ' . mysql_error()); } echo 'Connecté correctement'; mysql_close($link);
Exemple de code extrait de la documentation
Exercice n°1 : select dans un tableau – 1 page
Avec la documentation, créer dans le fichier « fonctionSQL.php » la fonction qui retourne un tableau contenant la liste des noms de la table « produit ». Tester. Afficher la table « produit » dans un tableau html grâce à la page « select.php ».


mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable"); while ($row = mysql_fetch_array($result, MYSQL_NUM)) {    printf("ID : %s  Nom : %s", $row[0], $row[1]); } mysql_free_result($result);

$result = mysql_query("SELECT id, name FROM mytable"); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {    printf("ID : %s  Nom : %s", $row["id"], $row["name"]); } mysql_free_result($result);
Exemple de code extrait de la documentation
Exercice n°2 : gestion des erreurs SQL
Avec la documentation, modifiez le fichier « fonctionSQL.php » pour afficher un message d’erreur en cas de disfonctionnement. Tester (par exemple, en coupant le serveur mysqld).
echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
Exemple de code extrait de la documentation
Exercice n°3 : Insert – 2 pages
Avec la documentation, créer dans le fichier « fonctionSQL.php » la fonction qui permet d’insérer un nouveau tuple dans la table « produit ». Tester.
La saisie se fera dans le fichier « insert.php ».
$sql = "INSERT INTO infos_tbl(id, nom, prenom,email, icq, titre, url) VALUES('','$nom','$prenom','$email','$icq','$titre','$url')";
mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error()); echo 'Vos infos on été ajoutées.';
Exemple de code pour insérer en php sous mysql
Exercice n°4 : Delete – 1 page
Créer la page « delete.php » inspirée de la page « select.php », qui contiendra une colonne de plus avec un bouton permettant de supprimer la ligne du bouton cliqué.

Indication importante :
Exercice n°5 : Update – 2 pages
Créer la page « update.php » inspirée de la page « select.php », qui contiendra une colonne de plus avec un bouton permettant de modifier les informations de la ligne du bouton cliqué, puis de valider ou d’annuler les changements.

Exercice n°6 : les Magic Quotes
Pour éviter les « SQL-Injection ».
Voir :  HYPERLINK "http://www.phpfrance.com/tutoriaux/index.php/2005/04/17/29-les-magic-quotes" http://www.phpfrance.com/tutoriaux/index.php/2005/04/17/29-les-magic-quotes
(ou le fichier pdf joint).
Exercice n°7 : session simple (le panier !)
Pour passer d’une page à l’autre des valeurs sans mettre de formulaires avec des variables cachées (hidden), vous avez la possibilité d’utiliser la variable d’environnement $_SESSION.
Indication : sous free, vous avez la possibilité de tester cela en créant un dossier « session » à la racine de votre site.

Suivie par

Exemple de code extrait de la documentation

Exercice n°8 : protéger des pages - session
Pour entrer sur un site de 3 pages (a, b, c), vous devez d’abord entrer un mot de passe. Vous pouvez naviguer autant que vous le désirez, mais sans naviguer pendant 2 minutes, vous serez déconnecté.
Indication : le mot de passe sera « abc ». Dans la session, sera indiquée la date exacte de la dernière connexion… Si cette date n’existe pas : le mot de passe est demandé. Si cette date est trop ancienne (2’ d’écoulé) : le mot de passe est demandé.
PHP Séance n°4 - PROJET – 4h
Exercice n°1 : structure d’une application (pour déploiement/maintenance facilité)

L’idée consiste à ne pas avoir de fichier à la racine du projet. Seulement les fichiers « index.php » qui affichera la page désirée.

Structure de l’application : (non exhaustif)
/projet/etc/ ‘ le(s) fichier(s) de configuration
/projet/module/ ‘ les pages « php »
/projet/css/
/projet/js/
/projet/tmp/
/projet/images/
/projet/lib/ ‘ les librairies spécifiques utilisées

Créer un projet qui permet de naviguer entre 2 pages « a.php » et « b.php », d’afficher une image.
Exercice n°2 : projet à réaliser. Trombinoscope
1) l’administrateur
- il dépose des images dans un répertoire « photo/vrac/ » (au moyen d’un fichier .zip), ou un tableau d’images.
- les groupes disponibles seront définis par l’administrateur directement dans un fichier de configuration.

2) l’étudiant
- lors de son premier passage, il doit donner
- son mail
- son groupe
- et cliquer sur sa photo
- la photo est identifiée, et déplacée dans un répertoire « photo/numéro du groupe/ »

- lors des passages suivants :
- il peut visualiser le trombinoscope (choix par groupe, par nom, par prénom)

2.1 faire un dessin précis du site (avec des flèches pour indiquer le passage d’information, le nom et le numéro associé de chaque page)
2.2 définir la table SQL et la créer dans une BDD « trombinoscope ».
2.3 définir et écrire les pages php.



PHP Séance n°6A – devoir = 2h (version 2008)
Devoir papier : écrire 3 algorithmes
EXO1 : Écrire deux pages en php. La première permet à l’utilisateur de saisir 2 nombres.
La deuxième page affiche les 2 nombres (le plus grand sera en gras ).

EXO2 : Expliquez le principe du client-serveur pour PHP par un dessin & moins de 10 lignes.

EXO3 : Écrire le jeu du pendu.
Devoir machine : écrire 2 algorithmes
EXO1 : Définir le programme « exo1.php » qui affiche dans un formulaire à choix multiple le nom des fichiers du dossier courant. Ajouter un bouton pour « supprimer » le fichier et un bouton pour « afficher » le fichier.




EXO2 : Écrire le jeu du pendu « pendu.php ». Le mot sera stockée dans une variable de session.

OU

EXO2 : Écrire un programme « exo2.php » qui permet de saisir dans un menu déroulant (de 1 à 8) le nombre de champs texte à saisir. Les saisir, valider et les sauvegarder dans une table.
(BDD=  « devoir1 », table =  « exo2 », champ= « nom » (varchar(20)).
PHP Séance n°6B = 2h
Exercice n°1 : Utilisation de la classe fpdf
Installez et testez la classe fpdf et ses exemples
Faire le tutoriel donné avec fpdf.
Utilisation de la classe fpdf
Faire une page php qui demande :
Le nom du serveur MySql
Le nom de la base de données
Le nom d’utilisateur et son mot de passe
Le nom de la table
La validation entraîne la création d’un fichier pdf qui contient les données de la table dans un tableau.
Exercice n°2 : Utilisation de la classe fpdf
Ecrire la page php qui génère le trombinoscope au format PDF.
En haut : le nom du groupe.
Dans un tableau, les étudiants avec leur nom, prénom.

Il sera possible de choisir le nombre de photos sur la page (en nombre de colonnes)

PHP Séance n°5 – 4h
AJAX avec Google et Yahoo
Exercice n°1 : Yahoo YUI et Google AJAX Libraries API
Écrire 5 pages php qui utilise les technologies fournies par google et yahoo.
Images à déplacer
saisie de texte
graphisme (sous forme de camembert)
petit traitement de texte
… au choix…
 HYPERLINK "http://blog.barbayellow.com/2006/09/17/quelle-librairie-javascript-utiliser/" http://blog.barbayellow.com/2006/09/17/quelle-librairie-javascript-utiliser/

 HYPERLINK "http://dojocampus.org/explorer/#Dojo" http://dojocampus.org/explorer/#Dojo

 HYPERLINK "http://code.google.com/apis/ajaxlibs/" http://code.google.com/apis/ajaxlibs/

 HYPERLINK "http://developer.yahoo.com/yui/" http://developer.yahoo.com/yui/
Exercice n°2 : Ajax pour envoyer un nom de fichier.
On veut envoyer un fichier du poste client vers le serveur.
Avant d’envoyer le fichier (qui peut-être très gros), on veut vérifier par Ajax si le nom du fichier n’existe pas déjà dans le dossier « /tmp/ » du projet.
Si le fichier existe déjà : on le signale à l’utilisateur.
Sinon, on ne dit rien…
Exercice n°3 : deux pages : le jeu « plus grand-plus petit » avec Ajax
Au début, le jeu place un nombre aléatoire dans un fichier. Le joueur dispose de 10 essais pour trouver le nombre.

Exercice n°4 : reprendre l’application « trombinoscope ».
Utilisez les technologies Ajax pour rendre plus conviviale le site de trombinoscope (Faites preuve d’imagination).
PHP Séance n°7 – Transaction & ADODB
Exercice n°1 : la banque – les transactions
Créer une BDD « banque », une table innoDB « compte » avec 5 clients…

Faire trois pages php :
DAB
Guichet (cheque et liquide)
Achat carte bleue

Le but : faire fonctionner les trois pages en même temps, pour empêcher les conflits d’écritures simultanées sur la table « compte ».

Exercice n°2 : Analyser le corrigé du TP6
Pour sécuriser un site, vous pouvez « cacher » les pages appelées.
Tester le code suivant : « tp6-num.zip » (avec et sans numéro)
Tester le code suivant « tp7-num-session.zip » (avec numéro & temps de connexion limité).

Exercice n°3 : Analyser le corrigé du TP3 : l’adapter à ADODB
Installer & Tester « tp7-adodb-tp3-bis.zip »

ADOBD (Active Data Objects Data Base) permet d'effectuer simplement des requêtes en SQL sous MySQL, PostgreSQL, Interbase, Informix, Oracle, MS SQL 7, Foxpro, Access, ADO, SAP DB, SQLite, Sybase, DB2 pour des applications Web faite en PHP.

sitographie :
 HYPERLINK "http://fr.wikipedia.org/wiki/ADOdb" http://fr.wikipedia.org/wiki/ADOdb
 HYPERLINK "http://phplens.com/phpeverywhere/adodb_french" http://phplens.com/phpeverywhere/adodb_french
Exercice n°4 : reprendre le corrigé du trombinoscope : l’adapter à ADODB
- à la fin, installer le trombinoscope avec un autre SGBDR… (en moins de 5 minutes)
Exercice n°5 : projet – gestion de bateaux
On veut gérer un port de plaisance qui loue des places pour amarrer les bateaux.

Il y a environ 150 emplacements. Chacun pouvant accepter un type de bateau :
Type A : moins de 5 mètres
Type B : moins de 10 mètres
Type C : moins de 17 mètres

Les propriétaires des bateaux font des réservation à partir d’une date pour un nombre de jours données (par exemple, à partir du 10/6/2006 pour 3 jours : l’emplacement sera réservé le 10/6, 11/6 et 12/6, l’emplacement pourra être loué à un autre client à partir du 13/6…).

Les réservations se font exclusivement avec le type de bateaux.

Chaque bateau est identifié par une immatriculation de 3 caractères suivis de 2 chiffres.

Il sera possible dans le futur, d’obtenir l’agrément pour les plus gros bateaux de type D.

PHP Séance n°8 – SMARTY
 HYPERLINK "http://fr.wikipedia.org/wiki/Smarty" http://fr.wikipedia.org/wiki/Smarty

Le Modèle MVC « a.php » et « a.tpl »
1 include(_SMARTY);
2 $smarty = new Smarty;

3 $smarty->template_dir = './module';
$smarty->compile_dir = './temp/';
$smarty->config_dir = './temp/';
$smarty->cache_dir = './temp/';

4 // le CODE PHP CALCULE les VALEURS
5 $smarty->assign('tab',$tableau);

6 $smarty->display("$page.tpl");


CONSULTER
{html_options options=$tab }

Exercice n°0 : Tester SMARTY
Télécharger le projet « tp-smarty.zip »
Copier le dossier « tp-smarty » dans « www »
Créer la BDD « trombi »
Utiliser le script SQL « tp-smarty\Base-de-donnees.sql » pour la BDD « trombi »
Modifier la configuration dans « tp-smarty\etc\variable.inc »
Tester
Exercice n°1 : Tester les exemples SMARTY
Dans le projet « tp-smarty.zip », créer deux fichiers :
« tp-smarty\module\c.php » et « tp-smarty\module\c.tpl »
Et ajouter dans « tp-smarty\etc\config.inc » l’association « num=3 ( page=c »
Lire la documentation en Français sur le site de SMARTY
Dans chaque exemple, vous avez 2 parties : le code php ET le code Smarty. Faire du copier-coller des exemples dans, respectivement, « c.php » et « c.tpl »
Regardez le résultat dans « http://localhost/tp-smarty/index.php?num=3 »

… et recommencez avec divers exemples…

Exercice n°2 : reprendre trombinoscope avec SMARTY
à la fin, installer le trombinoscope avec une autre BDD… (en moins de 5 minutes)
Exercice n°3 : projet – gestion de bateaux avec SMARTY
Reprendre l’exercice de la séance n°7 en utilisant SMARTY.
PHP Séance n°9 – Devoir 4h
Le projet gestion de …
Le sujet

La réalisation : écrire les 5 pages php.

PHP Séance n°10 – utilisation d’outils PHP
Regardez les applications ci-dessous et installez-testez celles que vous voulez.
Exercice n°1 : PHPCheckStyle
Configurer et utiliser cet outil pour rendre plus standard votre code php.
Exercice n°2 : insérer googleMap en PHP
Un exercice simple et sympathique :
 HYPERLINK "http://fardeen.biz/index.php/tutoriel-application-google-map-avec-php/" http://fardeen.biz/index.php/tutoriel-application-google-map-avec-php/
Exercice n°3 : AjaxTerm : un xterm via le web
 HYPERLINK "http://nawer.freecontrib.org/index.php?2006/05/24/203-ajaxterm-un-terminal-a-distance-dans-un-simple-navigateur" http://nawer.freecontrib.org/index.php?2006/05/24/203-ajaxterm-un-terminal-a-distance-dans-un-simple-navigateur
Exercice n°4 : GLPI

!#$%BCDK|‰’›œŸ ·¸¹ºÖóçÙ˽¯Ë¤–ˆ„€|x|t€|lhlUG>h©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHuh÷.Ójh÷.ÓUhÜ/äh#yKh*N‘hI`šhw ? ] ^ _ y z { | } ~ ñ×Äñ¹ª¹™ª¹ªÄ‡Äñ~ñdÄñ¹ª¹Sª¹ªÄ jöh©DUmHnHu2jyh©Dh©D>*B*UmHnHphÿuh©DmHnHu"h©D5;CJ\aJmHnHu jüh©DUmHnHujh©DUmHnHuh©DmHnHu$jh™]h©D0JUmHnHu2jh©Dh©D>*B*UmHnHphÿuh™]h©D0JmHnHu~  €   ž Ÿ   Å Æ Ç á â ã ä å æ ç è é 






:
;
<
=
>
?
@
A
ñÞÐÇЭÞТ“¢‚“¢“ÞñÞÐÇÐhÞТ“¢W“¢“ÞñÞ jêh©DUmHnHu2jmh©Dh©D>*B*UmHnHphÿu jðh©DUmHnHujh©DUmHnHuh©DmHnHu2jsh©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHuh©D:CJaJmHnHu"A
B
^
_
`
a
‡
ˆ
‰
£
¤
¥
¦
§
¨
©
ª
«
Ç
È
É
Ê
Ú
Û
Ü
ö
÷
ø
ù
ú
û
ñèñλñ°¡°¡°¡»»ñèñg»ñ°¡°V¡°¡» jÞh©DUmHnHu2jah©Dh©D>*B*UmHnHphÿuh©D:CJaJmHnHu jäh©DUmHnHujh©DUmHnHuh©DmHnHu$jh™]h©D0JUmHnHu2jgh©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu@
©
ü
a È 8 Â "
’

mÙA«
yÔEÃ&Š
v×_Ñ;žùóóóùùíùùùùùùùùùùùùùùùíùùùù
Æf#

Æf#

Æf#

ü
ý
þ
    ? @ A [ \ ] ^ _ ` a b c  €  ‚ ¦ § ¨ Â Ã Ä Å Æ Ç È ïÜÎÅΫÜΠ‘ €‘ ‘ÜïÜÎÅÎfÜΠ‘ U‘ ‘Üï jÒh©DUmHnHu2jUh©Dh©D>*B*UmHnHphÿu jØh©DUmHnHujh©DUmHnHuh©DmHnHu2j[h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHuh©D6CJ]aJmHnHu!È É Ê æ ç è é    2 3 4 5 6 7 8 9 : V W X Y   ¡ ¢ ¼ ½ ¾ ¿ À Á Â Ã Ä íßÖß¼íß±¢±‘¢±¢í‚íßÖßhíß±¢±W¢±¢í‚íß jÆ h©DUmHnHu2jI h©Dh©D>*B*UmHnHphÿuh©D:CJaJmHnHu jÌh©DUmHnHujh©DUmHnHuh©DmHnHu2jOh©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHu"Ä à á â ã







!
"
#
$
@
A
B
C
p
q
r
Œ

Ž


‘
öèλ谡°¡°¡»~»èöèd»è°¡°S¡°¡» jº h©DUmHnHu2j= h©Dh©D>*B*UmHnHphÿu"h©D5;CJ\aJmHnHu jÀ
h©DUmHnHujh©DUmHnHuh©DmHnHu$jh™]h©D0JUmHnHu2jC
h©Dh©D>*B*UmHnHphÿuh™]h©D0JmHnHuh©DmHnHu‘
’
“
”
°
±
²
³
ë
ì
í
 
  
+,-.KLMghijklmnñÞÐÇЭÞТ“¢‚“¢“ÞñÞÐÇÐhÞТ“¢W“¢“ÞñÞ j®
h©DUmHnHu2j1
h©Dh©D>*B*UmHnHphÿu j´ h©DUmHnHujh©DUmHnHuh©DmHnHu2j7 h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHuh©D:CJaJmHnHu"no‹ŒŽ·¸¹ÓÔÕÖרÙÚÛ÷øùú !;?@ABCñèñλñ°¡°¡°¡»»ñèñg»ñ°¡°V¡°¡»»ñ j¢h©DUmHnHu2j%h©Dh©D>*B*UmHnHphÿuh©D:CJaJmHnHu j¨h©DUmHnHujh©DUmHnHuh©DmHnHu$jh™]h©D0JUmHnHu2j+h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu!C_`ab‰Š‹¥¦§¨©ª«¬­ÉÊËÌèéê 
  (öèλ谡°¡°¡»»èöèg»è°¡°V¡°¡»»èö j–h©DUmHnHu2jh©Dh©D>*B*UmHnHphÿuh©D:CJaJmHnHu jœh©DUmHnHujh©DUmHnHuh©DmHnHu$jh™]h©D0JUmHnHu2jh©Dh©D>*B*UmHnHphÿuh™]h©D0JmHnHuh©DmHnHu!()*+WXYstuvwxyz{—˜™š²³´ÎÏÐÑÒÓÔÕÖòóñ×Äñ¹ª¹™ª¹ªÄŠÄññgÄñ¹ª¹Vª¹ªÄŠÄññ jŠh©DUmHnHu2j
h©Dh©D>*B*UmHnHphÿuh©DmHnHuh©D:CJaJmHnHu jh©DUmHnHujh©DUmHnHuh©DmHnHu$jh™]h©D0JUmHnHu2jh©Dh©D>*B*UmHnHphÿuh™]h©D0JmHnHu!óôõ#$%?@ABCDEFGcdef¡¢£½¾¿ÀÁÂÃÄÅáâæÓź«ºš«º«Ó‹ÓłÅhÓź«ºW«º«Ó‹ÓłŠj~h©DUmHnHu2jh©Dh©D>*B*UmHnHphÿuh©DmHnHuh©D:CJaJmHnHu j„h©DUmHnHujh©DUmHnHuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHu2jh©Dh©D>*B*UmHnHphÿu âãä !"#$%&'(DEFGhij„…†‡ˆ‰Š‹Œ¨©æÓź«ºš«º«Ó‹ÓłÅhÓź«ºW«º«Ó‹ÓłŠjrh©DUmHnHu2jõh©Dh©D>*B*UmHnHphÿuh©DmHnHuh©D:CJaJmHnHu jxh©DUmHnHujh©DUmHnHuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHu2jûh©Dh©D>*B*UmHnHphÿu ©ª«èéê 
  ()*+TUVpqrstuvwx”•æÓź«ºš«º«Ó‹ÓłÅhÓź«ºW«º«Ó‹ÓłŠjfh©DUmHnHu2jéh©Dh©D>*B*UmHnHphÿuh©DmHnHuh©D:CJaJmHnHu jlh©DUmHnHujh©DUmHnHuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHu2jïh©Dh©D>*B*UmHnHphÿu •–—´µ¶ÐÑÒÔÕÖרÙõö÷øXYZ\]^æÓź«ºš«º«ÓˆÓÅÅeÓź«ºT«º«Ó jZh©DUmHnHu2jÝh©Dh©D>*B*UmHnHphÿuh©DmHnHu"h©D5;CJ\aJmHnHu j`h©DUmHnHujh©DUmHnHuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHu2jãh©Dh©D>*B*UmHnHphÿu^_`a}~€®¯°ÊËÌÎÏÐÑÒÓïðñò45689:;*B*UmHnHphÿu jTh©DUmHnHujh©DUmHnHuh©DmHnHu2j×h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHuh©D:CJaJmHnHu"*B*UmHnHphÿuh©D:CJaJmHnHu jHh©DUmHnHujh©DUmHnHuh©DmHnHu$jh™]h©D0JUmHnHu2jËh©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu!žcÆ5¤š
}åN¦Œí]´-¤.«‚ïp ü j!ùùùùùóùùóùùóùííùóùùùùóùùùùù
Æf#

Æf#

Æf#
 !@AB\]^`abcde‚ƒ„£¤¥¿ÀÁÃÄÅÆÇÈäöèλ谡°¡°¡»»èöèg»è°¡°V¡°¡»»èö j6!h©DUmHnHu2j¹ h©Dh©D>*B*UmHnHphÿuh©D:CJaJmHnHu j< h©DUmHnHujh©DUmHnHuh©DmHnHu$jh™]h©D0JUmHnHu2j¿h©Dh©D>*B*UmHnHphÿuh™]h©D0JmHnHuh©DmHnHu!äåæç./0234567STUV‚ƒžŸ¡¢£¤¥¦ÂÃñ×Äñ¹ª¹™ª¹ªÄŠÄññgÄñ¹ª¹Vª¹ªÄŠÄññ j*#h©DUmHnHu2j­"h©Dh©D>*B*UmHnHphÿuh©DmHnHuh©D:CJaJmHnHu j0"h©DUmHnHujh©DUmHnHuh©DmHnHu$jh™]h©D0JUmHnHu2j³!h©Dh©D>*B*UmHnHphÿuh™]h©D0JmHnHu!ÃÄÅáâãýþÿ"#$%wxy“”•—˜™æÓź«ºš«º«ÓˆÓÅÅeÓź«ºT«º«Ó j%h©DUmHnHu2j¡$h©Dh©D>*B*UmHnHphÿuh©DmHnHu"h©D5;CJ\aJmHnHu j$$h©DUmHnHujh©DUmHnHuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHu2j§#h©Dh©D>*B*UmHnHphÿu™š›œ¸¹º»êëì
  
+,-.Z[\vwxz{|ñÞÐÇЭÞТ“¢‚“¢“ÞñÞÐÇÐhÞТ“¢W“¢“Þ j'h©DUmHnHu2j•&h©Dh©D>*B*UmHnHphÿu j&h©DUmHnHujh©DUmHnHuh©DmHnHu2j›%h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHuh©D:CJaJmHnHu |}~›œžÂÃÄÞßàâãäåæç+,-GîÛÍÄͪÛ͟ŸŸÛpÛÍÄÍVÛ͟Ÿ2j‰(h©Dh©D>*B*UmHnHphÿuh©D:CJaJmHnHu j (h©DUmHnHujh©DUmHnHuh©DmHnHu2j'h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHu"h©D5;CJ\aJmHnHuGHIKLMNOPlmnoƒ„…Ÿ ¡£¤¥¦§¨ÄÅïàÕà³¥œ¥‚Â¥ÕàÕqàÕàÂ_Â¥œ¥"h©D5;CJ\aJmHnHu j*h©DUmHnHu2jƒ)h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHuh©D:CJaJmHnHu$jh™]h©D0JUmHnHuh©DmHnHujh©DUmHnHu j)h©DUmHnHuÅÆÇóôõ4567ijk…†‡‰Š‹æÓź«ºš«º«Ó‹ÓłÅhÓź«ºW«º«Ó jô+h©DUmHnHu2jw+h©Dh©D>*B*UmHnHphÿuh©DmHnHuh©D:CJaJmHnHu jú*h©DUmHnHujh©DUmHnHuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHu2j}*h©Dh©D>*B*UmHnHphÿu‹ŒŽª«¬­ÊËÌæçèêëìíîï  
:;*B*UmHnHphÿu jî,h©DUmHnHujh©DUmHnHuh©DmHnHu2jq,h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHuh©D6CJ]aJmHnHu \]^_{|}~‘’“­®¯±²³´µ¶ÒÓÔÕ
  &ñÞÐÇЭÞТ“¢‚“¢“ÞpÞÐÇÐVÞТ“¢2j_/h©Dh©D>*B*UmHnHphÿu"h©D5;CJ\aJmHnHu jâ.h©DUmHnHujh©DUmHnHuh©DmHnHu2je.h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHuh©D:CJaJmHnHu&'(*+,-./KLMN‚ƒžŸ¡¢£¤¥¦ÂÃÄÅ  
'ïàÕà³¥œ¥‚Â¥ÕàÕqàÕà³¥œ¥WÂ¥ÕàÕ2jS1h©Dh©D>*B*UmHnHphÿu jÖ0h©DUmHnHu2jY0h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHuh©D:CJaJmHnHu$jh™]h©D0JUmHnHuh©DmHnHujh©DUmHnHu jÜ/h©DUmHnHu '()+,-./0LMNOˆ‰Š¤¥¦¨©ª«¬­ÉÊËÌðñò ïàÕà³¥œ¥‚Â¥ÕàÕqàÕà³¥œ¥WÂ¥ÕàÕ2jG3h©Dh©D>*B*UmHnHphÿu jÊ2h©DUmHnHu2jM2h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHuh©D:CJaJmHnHu$jh™]h©D0JUmHnHuh©DmHnHujh©DUmHnHu jÐ1h©DUmHnHu 
1234_`a{|}€‚ƒ„ ¡ïàÕà°¢™¢¢ÕàÕnàÕàÂ_¢™¢h©D:CJaJmHnHu j¾4h©DUmHnHu2jA4h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu"h©D5;CJ\aJmHnHu$jh™]h©D0JUmHnHuh©DmHnHujh©DUmHnHu jÄ3h©DUmHnHu¡¢£ÌÍÎèéêìíîïðñ
   M N O i j k m n o p q r Ž  æÓź«ºš«º«Ó‹ÓłÅhÓź«ºW«º«Ó‹ÓłŠj²6h©DUmHnHu2j56h©Dh©D>*B*UmHnHphÿuh©DmHnHuh©D:CJaJmHnHu j¸5h©DUmHnHujh©DUmHnHuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHu2j;5h©Dh©D>*B*UmHnHphÿu   ‘ Ù Ú Û õ ö ÷ ù ú û ü ý þ !!!!G!H!I!c!d!e!g!h!i!j!k!l!ˆ!‰!æÓź«ºš«º«Ó‹ÓłÅhÓź«ºW«º«Ó‹ÓłŠj¦8h©DUmHnHu2j)8h©Dh©D>*B*UmHnHphÿuh©DmHnHuh©D:CJaJmHnHu j¬7h©DUmHnHujh©DUmHnHuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHu2j/7h©Dh©D>*B*UmHnHphÿu ‰!Š!‹!¢!£!¤!¾!¿!À!Â!Ã!Ä!Å!Æ!Ç!ã!ä!å!æ!""""" """#"æÓź«ºš«º«ÓˆÓÅÅeÓUº«ºD«º« jš:h©DUmHnHuh™]h©D0JmHnHsH u2j:h©Dh©D>*B*UmHnHphÿuh©DmHnHu"h©D5;CJ\aJmHnHu j 9h©DUmHnHujh©DUmHnHuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHu2j#9h©Dh©D>*B*UmHnHphÿuj!Å!%"’"#‚#à#:$†$ò$`%À%+&œ&ó&L'N'r'æ'(()U){)œ)ùóóóóùóííùóóóóóèãèÞèèèÞègdÁ gdÁ gdÁ 
Æf#

Æf#

Æf#
#"$"%"&"'"C"D"E"F"o"p"q"‹"Œ""""‘"’"“"”"°"±"²"³"å"æ"ç"#######íÞíÐÇЭíТ“¢‚“¢“íÞíÐÇÐhíТ“¢W“¢“íÞ jŽ*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHuh©D:CJaJmHnHu$jh™]h©D0JUmHnHu"# #
#&#'#(#)#_#`#a#{#|#}##€##‚#ƒ#„# #¡#¢#£#½#¾#¿#Ù#Ú#Û#Ý#Þ#ß#íßÖß¼íß±¢±‘¢±¢í‚íßÖßhíß±¢±W¢±¢í j‚>h©DUmHnHu2j>h©Dh©D>*B*UmHnHphÿuh©D:CJaJmHnHu jˆ=h©DUmHnHujh©DUmHnHuh©DmHnHu2j =h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHuß#à#á#â#þ#ÿ#$$$$$3$4$5$7$8$9$:$;$*B*UmHnHphÿuh©D:CJaJmHnHu j|?h©DUmHnHujh©DUmHnHuh©DmHnHu2jÿ>h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHu"h©D5;CJ\aJmHnHu$€$$ƒ$„$…$†$‡$ˆ$¤$¥$¦$§$Ï$Ð$Ñ$ë$ì$í$ï$ð$ñ$ò$ó$ô$%%%%=%>%?%Y%ïàÕತ›¤Â¤ÕàÕpàÕತ›¤V¤ÕàÕ2jíAh©Dh©D>*B*UmHnHphÿu jpAh©DUmHnHu2jó@h©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHuh©D6CJ]aJmHnHu$jh™]h©D0JUmHnHuh©DmHnHujh©DUmHnHu jv@h©DUmHnHu Y%Z%[%]%^%_%`%a%b%~%%€%%%ž%Ÿ%¹%º%»%½%¾%¿%À%Á%Â%Þ%ß%ïàÕà°¢™¢¢ÕàÕnàÕàÂ_¢™¢h©D:CJaJmHnHu jdCh©DUmHnHu2jçBh©Dh©D>*B*UmHnHphÿuh©DmHnHuh™]h©D0JmHnHu"h©D5;CJ\aJmHnHu$jh™]h©D0JUmHnHuh©DmHnHujh©DUmHnHu jjBh©DUmHnHuß%à%á%& &
&$&%&&&(&)&*&+&,&-&I&J&K&L&y&z&{&•&–&—&™&š&›&œ&&ž&º&»&æÓź«ºš«º«Ó‹ÓłÅhÓź«ºW«º«Ó‹ÓłŠjXEh©DUmHnHu2jÛDh©Dh©D>*B*UmHnHphÿuh©DmHnHuh©D:CJaJmHnHu j^Dh©DUmHnHujh©DUmHnHuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHu2jáCh©Dh©D>*B*UmHnHphÿu »&¼&½&Ð&Ñ&Ò&ì&í&î&ð&ñ&ò&ó&ô&õ&'''')'*'+'E'F'G'I'J'K'L'M'æÓź«ºš«º«Ó‹ÓłÅhÓź«ºW«º«Ó‹Ojh÷.ÓU jLGh©DUmHnHu2jÏFh©Dh©D>*B*UmHnHphÿuh©DmHnHuh©D:CJaJmHnHu jRFh©DUmHnHujh©DUmHnHuh©DmHnHuh™]h©D0JmHnHu$jh™]h©D0JUmHnHu2jÕEh©Dh©D>*B*UmHnHphÿuM'N'['\'_'q'r'¡'¢'®'Ç'É'Ê'Ë'ä'å'æ'((q(r(s(ý(þ(ÿ()))))/)1)2)3)S)T){)›)Ò)Ó)û)ü)**H*W*^*üõñíéõíáíÚíÏáÆáíñ¾º¾¯¨¯¯¾º¾º¨º’¾‰¾ñ…ññzv…h3} h3}h3}h;Óhî3¼h
yth|0Jjš'h|Uj¾Hh|h|U h|h|jh|h|Uh|jh|UhæPÄh-
50JjÉGh-
5U h\Qh-
5jh-
5Uhêóh-
5h´ h}/+h-
5hI`š.œ)Ó)ü)I*W*€*²*Æ*õ*+y+Ù+Ú+d,~,Š,²,æ,ì,
-Æ-.&."/m/ô/E0÷ïïï÷ïïïïêêêêååååååêêàêêêêgdÁ !gdÁ gdÁ 
& Fgd 
& Fgd ^*ó*ô*++*+.+D+E+J+`+k+s+v+x+‘+•+®+Ø+Ù+Ú+.,N,d,~,Š,Œ,”,˜,š,¨,ª,¬,®,²,´,¾,À,Â,Ä,Ò,à,â,ä,æ,
-üõüñüéüßüñØñØñüéüñÔñÔñÔɾ³§œ‘œ‘œ‘§œ‰Ø‚~Ø~‚‰Øw hzåhÒUhÃ^³ h&ihÒUh*4hÒU5hzåhÃ^³mH sH hzåhÒUmH sH hzåhÒU5mH sH h*4hÒUmH sH hÒUhÒUmH sH h¤iÚhÒUmH sH h3} h*4hÒUjh;Ó0J#UhÒUh;Ó5hÒU h;Óh;Óh;Ó-
-r-t-€-‚-¶-¸-Æ-.).F.J.M.O.S.T.n.r.u.Î.Ö.}0€0“0˜00±0½0¾0Ê0 1 1 1
1L1M1N1x1y1…1ž1 1¡1¢1õíõ×õíõÓÏÈÏÈϻϴÏÈϭϭϭϭϥϭϚ¥‘¥Ï…~s…j8*h~ÕU h~Õh~Õjh~ÕUh~Õh
yth|0Jj«(h|Ujh|U h|h| h|6]h|5OJQJ\^J h|5\h|hZBf+hZBfhZBf5CJ OJQJ^JaJ mHÜsHÜhZBfmHÜsHÜh*4hZBfmHÜsHÜ+E0¼0½0N1O1x1½1
2S2¤2á233^3¹3434k4ž4Ø4K5q5–5×56I6®6ö6:7úúúúúúúúúúõðúúúðúúúúúðúõúúõúgdÁ gdÁ gdÁ ¢1»1¼1½1¾1Ê1ç1é1ê1ë12 2
2 2222425262Q2R2S2T2`222‚2ƒ2¢2£2¤2¥2±2Æ2È2É2Ê2ß2à2á2ì2í23333^3_3k33‘3’3“3÷ïëïëäëÙï÷ïëïëäëÎï÷ïëïëäëÃï÷ïëïëäë¸ï÷ïë´°´©¥¡¥™¥’¥‡™j!/hýf§U hQÀhýf§jhýf§UhQÀhýf§ h®?hÂ#h|h´j