Séance 8 - CGI/Python
Séance précédente (et son corrigé),
séance suivante
Contenu du TP
Au menu de cette séance, on continue les feuilles de style (CV en XHTML+CSS)
et on commence à utiliser Python pour créer une base de données et
communiquer avec depuis des pages web grâce à
CGI.
Le principe est que quand le visiteur visite une page web (d'extension
.cgi,
située dans le dossier
cgi-bin, qui se trouve dans
public_html
dans votre répertoire personnel, avec les droits
rwxr-xr-x
pour ces deux dossiers et le fichier)
c'est en fait un programme Python qui s'exécute et affiche le contenu de la page web.
Pour afficher, il faut donc utiliser la commande
print et le triple guillemet
droit pour qu'elle soit "
multiligne". De plus, il faut préciser que le
contenu est de type page web en affichant
"Content-type : text/html",
qui doit être suivi d'un saut de ligne.
Voilà par exemple comment afficher une page web
Hello World :
#!/usr/bin/env python
import cgi
print """Content-type: text/html
<html>
<body>
Hello World!
</body>
</html>"""
Pour récupérer les clés d'un formulaire HTML, il faut utiliser la librairie
cgi et la fonction
cgi.FieldStorage() qui renvoie un résultat
de type dictionnaire :
import cgi
params={}
for clef in cgi.FieldStorage().keys() :
params[clef] = cgi.FieldStorage()[clef].value
L'énoncé du TP se trouve toujours
ici
et le cours
là (notamment
son chapitre 5 pour le CSS).
Vous remarquez que l'on n'utilise pas le système PHP+MySql qui semble
plus classique pour gérer une base de données que de faire interagir
Python avec un fichier
.csv (un fichier texte, avec sur chaque
ligne, un élément de la base de données, dont les champs sont
séparés par des point-virgules). Cela nous permettra d'éviter
l'attaque
"Exploit of a mom" :
Pour quelques bons principes (sérieux) de sécurité, allez voir cette
liste
des 25 erreurs de programmation les plus dangereuses.
Corrigé
Pas de corrigé pour cette séance : demandez-moi de jeter un oeil à votre solution !