https://github.com/heig-vd-progserv1-course
Support de cours · Présentation (web) · Présentation (PDF)
L. Delafontaine, avec l'aide de GitHub Copilot.
Ce travail est sous licence CC BY-SA 4.0.
Cette présentation est un résumé du support de cours. Pour plus de détails, consultez le support de cours.
GET
POST
<form>
<form action="register.php" method="POST"> <label for="username">Pseudo :</label><br /> <input type="text" id="username" name="username" /> <label for="password">Mot de passe :</label><br /> <input type="password" id="password" name="password" /> <br /> <button type="submit">Envoyer</button> </form>
<input>
text
password
email
number
<!-- Champ de texte --> <input type="text" name="name" /> <!-- Champ de email --> <input type="email" name="email" /> <!-- Champ de mot de passe --> <input type="password" name="password" /> <!-- Champ de case à cocher --> <input type="checkbox" name="subscribe" value="yes" />
<select>
<option>
<select name="country"> <option value="france">France</option> <option value="switzerland">Suisse</option> <option value="belgium">Belgique</option> </select>
<textarea>
<textarea name="message" rows="4" cols="50"> Écrivez votre message ici... </textarea>
<button>
submit
reset
<!-- Ce bouton soumet le formulaire --> <button type="submit">Envoyer</button> <!-- Ce bouton réinitialise le formulaire --> <button type="reset">Réinitialiser</button>
name
id
value
placeholder
required
action
action="register.php"
La méthode (method) du formulaire définit comment les données sont envoyées au serveur. Il existe deux méthodes principales :
method
GET : envoie les données dans l'URL (visible dans la barre d'adresse)
POST : envoie les données dans le corps de la requête (invisible)
<!-- La méthode peut être `GET` ou `POST` --> <form action="login.php" method=""> <label for="username">Pseudo : </label><br /> <input type="text" id="username" name="username" value="xXBestOf1400Xx" /> <label for="password">Mot de passe :</label><br /> <input type="password" id="password" name="password" value="m0n-sup3r-m0t-de-p4asse" /> <button type="submit">Envoyer</button> </form>
Les données sont ajoutées à l'URL de la requête, séparées par un ? et des & :
?
&
http://localhost/login.php?username=xXBestOf1400Xx&password=m0n-sup3r-m0t-de-p4asse
Problème de sécurité...
Les données sont envoyées dans le corps de la requête :
http://localhost/login.php
Les données ne sont plus visibles dans l'URL.
Problème de sécurité résolu !
$_GET
$_POST
<!-- Gère l'affichage du formulaire --> <!DOCTYPE html> <html> <head> <title>Authentification</title> </head> <body> <h1>Se connecter</h1>
<form action="login.php" method="POST"> <label for="username">Pseudo :</label><br> <input type="text" id="username" name="username" /> <br> <label for="password">Mot de passe :</label><br> <input type="password" id="password" name="password" /> <br> <button type="submit">Envoyer</button> </form>
</body> </html> <?php // Gère la soumission du formulaire if ($_SERVER["REQUEST_METHOD"] == "POST") { $username = $_POST["username"]; $password = $_POST["password"]; echo "Le nom d'utilisateur est : " . $username . "<br>"; echo "Le mot de passe est : " . $password . "<br>"; } ?>
Démonstration
<?php // Gère la soumission du formulaire if ($_SERVER["REQUEST_METHOD"] == "POST") { $username = $_POST["username"]; $password = $_POST["password"]; } ?> <!-- Gère l'affichage du formulaire --> <!DOCTYPE html> <html>
<head> <title>Authentification</title> </head> <body> <h1>Se connecter</h1> <form action="login.php" method="POST"> <label for="username">Pseudo :</label><br> <input type="text" id="username" name="username" value="<?php echo isset($username) ? $username : ''; ?>" /> <br>
<label for="password">Mot de passe :</label><br> <input type="password" id="password" name="password" /> <br> <button type="submit">Envoyer</button> </form>
<?php // Gère la soumission du formulaire if ($_SERVER["REQUEST_METHOD"] == "POST") { $username = $_POST["username"]; $password = $_POST["password"]; echo "Le nom d'utilisateur est : " . $username . "<br>"; echo "Le mot de passe est : " . $password . "<br>"; } ?> </body> </html>
La validation des formulaires peut inclure des vérifications telles que :
<?php // Gère la soumission du formulaire if ($_SERVER["REQUEST_METHOD"] == "POST") { $username = $_POST["username"]; $password = $_POST["password"]; // Par défaut, il n'y a pas d'erreurs $errors = []; // Validation des données if (empty($username)) { // On ajoute un message d'erreur au tableau array_push($errors, "Le pseudo est obligatoire."); }
if (strlen($username) < 2) { // On ajoute un message d'erreur au tableau array_push($errors, "Le pseudo doit contenir au moins 2 caractères."); } if (empty($password)) { // On ajoute un message d'erreur au tableau array_push($errors, "Le mot de passe est obligatoire."); } if (strlen($password) < 8) { // On ajoute un message d'erreur au tableau array_push($errors, "Le mot de passe doit contenir au moins 8 caractères."); } } ?>
<!-- Gère l'affichage du formulaire --> <!DOCTYPE html> <html> <head> <title>Authentification</title> </head> <body> <h1>Se connecter</h1> <form action="login.php" method="POST"> <label for="username">Pseudo :</label><br>
<input type="text" id="username" name="username" value="<?php echo isset($username) ? $username : ''; ?>" /> <br> <label for="password">Mot de passe :</label><br> <input type="password" id="password" name="password" /> <br> <button type="submit">Envoyer</button> </form>
<?php // On affiche les données si le formulaire a été soumis if ($_SERVER["REQUEST_METHOD"] == "POST") { // S'il n'y a pas d'erreurs, on affiche les données if (empty($errors)) { echo "<p style='color: green;'>Le nom d'utilisateur est : $username</p>"; echo "<p style='color: green;'>Le mot de passe est : $password</p>"; } else { // S'il y a des erreurs, on les affiche foreach ($errors as $error) { echo "<p style='color: red;'>$error<p>"; } } } ?> </body> </html>
<input type="text" id="username" name="username" value="<?php echo isset($username) ? $username : ''; ?>" required minlength="2" /> <br> <label for="password">Mot de passe :</label><br> <input type="password" id="password" name="password" required minlength="8" /> <br>
<button type="submit">Envoyer</button> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { ?> <?php if (empty($errors)) { ?> <p style="color: green;">Le formulaire a été soumis avec succès !</p> <?php } else { ?> <p style="color: red;">Le formulaire contient des erreurs :</p> <ul> <?php foreach ($errors as $error) { ?> <li><?php echo $error; ?></li> <?php } ?> </ul> <?php } ?> <?php } ?> </body> </html>
Est-ce que vous avez des questions ?
Pour le mini-projet ou les exercices, n'hésitez pas à vous entraidez si vous avez des difficultés !
TODO : À l'avenir, mettre un GIF ou une vidéo ?
URLs
Illustrations