IFT 1147, Hiver 2005 Dominik Gehl Programmation serveur Web avec PHP
EXAMEN INTRA
Lundi 23 f´evrier 2005 Dur´ee: 120 minutes
Directives:
• L’examen comporte 9 pages.
• L’examen est `a livre ouvert: toute documentation ainsi que la calculatrice non programmable sont autoris´ees
• Toute page HTML (PHP) doit ˆetre conforme `a la sp´ecification HTML 4.01.
• R´epondez sur le questionnaire.
1. /18
2. /12
3. /10
4. /14
5. /21
6. /25
Total: /100
1. (18 points) Dans chacun des six cas suivants, r´epondez de la mani`ere la plus concise possible.
Chaque bonne r´eponse vaut 3 points.
(a) Nommez la particularit´e principale d’un langage de programmationcˆot´e serveur.
(b) Qu’est-ce qu’une classe CSS ?
(c) Nommez une commande PHP qui vous permet d’afficher rapidement le contenu d’une vari- able, peu importe son type.
(d) Qu’est-ce qu’un tableau associatif ?
(e) Est-ce que le passage de param`etres `a une fonction se fait en PHP par d´efaut, par valeur ou par r´ef´erence ?
(f) Qu’est-ce qu’un test unitaire (unit test)
2
2. (12 points) Dans chacun des cas suivants, indiquez si vous devriez transmettre les param`etres indiqu´es par GET ou POST et pourquoi.
(a) login et mot de passe d’un usager
(b) identifiant d’un livre dont vous allez afficher la description d´etaill´ee
(c) confirmation d’un achat
3. (10 points) Ecrivez une fonction´ getListe($tab, $ordonnee)qui retourne, dans une chaˆıne de caract`eres, une liste HTML des entr´ees du tableau index´e $tab. Le param`etre bool´een
$ordonnee indique si la liste HTML devra ˆetre une liste ordonn´ee ou non ordonn´ee.
4. (14 points) Requˆetes SQL
Imaginez la base de donn´ees d’une biblioth`eque ayant les tables suivantes:
• Auteur
auteurID entier, auto number primaire
nom caract`eres multiple
prenom caract`eres
• Livre
livreID entier, auto number primaire titre caract`eres
prixUnite entier
• LivreAuteur
livreID entier primaire auteurID entier primaire
(a) (6 points) Quel est l’avantage d’avoir cr´e´e une table LivreAuteur, au lieu d’un champ auteurIDdans le tableau Livre?
(b) (4 points) Quelle commande SQL permet d’obtenir la liste des auteurs en ordre al- phab´etique ?
(c) (4 points)Quelle commande SQL permet d’obtenir la liste des livres dont le titre contient le mot noir ?
4
5. (21 points)Vous devez cr´eer une classeHTML_Pagequi vous permettra de simplifier grandement la g´en´eration de vos documents HTML.
L’ex´ecution du script
<?php
$page = new HTML_Page();
$page->setTitle("Exemple d’utilisation");
$page->setBodyContent("<p>Voici un exemple d’utilisation</p>");
$page->addBodyContent("<p>encore d’autre contenu</p>");
$page->display();
?>
devra envoyer au navigateur le code HTML suivant
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Exemple d’utilisation</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p>Voici un exemple d’utilisation</p>
<p>encore d’autre contenu</p>
</body>
</html>
6
6. (25 points) Vous devez cr´eer un script PHP permettant au visiteur de s’inscrire `a votre site.
La pagenouvelUsager.phpdoit contenir un formulaire avec les champs appropri´es afin de saisir un login, un mot de passe et une adresse de courriel. Lorsque soumis, vous devez v´erifier (dans l’ordre):
• que le login comporte entre 6 et 10 caract`eres (lettres entre a et z en minuscule ou en majuscule, ainsi que des chiffres) et commence n´ecessairement par une lettre.
• que le mot de passe comporte au moins 6 caract`eres tels que d´efinis ci-haut, dont au moins un chiffre, au moins une minuscule et au moins une majuscule.
• que l’adresse de courriel comporte le caract`ere@et que@n’en est ni le premier, ni le dernier caract`ere.
Lorsqu’une de ces conditions n’est pas satisfaite, vous devez r´eafficher le formulaire en indiquant clairement `a l’usager les champs causant probl`eme. Les champs contenant des valeurs valides doivent ˆetre re-remplis.
Lorsque toutes les conditions indiqu´ees ci-haut sont satisfaites, enregistrez les informations en faisant appel `aenregistrerNouvelUsager($login, $mdp, $courriel)(vous n’avez pas `a pro- grammer le contenu de cette fonction), et souhaitez la bienvenue `a votre nouvel usager.
8