Envoyez-moi par mail :
chmod a+x ...
).On vous demande de réaliser un site web sur un thème de votre choix.
Ce thème peut être culturel (groupe de musique, livres, émission de télévision, les films d'un réalisateur), scientifique, ludique, etc. Bref, vous avez le choix du thème
Le site devra être écrit en HTML 4.0, en suivant la DTD strict ou transitional au choix (avec une petite préférence pour la strict). Vous devrez utiliser une feuille de style pour gérer l'aspect général du site. Toutes les pages du site devront "passer" au validator, et comporter l'icone correspondante en bas de page.
Vous pourrez utiliser des tableaux ou des frames, au choix, avec une préférence pour les tableaux (allez voir les exemples).
Les CGI pourront être écrits en Perl, Shell, ou C.
Inspirez-vous des exemples du TD sur les CGI pour compléter les exemples ci-dessous...
N'oubliez par les commandes magiques "xterm -e tail -f ..." (voir sujet du TD), elles vous aideront à trouver vos erreurs
Vous pouvez utiliser des feuilles de style, il suffit de mettre
la balise <link rel="stylesheet"...
dans les
en-tetes html écrits par le CGI. Fautes attention que le cgi
s'exécute dans "/cgi-bin", et il faudra donc donner le chemin
complet de la feuille de style sur le serveur (par ex.
"/~utilisateur/style.css"). Si votre feuille de style fait appel à
d'autres urls (fond de page...), mettez également le chemin
complet.
Les scripts shell doivent toujours commencer par la
ligne magique #!/bin/sh
Sur le thème choisi, le site devra proposer un vote : par exemple, on pourra voter de 0 à 10 pour chacun des films d'un réalisateur. Une page permettra d'afficher le nombre de votes pour chaque film et la moyenne des votes. Ces votes seront gérés par la méthode de votre choix (le plus simple est sans doute un script CGI).
Il faut faire un formulaire pour le vote, et deux scripts CGI : Un pour le vote et un pour visualiser le résultat.
#!/bin/sh eval `...` ... # ajoute la note sur une ligne à la fin du fichier votes.txt echo $FORM_note >> votes.txt # ajoute l'adresse de la machine distante à la fin du fichier votants.txt echo $REMOTE_ADDR >> votants.txt ... echo '<a href="/cgi-bin/resultats.cgi">visualiser les résultats</a>' ...
#!/bin/sh ... # compte le nombre de lignes contenant la note 01 # attention: apostrophes à l'envers total1=`fgrep 01 votes.txt|wc -l` ... echo "$total1 personnes ont donné la note 01" ...La meme chose avec awk est plus puissante, et calcule en plus la moyenne
#!/bin/sh ... awk '{ sum[$1] ++;\ total += $1;\ if ($1 > max)\ max = $1\ }\ END { for (i = 1; i <= max; i++) {\ printf("%g personnes ont donné la note %d<br>\n", sum[i], i)\ }\ printf("moyenne = %g<br>\n",total/NR)\ }' votes.txtOn peut aussi utiliser le programme awk pour calculer seulement la moyenne:
# calcul de la moyenne awk '{total += $1} END {printf("moyenne = %g<br>\n",total/NR)}' votes.txt
Faites en sorte qu'on n'aie droit qu'a un vote par machine.
Ajoutez plusieurs catégories de vote.
Le site devra également comporter un "livre d'or" sur lequel les visiteurs pourront laisser leurs commentaires
#!/bin/sh eval `...` ... # ajoute la note sur une ligne à la fin du fichier livredor.html echo "<hr><p>$FORM_message" >> /u/disque/utilisateur/www/livredor.html
Le meme script sert à consulter le livre d'or, à écrire le formulaire d'ajout de message, et à y ajouter un message.
Le script comprend donc 4 parties, à vous de trouver dans quel ordre les mettre ! Je les donne volontairement dans le désordre.
open(IN,"/u/mstgg1/.../www/livredor.txt"); while(<IN>) { print; } close IN;
if (param()) { # ouvre le fichier pour écrire à la fin open(OUT,">>/u/mstgg1/.../www/livredor.txt"); # ajoute le commantaire print OUT "Commentaire de :", em(param('nom')), br param('commentaire'),br; close OUT; }
Dans la réalité, c'est beaucoup plus compliqué : deux personnes peuvent vouloir entrer un commentaire exactement en meme temps, et il faut utiliser un fichier-verrou. Allez-voir les exemples du cours pour voir comment faire
Une zone privée du site, gérée par un mot de passe, vous permettra d'accéder aux "logs" du serveur et des scripts CGI.
Ceci nécessite de configurer le serveur (fichier ~/apache/conf/httpd.conf)
Last modified: Thu Feb 14 17:10:25 MET 2002