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