ETUDE D'UN FORMULAIRE UTILISANT LA METHODE POST

Le formulaire est créé dans un fichier et les réponses sont utilisées dans un autre fichier cible. Les codes des deux fichiers sont présentés à gauche. A droite, nous pouvons visualiser l'effet produit.

LE CODE SON EFFET
<!DOCTYPE html>
<html>
    <head>
        <title>formulaire PHP</title>
        <meta charset="utf-8" />
        <link href="monFichierCSS.css" type="text/css" rel="stylesheet" media="screen">
    </head>

    <body>

<h1> ETUDE D UN FORMULAIRE UTILISANT LA METHODE POST"</h1>


        <form action="cible.php" method="post">
        <p>Je souhaite attirer votre attention sur la toute première ligne de ce code. 
        Il y a deux attributs très importants à connaître pour la balise form : la méthode (method) et la cible (action).
        Il est impératif que vous compreniez à quoi ils servent.
        Il faut savoir qu'il existe plusieurs méthodes pour envoyer les données du formulaire. Vous pouvez en employer deux.
        <ul>
            <li>GET : les données transiteront par l'URL, cf les premières notions de php.
            On pourra les récupérer grâce à l'array $_GET. Cette méthode est assez peu utilisée car on ne peut pas
            envoyer beaucoup d'informations dans l'URL (Ne pas dépasser 256 caractères).</li><br>

           <li> POST : les données ne transiteront pas par l'URL, l'utilisateur ne les verra donc pas
           passer dans la barre d'adresse. Cette méthode permet d'envoyer autant de données que l'on veut,
           ce qui fait qu'on la privilégie le plus souvent. Néanmoins, les données ne sont pas plus sécurisées qu'avec la méthode GET et 
           il faudra toujours vérifier si tous les paramètres sont bien présents et valides.
           </li>
        </ul></p>
        <p>Veuillez saisir votre prénom :
            <input type="text" name="prenom" />
            <input type="submit" value="Valider" /><br><br>

            <textarea name="message" rows="8" cols="45">
            Votre message ici.
            </textarea><br><br>

            Liste déroulante:<br>
            Quel langage est exécuté du coté serveur?
            <select name="choix">
                <option value="choix1">Javascript</option>
                <option value="choix2">CSS</option>
                <option value="choix3">HTML</option>
                <option value="choix4">PHP</option>
                <!--<option value="choix3" selected="selected">Choix 3</option><!-choix par défaut>-->
            </select><br>
            <input type="submit" value="Valider" /><br>
            <br><br><br><br>

            Case à cocher<br><br>
            <input type="checkbox" name="case1" id="case" /> <label for="case1">Si vous êtes en première, cocher la case, sinon décochez-la.</label><br><br>
            Vous suivez la spé NSI <input type="checkbox" name="case2" checked="checked" /><!--Case cochée par défaut-->
            <br><br>

            Les boutons d'options, type='radio'<br><br>
            Sauriez-vous faire maintenant un tel formulaire? ?<br><br>
            <input type="radio" name="question" value="oui" id="oui" checked="checked" /> <label for="oui">Oui</label>
            <input type="radio" name="question" value="non" id="non" /> <label for="non">Non</label>
            <br>
            <input type="submit" value="Valider" /><br><br>
        </p>
        </form>

    </body>
</html>

Je souhaite attirer votre attention sur la toute première ligne de ce code. Il y a deux attributs très importants à connaître pour la balise form : la méthode (method) et la cible (action). Il est impératif que vous compreniez à quoi ils servent. Il faut savoir qu'il existe plusieurs méthodes pour envoyer les données du formulaire. Vous pouvez en employer deux.

  • GET : les données transiteront par l'URL, cf les premières notions de php. On pourra les récupérer grâce à l'array $_GET. Cette méthode est assez peu utilisée car on ne peut pas envoyer beaucoup d'informations dans l'URL (Ne pas dépasser 256 caractères).

  • POST : les données ne transiteront pas par l'URL, l'utilisateur ne les verra donc pas passer dans la barre d'adresse. Cette méthode permet d'envoyer autant de données que l'on veut, ce qui fait qu'on la privilégie le plus souvent. Néanmoins, les données ne sont pas plus sécurisées qu'avec la méthode GET et il faudra toujours vérifier si tous les paramètres sont bien présents et valides.

Veuillez saisir votre prénom :



Liste déroulante:
Quel langage est exécuté du coté serveur?





Case à cocher



Vous suivez la spé NSI

Les boutons d'options, type='radio'

Sauriez-vous faire maintenant un tel formulaire? ?




<!DOCTYPE html>
<html>
    <head>
        <title>Cible du formulaire PHP</title>
        <meta charset="utf-8" />
        <link href="monFichierCSS.css" type="text/css" rel="stylesheet" media="screen">
    </head>

    <body>

        <p>Bonjour !</p>
        <p>Tu t'appelles <?php if (isset($_POST['prenom'])){echo htmlspecialchars($_POST['prenom']);} ?> !</p>
        <!--htmlspecialchars() permet d'éviter que l'utilisateur transmette du code html-->
        <p>Si tu veux changer de prénom, <a href="formulaire.php">clique ici</a> pour revenir à la page formulaire.php.</p>
        <br>

        <?php
        if (isset($_POST['message'])){echo htmlspecialchars($_POST['message']);}
        ?>
        <br>

        <!--récupération et test de la réponse données dans le QCM-->
        <?php if ($_POST['choix']=='choix4')
        {echo 'Bravo,';}
            else
        {echo "Non, c'est le PHP qui est exécuté côté serveur!";}
        ?>
        <br>
        <?php if (isset($_POST['case1']))  //si la case est cochée
        {echo "La première, c'est super!";}
            else
        {echo "Ce n'est pas grave !";}
        ?>
        <br>
        <?php if (isset($_POST['case2']))
        {echo "NSI, c'est inouï!";}
            else
        {echo "Dommage!";}
        ?>
        <br>

        <?php if ($_POST['question']=='oui')
        {echo "Tu peux donc commencer!";}
            else
        {echo "Edudie encore ce document!";}
        ?>
    </body>
</html>
Cible du formulaire PHP

Bonjour !

Tu t'appelles !

Si tu veux changer de prénom, clique ici pour revenir à la page formulaire.php.



Non, c'est le PHP qui est exécuté côté serveur!
Ce n'est pas grave !
Dommage!
Edudie encore ce document!

Exercice

Dans cette page on voit deux messages d'erreurs, indiquez la raison de ces erreurs et proposez une correction.