PHP TD2: Les bases (2)

Paramètres GET et POST

Créez un formulaire qui affichera la somme de deux nombres, en GET puis en POST.

Il est possible d'obtenir le type de la méthode utilisée (GET ou POST) dans le tableau $_SERVER, pour vérifier par exemple si un formulaire POST a été soumis. Essayez var_dump($_SERVER) pour explorer les champs de ce tableau.

Formulaire et vérifications

Lisez et testez le code suivant :

<?php

function traitement($prenom)
{
    echo 'Vous vous nommez ' . htmlspecialchars($prenom);
    echo '<hr/>';
}

?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf8" />
        <title>Formulaire</title>
    </head>
    <body>
        <h1>Formulaire</h1>

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{

    if (isset($_POST['prenom'])) 
    {
        // Le formulaire est valide et bien rempli, appel du traitement
        // sur les données
        traitement($_POST['prenom']);
    }
}
?>

<form method="post">
    Votre prénom&nbsp;:
    <input type="text" name="prenom" /><br />
    <hr />
    <input type="submit" value="Envoyer" />
</form>
</body>
</html>

1. Compréhension

A) Comment est detecté le fait que le formulaire a été posté ?

B) A quoi correspond ce test vis à vis du protocole HTTP ?

C) Pourquoi la fonction htmlspecialchars() est utilisée ici ?

2. Ajout d'un champ

Ajoutez un champ nom au formulaire. Lorsque le formulaire est soumis, si les deux champs sont remplis, la page devra indiquer: "Vous vous nommez [Prénom] [Nom]".

3. Un peu de validation

Ajoutez maintenant un champ email. N'oubliez surtout pas comment fonctionne le protocole HTTP, même en utilisant le type de champ HTML5 email, le client pourra toujours transmettre des données arbitraires via une requête POST. C'est pour cela qu'il faut impérativement vérifier coté serveur que l'adresse fournie est bien formée, vous pourrez utiliser la fonction PHP filter_var().

4. Menu déroulant

Ajoutez un champs "Genre" sous forme de menu déroulant (Homme, Femme). Le genre sera affiché dans le message après traitement.

5. Cases à cocher

Ajoutez des cases à cocher permettant à l'utilisateur de séléctionner les langages de programmation qu'il connaît. Par exemple:

Les langages seront affichés dans le message après traitement.

Si vous utilisez languages[] dans l'attribut name des cases à cocher, vous obtiendrez un tableau, bien plus pratique que de créer une case avec un nom différent par langage!

6. Pré-remplissage

Si l'utilisateur veut modifier ses choix (par exemple si il a fait une erreur, ou que le serveur déclenche une erreur de validation parce que son e-mail n'est pas correct etc.), constatez que le formulaire redevient vide après un envoi.

Faites en sorte qu'il soit re-rempli avec les choix de l'utilisateur.

Calendrier

Créez une page qui affiche le calendrier du mois en construisant un tableau HTML à l'aide de code PHP.

Vous pourrez vous aider de la fonction date et mktime.

Faites en sorte que l'on puisse naviguer entre les mois et les années.