Les objectifs de ce cours sont :

Ecrire un formulaire en HTML

Un formulaire HTML est indiqué par la balise <form> et contient notamment des champs de saisie appelés input de différents types ou select.

Les attributs value seront des variables utilisées en JavaScript ou côté serveur.

Intéraction à base d'input

<form>
    <p>Login : <input type="text" name="login"/></p>
    <p>Mot de passe : <input type="password" name="pass"/></p>
    <p>Catégorie :
    Humain <input type="radio" name="cat" value="hu"/>
    Extraterrestre <input type="radio" name="cat" value="ex"/>
    </p>
    <p>Pour le petit-déjeuner : </br>
    Lait <input type="checkbox" name="lait" value="lait"/>
    Beurre <input type="checkbox" name="beurre" value="beurre"/>
    Fromage <input type="checkbox" name="fromage" value="fromage"/>
    </p>
    <p><input type="button" value="Bouton"></p>
    <p><input type="submit" value="Envoyer"></p>
</form>
    

Login :

Mot de passe :

Catégorie : Humain Extraterrestre

Pour le petit-déjeuner :
Lait Beurre Fromage

Il existe d'autres type : tel, search, url, email, number, range, color ou list.

Si vous voulez découvrir ces autres types, vous pouvez par exemple consulter chez vous le site suivant : lien direct.

  1. Pour que les boutons soient mutuellement exclusifs, ils doivent avoir le même attribut name : dans l'exemple précédent : "cat".

  2. le terme boutons radio vient des anciennes radio. On pouvait mémoriser les postes de radio et les récupérer à l'aide de gros boutons munis de ressorts. Lorsqu'on enfonçait un bouton, un mécanisme ressortait le bouton qui avait été enfoncé auparavant : les boutons étaient ainsi mutuellement exclusifs. image d'un vieux poste radio avec boutons de mémorisation.

    source : https://st2.depositphotos.com

  3. Plutôt que d'utiliser une balise input de type bouton :

    <p><input type="button" value="Bouton"></p>
                        
    Il existe une balise qui permet de faire la même chose :
    <button>
    Le code suivant peut remplacer le code de la première ligne du 3. de la remarque :
    <p><button type="button">Bouton</button></p>
    Le rendu visuel est identique :

Intéraction à base de select

Un autre élément important interaction est la liste déroulante <select>.

<form>
    <select name="menu">
        <option value="volaille">Poulets frites</option>
        <option value="veggie">Riz et lentilles</option>
        <option value="poisson">Anchoix marinés</option>
        </select>
</form>
                        

Le select autorise un seul choix par défaut mais peut être précisé multiple pour permettre de valider plusieurs choix simultanés. Dans ce cas les valeurs séléctionnées sont traitées comme un tableau.

<form>
    <select name="menu[]" multiple>
        <option value="volaille">Poulets frites</option>
        <option value="veggie">Riz et lentilles</option>
        <option value="poisson">Anchoix marinés</option>
        </select>
</form>
                        

Ce dernier formulaire avec sélecteur n'est pas élégant, mais vous permet de sélectionner plusieurs choix en cliquant tout en laissant appuyée la touche "ctrl".

De plus, il est possible de sélectionner par défaut un (ou plusieurs éléments) en ajoutant l'attribut selected à la balise <option>.

<form>
    <select name="menu[]" multiple>
        <option value="volaille">Poulets frites</option>
        <option value="veggie" selected>Riz et lentilles</option>
        <option value="poisson">Anchoix marinés</option>
        </select>
</form>
                        

Réaliser le visuel du formulaire suivant :

Pour cela :

Correction de l'exercice 1.

Formulaire et JavaScript : on reste sur la même page web

Vous savez maintenant mettre en forme des formulaires.

Dans la suite nous allons apprendre à récupérer les valeurs d'un formulaire et en faire l'usage au niveau client.

Ecrire le code suivant et expliquer ce qu'il fait.

<form>
<p> Choix d'une nationalité :</p>
    <select id="choix" name="lang" onchange="selection()">
        <option value="ras">Choisir sa nationalité</option>
        <option value="fr">Français</option>
        <option value="zh">Chinois</option>
        <option value="it">Italien</option>
    </select>
<p> Vous avez choisi comme nationalité :<span id="nat">  </span> </p>
</form>

Dans le script précédent, chaque changement d' option lance la fonction selection() il reste à l'écrire.

Pour l'exercice suivant vous avez besoin de comprendre trois nouvelles instructions :

voilà le script d'une fonction écrite en javascript :

function selection() {
        const selecteur = document.getElementById('choix');
        const monChoix = selecteur[selecteur.selectedIndex];
        console.log(monChoix.value +' '+ monChoix.text);
        document.getElementById('nat').innerHTML = monChoix.text;
    }
       
  1. Intégrer au code de l'exercice 2 ci-dessus ce script, soit directement, soit avec un lien vers un fichier javascript.

  2. Relancer le code ainsi augmenté de l'exercice 2. Que remarquez-vous ?

  3. Commenter chaque ligne de cette fonction écrite en JavaScript.

    Utiliser la console de votre navigateur afin de voir l'effet d'une des lignes.

correction de l'exercice 3

Ecrire un formulaire qui demande votre âge et qui indique dans la même page si vous êtes majeur ou mineur.

Correction de l'exercice 4.

On donne le code suivant :

<form>
    <fieldset>
        <legend>Veuillez sélectionner vos spécialités l'année prochaine :
        </legend>
        <div>
            <input type="checkbox" id="nsi" name="interest" value="nsi">
            <label for="nsi">NSI</label>
        </div>
        <div>
            <input type="checkbox" id="ma" name="interest" value="ma">
            <label for="ma">Maths</label>
        </div>
        <div>
            <input type="checkbox" id="svt" name="interest" value="svt">
            <label for="svt">SVT</label>
        </div>
    </fieldset>
</form>
    

En vous inspirant de l'exercice précédent, faire un formulaire qui demande quelles spécialités vous allez conserver l'année prochaine

Vous ferez une question pour la première

La réponse sera affichée dans la page HTML.

Si la réponse contient NSI, la page HTML doit afficher : "Bravo, bon choix !".

Correction de l'exercice 5

Pour passer à interaction client/server nous devons comprendre et se familiariser avec le protocole HTTP.

Interactions client-serveur - HTTP

Schéma client-serveur

Le schéma client-serveur désigne un mode de communication entre programmes : l'un qualifié de client, envoie des requêtes; l'autre, le serveur, y répond. Dans le cas du Web, le client est le navigateur et le protocole utilisé est HTTP.

Le protocole HTTP

HTTP

Le protocole HTTP( Hyper Text Transfer Protocol ) est un protocole du Web d'échange entre un client et un serveur Web.

Quand vous allez sur votre site préféré, vous utilisez le protocole HTTP sans vous en rendre compte.

Lancez le logiciel Wire Shark.

Ce logiciel vous permet d'observer tous les échanges qui transite sur votre réseau.

L'objectif est de comprendre ce que cela raconte dans les grandes lignes.

Les différentes méthodes applicables au protocole HTTP sont GET, HEAD, POST, OPTIONS, CONNECT, TRACE, PUT, PATCH, DELETE

Nous ne détaillerons pas les autres méthodes.

La version sécurisée du protocole HTTP

Le souci du protocole http est qu'il est transparent, on peut observer et récupérer les informations qui circulent avec ce protocole. Ce qui pose des problèmes de sécurité évidents ( échange bancaire, vie privée...)

La réponse à ce problème est le protocole https, le S est pour Secure.

HTTPS

le protocole https se compose de 2 protocoles:

SSL (Secure Socket Layer) comme son nom l’indique est une couche (layer) supplémentaire sécurisée. Ce protocole va créer une sorte de canal sécurisé entre le client et le serveur.

Grace un échange de clés entre eux, le serveur et le client vont établir une connexion chiffrée dont eux seuls pourront lire le contenu. Car seul le client et le serveur en possession de la clé de décryptage pourront déchiffrer les données reçues.

Interaction client/server : méthode post et get.

Pour cette partie, nous avons besoin d'un logiciel qui va simuler un server. Installer le logiciel Uwamp

Nous allons ici simuler un serveur pour comprendre interaction client/serveur.

l'ensemble des fichiers de travail devront se trouver dans le répertoire my_app

la méthode GET

Pour utiliser la méthode GET dans un formulaire il suffit d'ajouter dans les arguments de la balise forme method="GET"

Voici un premier formulaire :


<form action="/ma-page-de-traitement" method="GET">
    <div>
        <label for="name">Nom :
        <input type="text" id="name" name="user_name">
    </div>
    <div>
        <label for="mail">e-mail :
        <input type="email" id="mail" name="user_mail">
    </div>
    <div class="button">
        <button type="submit">Envoyer le message
    </div>
</form>
           

Tester ce formulaire :

Où se trouve les informations transférées par ce formulaire?

Comme vous l'avez constaté ce formulaire n'aboutit pas car "ma-page-de-traitement" n'existe pas. C'est l'objectif de la suite de ce cours. Nous allons voir comment récupérer ces informations grâce au langage PHP.

Les informations envoyées par la méthode GET sont automatiquement stockées dans une variable $_GET. La structure de cette variable est un tableau associatif ( un peu comme un dictionnaire) où les clés sont les name définis dans les input.

PHP

Hypertext Preprocessor, plus connu sous son sigle PHP, est un langage de programmation libre, principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP, mais pouvant également fonctionner comme n'importe quel langage interprété de façon locale. PHP est un langage impératif orienté objet.

PHP a permis de créer un grand nombre de sites web célèbres, comme Facebook, Wikipédia, etc.9 Il est considéré comme une des bases de la création de sites web dits dynamiques mais également des applications web.

source : wikipedia

voici un premier code écrit en PHP :



<?php #indique le début d'un script php.

$html=<<<HTML #une variable en PHP sera toujours préfixé avec un $. le <<<HTML indique que la suite contient du HTML jusqu'au HTML;
<!doctype html>
<html lang="fr">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>formulaire réponse
</head>
<body>
    <p>Ton nom est : $_GET[user_name]

#ici on accède à la valeur enregistrée avec la clé user_name <p>Ton email est : $_GET[user_mail]

</body> </html> HTML; #fin de la ligne de code PHP contenant du HTML echo $html; #echo sert à afficher la variable qui suit. On affiche ici la variable html.

Télécharger les fichiers ici

Décompresser ces fichiers dans le répertoire my_app de uwamp et tester les codes.

Bien évidement PHP permet de faire tout ce qu'on attend d'un langage de programmation : test,boucle etc...

  1. Reprenez les fichiers précédents et modifier le formulaire pour faire un formulaire qui ressemble à cela :

  2. Réalisez une réponse qui ressemble à cela :

    Si une seule spécialité a été choisie, votre réponse ne doit afficher qu'une ligne, si deux spécialité vous devez voir 2 lignes afficher. Faire une recherche sur la boucle if en PHP et la fonction empty.

la méthode POST

Pour utiliser la méthode POST dans un formulaire il suffit d'ajouter dans les arguments de la balise forme method="POST"

Voici un premier formulaire :


<form action="/ma-page-de-traitement" method="POST">
    <div>
        <label for="name">Nom :
        <input type="text" id="name" name="user_name">
    </div>
    <div>
        <label for="mail">e-mail :
        <input type="email" id="mail" name="user_mail">
    </div>
    <div class="button">
        <button type="submit">Envoyer le message
    </div>
</form>
           

Tester ce formulaire :

Quelle différence observez vous avec la méthode "GET"?

La méthode GET est à choisir si on veux pouvoir partager une adresse (moteur de recherche par exemple). On peux choisir la méthode post quand on ne veut pas que url soit modifiée.

Refaire l'exercice 8 avec la méthode POST.

Faire de l'interaction client-serveur avec Python

Dans l'univers du développement Web de plus en plus de professionnel utilisent Python en remplacement de PHP. Dans cette partie nous allons vous montrer comment cela peut s'utiliser.

C'est cette méthode que nous serons amener à utiliser en terminale.

Création d'un serveur

Un exemple de formulaire

Licence Creative Commons
NSI de Auteurs : Jean-Christophe Gérard, Thomas Lourdet, Johan Monteillet, Pascal Thérèse est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.