TP n°3 en PDF
Transcription
TP n°3 en PDF
Page 1 sur 9 Programmation Web / TP n°3 LSI2 décembre 2007 LSI2 – Programmation Web – TP n°3 du 10 décembre 2007 Premiers éléments de corrigé du TP n°2 Première page Web 1/ Créer une première page Web qui affiche un message de bienvenue avec la date et l’heure en PHP Remarques : - Les pages PHP doivent se trouver sous la racine du serveur (dans votre htdocs) - Pour visualiser les pages, il est nécessaire d’ouvrir le navigateur à la page http://tristan:<NPort>/<nompage>.php o Où est Nport est le numéro du port que vous avez choisi pour le serveur et <nompage>.php le nom de la page que vous souhaitez visualiser - Par exemple, si la page est htdocs/repertoire1/mapage.php et si votre serveur tourne sur le port 3579, vous y accédez par http://tristan :3579/repertoire1/mapage.php - Les pages PHP sont des fichiers texte contenant du contenu html et du code PHP - Le code PHP est encadré dans < ?PHP …………………………. ?> - Pour qu’une page PHP soit interprétée, il faut qu’elle se termine par l’extension .php. Cf fichier httpd.conf <IfModule mod_mime.c> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </IfModule> Ce n’est pas nécessaire de redémarrer le serveur pour visualiser une page modifiée (il suffit de la rafraîchir en cliquant sur Reload) 2/ Lire la documentation concernant la fonction phpinfo dans le manuel de PHP Page 2 sur 9 Programmation Web / TP n°3 LSI2 décembre 2007 On ne saurait que trop vous recommander de lire la documentation de référence des technologies utilisées en TP. 3/ Créer une page Web qui affiche l’ensemble des informations concernant le serveur Apache + PHP Redirection En utilisant le mod_alias de Apache La redirection doit être placée dans un fichier . htaccess dans le répertoire que l’on souhaite rediriger. Pour que cela fonctionne, il est nécessaire de retoucher le fichier httpd.conf. Cf : # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None Si on le souhaite, on peut également retoucher le nom du fichier .htaccess pour le remplacer par un autre nom (cf. httpd.conf) Attention, la redirection réalise un remplacement de la chaine de caractère se trouvant dans la première partie de l’instruction par la chaîne de caractères se trouvant dans la deuxième partie de l’instruction à partir du document root du serveur. Par exemple, si l’on écrit dans le .htaccess l’instruction : Redirect permanent /isitix http://localhost/index.html Elle transforme l’URL http://localhost/isitix/ en http://localhost// Pour commencer, il vaut donc mieux indiquer un chemin depuis le document root à gauche et un chemin complet à droite En utilisant les fonctions PHP La PECL n’est pas installée sur votre serveur. 1 : avant d’utiliser une fonction, regarder à quelle librairie elle appartient et quels sont ses prérequis. 2 : penser à vérifier qu’une librairie est installée avant de chercher à l’utiliser. Page 3 sur 9 Programmation Web / TP n°3 LSI2 décembre 2007 3 : lorsque vous rencontrez une erreur du type « fonction non trouvée », c’est probablement que vous utilisez une fonction qui n’existe pas ou que la librairie correspondante n’est pas installée sur votre serveur. 4 : si vous souhaitez voir les messages d’erreur (qui sont supprimés par défaut pour des questions de sécurité), il faut activer le mode debug dans Apache : Cf. fichier httpd.conf # # LogLevel: Control the number of messages logged to the error.log. # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. # LogLevel warn Et dans le php.ini ; Print out errors (as a part of the output). For production web sites, ; you're strongly encouraged to turn this feature off, and use error logging ; instead (see below). Keeping display_errors enabled on a production web site ; may reveal security information to end users, such as file paths on your Web ; server, your database schema or other information. ; MODIF MD PASSAGE DU DISPLAY ERROR A ON display_errors = On Vous pouvez également paramétrer vos messages d’erreur en retouchant, dans httpd.conf # # Customizable error responses come in three flavors: # 1) plain text 2) local redirects 3) external redirects # # Some examples: #ErrorDocument 500 "The server made a boo boo." #ErrorDocument 404 /missing.html #ErrorDocument 404 "/cgi-bin/missing_handler.pl" #ErrorDocument 402 http://www.example.com/subscription_info.html # Avant de retoucher ces fichiers, pensez à sauvegarder leur version d’origine ! La solution de l’exercice tient en une ligne qui permet de rediriger une page sur une autre. Vous pourriez mixer 1 et 2 pour créer un mécanisme de redirection à deux étages : 1/ Rediriger vers un script PHP commune 2/ Ajouter de « l’intelligence » au script PHP pour qu’il réagisse en fonction de l’appelant Page 4 sur 9 Programmation Web / TP n°3 LSI2 décembre 2007 En utilisant Javascript Comme javascript sur un browser est construit sur un modèle de programmation évènementielle, vous pouvez ensuite choisir l’évènement déclenchant la redirection. Ici, il s’agit de la solution la plus basique, qui conduit à rediriger au moment du chargement de la page, chargement qui implique l’exécution du code javascript entre les balises <script…. Mais il est possible d’ajouter un timer ou des conditions sur le navigateur de l’utilisateur, etc. Cookies Cookies sur un même serveur La suggestion portant sur le nom de la variables du cookies (nom de variable = login) était surtout utile pour la question suivante. Page 5 sur 9 Programmation Web / TP n°3 LSI2 décembre 2007 Cookies sur un même domaine Vous pouvez généraliser cette solution en utilisant un itérateur sur le tableau associatif des cookies qui vous permettent d’afficher le nombre de passages sur n’importe quelle page du domaine. Vous pouvez également afficher le contenu de ce tableau en utilisant la fonction print_r. Page 6 sur 9 Programmation Web / TP n°3 LSI2 décembre 2007 Cette expérience vous permet de constater que les cookies ne constituent pas une méthode sure d’échange avec le client. Il faut donc les utiliser pour ce pour quoi ils sont faits. Vous trouverez des compléments à ce sujet dans la copie d’article jointe. Problème de « header sent » Les cookies sont transmis dans le header http. Dès que l’on ouvre une page Web (avec une balise html ou du texte) le header est envoyé. Une fois que le header est envoyé, on ne peut plus écrire dedans, d’où l’erreur. Il faut donc valoriser tous les paramètres de header http (cookies, session, etc) avant d’envoyer la page. L’autre solution consiste à bufferiser le header pour ne l’envoyer qu’une fois que la page est formée (ou en envoyant une commande de flush). Pour le faire, il faut utiliser la fonction ob_start qui démarre la bufferisation. Suite du corrigé au prochain épisode… Page 7 sur 9 Programmation Web / TP n°3 LSI2 décembre 2007 Sujet du TP n°3 du 10 décembre 2007 PHP : fin des travaux Finir les exercices sur PHP du TP n°2 (bases de données et sessions). Préalable Redémarrer le serveur Tomcat et se connecter sur le port 8080 pour s’assurer qu’il fonctionne bien. Première page JSP 1/ Ecrire une page JSP affichant l’heure en complétant la page suivante que vous appellerez, par exemple, heure.jsp : <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@page import="java.util.Date" %> <html> <head><title>Une première page JSP</title></head> <body> <% // ECRIRE LE CODE JAVA ICI %> <p>Date du jour : <%=tt%></p> </body> </html> 2/ Insérer cette page dans une arborescence type pour une application Web en java : Niveau 1 : MonRepertoire (ou nom de l’application) Dans MonRepertoire : mettre les fichiers .jsp 3/ Tester deux méthodes déploiement de cet exemple : Méthode 1 : copier le répertoire MonRepertoire sous webapps dans votre répertoire d’installation de Tomcat puis accéder à la page jsp en saisissant http://localhost:8080/MonRepertoire/heure.jsp Méthode 2 : Supprimer le répertoire de l’arborescence webapps Créer un fichier war Lire l’aide en ligne de la commande jar Créer un fichier war à partir du répertoire MonRepertoire Déployer ce fichier war en le déposant dans le répertoire webapps Méthode 3 Supprimer le fichier war de l’arborescence webapps Se connecter au manager Déployer le fichier war à partir du manager (dernier bouton tout en bas de la page du manager) Page 8 sur 9 Programmation Web / TP n°3 LSI2 décembre 2007 Vous avez ainsi vu trois méthodes de déploiement d’une appliation Web sur le serveur tomcat. Premier servlet A partir du répertoire d’application créé à la question précédente, nous allons à présent créer et installer un premier servlet. A/ Lire la documentation de référence de java.sun.com portant sur : - les descripteurs de déploiement, web.xml - l’organisation des répertoires d’une application Web en java - le schéma présenté dans le cours à la planche 95 B/ Revoir l’organisation de vos répertoires 1/ Créer un répertoire « chapeau » que vous appellerez, par exemple, dvpttomcat 2/ Créer un sous-répertoire WEB-INF dans MonRepertoire 3/ Créer un sous-répertoire classes dans WEB-INF 4/ Créer un sous-répertoire src dans dvpttomcat C/ Ecrire la classe de la servlet qui affiche l’heure On peut s’inspirer de l’exemple ci-dessous : D/ Créer un descripteur de déploiement web.xml que vous déposerez dans le répertoire WEBINF On pourra s’aider de l’exemple ci-dessous où la servlet est accessible à l’URL http://localhost:8088/ApprentiWeb/helloservlet Page 9 sur 9 Programmation Web / TP n°3 LSI2 décembre 2007 Compiler le fichier servlet .java => .class Déplacer le .class vers le répertoire .classes sous WEB-INF Créer un .war à partir du répertoire chapeau Déployer le .war à partir de la console d’administration Tomcat Tester l’ensemble