Les objectifs de ce cours sont :
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.
<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>
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.
Pour que les boutons soient mutuellement exclusifs, ils doivent avoir le même attribut
name
: dans l'exemple précédent : "cat"
.
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.
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 :
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 :
input
et select
,type
lors de l'utilisation d'une balise input
,name
dans chacun des cas (attribut name
utilisé plus tard pour retrouver la valeur d'un élément d'un formulaire).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 :
getElementById('id') est une méthode qui récupère l'objet de la page identifié par 'id'.
document.getElementById('id')
récupère l'objet de la page en cours identifié par 'id'.
selectedIndex est une méthode qui renvoie la valeur l'option choisie par une liste déroulante ; plus généralement, cette méthode indique le rang à partir de 0 de l'élément de la liste qui a été sélectionnée par l'utilisateur.
selecteur.selectedIndex
renvoie l'indice du choix fait par l'utilisateur de la liste déroulante nommée 'selecteur'.innerHTML est une méthode qui permet de récupérer tout le contenu HTML d'un élément d'une page html.
document.getElementById('ici').innerHTML
intégre du contenu html à l'emplacement de la page identifié par l'id nommé 'ici'
.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;
}
Intégrer au code de l'exercice 2 ci-dessus ce script, soit directement, soit avec un lien vers un fichier javascript.
Relancer le code ainsi augmenté de l'exercice 2. Que remarquez-vous ?
Commenter chaque ligne de cette fonction écrite en JavaScript.
Utiliser la console de votre navigateur afin de voir l'effet d'une des lignes.
Ecrire un formulaire qui demande votre âge et qui indique dans la même page si vous êtes majeur ou mineur.
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 !".
Pour passer à interaction client/server nous devons comprendre et se familiariser avec le protocole 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.
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.
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.
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
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...
Reprenez les fichiers précédents et modifier le formulaire pour faire un formulaire qui ressemble à cela :
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.
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.
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.