Précédent Sommaire 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Suivant
Nous nous intéresserons à une application Web qui demande un nombre puis calcule son carré.
Cette application Web sera décomposée en deux pages :
La première page permet la saisie des informations (ici un nombre) :
Il s'agit d'un simple formulaire en langage HTML (balises <form>
et <input>
).
L'action sur le bouton Envoyer provoque la transmission des données du formulaire vers une nouvelle page.
La deuxième page traite les données (ici test de validité, calcul et affichage du carré) :
Cette page nécessite un script en langage serveur (PHP, CGI...).
La transmission des données d'une page à l'autre peut se faire de deux manières :
- Avec la méthode GET, les données sont passées directement dans l'URL. Par exemple :
http://unepageweb.php?Nom=Dubois&Prenom=Camille&Age=18
Ici, trois variables sont transmises : la variable Nom
qui contient l'information Dubois
, etc.
- La méthode POST est plus discrète comme nous le verrons par la suite.
Localisation c:/wamp/www/isn/saisie_nombre_post.html
URL http://localhost/isn/saisie_nombre_post.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Formulaire en HTML5</title>
</head>
<body>
<h2>Calcul du carré</h2>
<form method="post" action="calcul_carre_post.php">
Valeur : <input type="text" name="Nombre" autofocus required><br><br>
<input type="submit" value="Envoyer">
</form>
</body>
</html>
Quand on appuie sur le bouton Envoyer, le texte présent dans le champ de saisie est envoyé à la page calcul_carre_post.php
par la méthode POST (l'information est transmise dans une variable qui se nomme Nombre
).
Localisation c:/wamp/www/isn/calcul_carre_post.php
URL http://localhost/isn/calcul_carre_post.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Traitement du formulaire en PHP</title>
</head>
<body>
<h2>Résultat</h2>
<?php
// on vérifie que la variable existe et que c'est bien un nombre
if (isset($_POST["Nombre"]) && is_numeric($_POST["Nombre"]))
{
$nombre = $_POST["Nombre"];
$resultat = $nombre*$nombre;
print "<p>Le carré de <strong>$nombre</strong> est <strong>$resultat</strong></p>";
}
else
{
print "<p>Valeur invalide !</p>";
}
?>
</body>
</html>
En PHP, le nom des variables commence par le signe dollar $
.
$_POST["Nombre"]
est une variable particulière qui contient la valeur passée au script courant via la méthode POST.
La fonction isset()
détermine si une variable est définie (elle retourne alors TRUE
).
La fonction is_numeric()
détermine si une variable est de type numérique (elle retourne alors TRUE
).
Remarque : il est important de tester la validité des informations provenant d'un formulaire car il s'agit d'une faille de sécurité bien connue.
Dans le formulaire HTML, il faut simplement remplacer :
<form method="post" action="calcul_carre_post.php">
par :
<form method="get" action="calcul_carre_get.php">
Localisation c:/wamp/www/isn/saisie_nombre_get.html
URL http://localhost/isn/saisie_nombre_get.html
Dans le script PHP, il faut simplement remplacer :
$_POST["Nombre"];
par :
$_GET["Nombre"];
$_GET["Nombre"]
est une variable particulière qui contient la valeur passée au script courant via les paramètres d'URL (méthode GET).
Localisation c:/wamp/www/isn/calcul_carre_get.php
URL http://localhost/isn/calcul_carre_get.php
On peut utiliser le script PHP sans passer par le formulaire, ce qui est fort pratique.
Par exemple, pour calculer le carré de 12,348 il suffit de saisir dans la barre d'adresse du navigateur :
http://localhost/isn/calcul_carre_get.php?Nombre=12.348
Par rapport au fichier saisie_nombre_post.html
, il faut remplacer :
<form method="post" action="calcul_carre_post.php">
par :
<form method="post" action="../cgi-bin/calcul_carre.py">
Formulaire à placer ici : c:/wamp/www/isn/saisie_nombre_post2.html
Dans la barre d'adresse de votre navigateur :
http://localhost/isn/saisie_nombre_post2.html
Formulaire à placer ici : c:/wamp/www/isn/saisie_nombre_get2.html
Dans le fichier saisie_nombre_get.html
, il faut modifier par la ligne suivante :
<form method="get" action="../cgi-bin/calcul_carre.py">
Le script CGI-Python est à placer dans ce répertoire particulier : c:/wamp/bin/apache/apache2.2.22/cgi-bin/calcul_carre.py
Cela marche aussi bien pour la méthode POST que pour la méthode GET :
#! c:/Python27/python.exe
# -*- coding: utf-8 -*-
print "Content-Type: text/html\n"
import cgi
print """<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Traitement du formulaire en CGI-Python</title>
</head>
<body>
<h2>Résultat</h2>"""
form = cgi.FieldStorage()
# on vérifie que la variable existe
if form.has_key("Nombre"):
nombre = form["Nombre"].value
try:
# on vérifie que c'est bien un nombre
nombre = float(nombre)
except:
print "<p>Valeur invalide !</p>"
else:
resultat = nombre*nombre
print "<p>Le carré de <strong>",nombre,"</strong> est <strong>",resultat,"</strong></p>"
else:
print "<p>Valeur invalide !</p>"
print """</body>
</html>"""
Exercice 1 Calcul de la racine carrée
1) Par la méthode GET
Ecrire le formulaire HTML (formulaire_racine_carree_get.htm
) et le script de traitement (calcul_racine_carree_get.php
).
2) Même travail avec la méthode POST (formulaire HTML formulaire_racine_carree_post.htm
et script de traitement calcul_racine_carree_post.php
).
Bibliographie : Fonctions mathématiques
Exercice 2 Surface et périmètre d'un rectangle
Avec la méthode POST, écrire le formulaire HTML (formulaire_rectangle.htm
) et le script de traitement (calcul_rectangle.php
).
Le formulaire possèdera deux champs de saisie que vous nommerez Longueur
et Largeur
.
Exercice 3 Résolution de l'équation du second degré : ax² + bx + c = 0
Avec la méthode POST, écrire le formulaire HTML (formulaire_equation.htm
) et le script de traitement (resolution_equation.php
).
Contenu sous licence CC BY-NC-SA 3.0
Fabrice Sincère ; version 1.5.5
Contacter l'auteur