0% ont trouvé ce document utile (0 vote)
144 vues1 page

Exercice - Authentification

Ce document décrit la création de trois pages PHP pour l'authentification d'un utilisateur : une page de connexion, une page protégée et une page de déconnexion. La page de connexion vérifie les identifiants et démarre une session. La page protégée vérifie la session et affiche un contenu. La page de déconnexion détruit la session et redirige vers la page de connexion.

Transféré par

badi buzz
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
144 vues1 page

Exercice - Authentification

Ce document décrit la création de trois pages PHP pour l'authentification d'un utilisateur : une page de connexion, une page protégée et une page de déconnexion. La page de connexion vérifie les identifiants et démarre une session. La page protégée vérifie la session et affiche un contenu. La page de déconnexion détruit la session et redirige vers la page de connexion.

Transféré par

badi buzz
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ACCUEIL COURS GLOSSAIRE WEB LIENS UTILES VIDÉOS CONTACT Rechercher

Créer des sites Web dynamiques en PHP (PHP Hypertext Preprocessor)

Page 15: Exercice - Authentification Toutes les pages

Enoncé Page 1
Qu'est ce que PHP?
Dans cet exercice on va mettre en pratique les sessions lors de l’authentification. L'objectif et de créer trois Page 2
pages PHP: De quoi aura-t-on besoin pour coder en PHP?
[Link]: qui authentifie l'utilisateur. Elle contient un formulaire renfermant une zone de texte, une zone Page 3
de mot de passe et un bouton d'envoi. Intégration du code PHP
[Link]: qui représente la page à accès limité. Aucun visiteur n'a le droit de voir son contenu s'il n a
pas été authentifié par la page [Link]. Page 4
[Link]: est la page qui permet de déconnecter le client (détruire la session) et rediriger le Les bases du PHP
navigateur vers la page [Link]. Page 5
Les structures de contrôle

Si le client tente d'accéder directement à la page [Link] alors qu'il n'est pas authentifié, il sera aussitôt Page 6
redirigé vers la page [Link]. Si'il fournit un bon login et un bon mot de passe alors il sera redirigé vers la Formulaires et fonctions agissant sur les variables
page [Link] qu'il a désormais le droit de consulter. Page 7
Fonctions mathématiques
Pour simplifier, nous allons définir statiquement le bon login qui est "user" et le bon mot de passe qui est
"1234". Page 8
Chaînes de caractères

Pour rediriger le navigateur automatiquement vers une autre page on peut le faire en HTML, Javascript ou Page 9
en PHP. Cependant, il est préférable de le faire en PHP grâce à la fonction header(). Par exemple, si on Exercice - Vérification des champs de formulaire en
veut rediriger le navigateur vers la page [Link] alors on fait header( location : [Link] ). Notez PHP
que la fonction header() est une fonction entête comme c'est le cas pour session_start(). Il faut donc
prendre le soin de la déclarer avant d'envoyer du contenu au navigateur. Page 10
Les tableaux PHP

Correction Page 11
Dates et heures
Je vous donne les codes des trois pages et après je vous explique les points importants.
Page 12
Codes source Les fonctions
Page 13
Code source de [Link]:
Inclusions et arrêts prématurés
Page 14
<?php Les sessions (et variables de session)
session_start();
@$login=$_POST["login"]; Page 15
@$pass=$_POST["pass"]; Exercice - Authentification
@$valider=$_POST["valider"];
$bonLogin="user"; Page 16
$bonPass="1234"; Variables d'environnement et constantes PHP
$erreur=""; Page 17
if(isset($valider)){ Expressions régulières (les regex)
if($login==$bonLogin && $pass==$bonPass){
$_SESSION["autoriser"]="oui"; Page 18
header("location:[Link]"); Exercice - Identification des URL et liens cliquables
}
else Page 19
$erreur="Mauvais login ou mot de passe!"; Les fichiers
} Page 20
?> Chargement de fichiers: upload
<!DOCTYPE html>
<html> Page 21
<head> Envoyer des mails en PHP
<meta charset="utf-8" />
<style> Page 22
*{ Connexion à une base de données MySQL en PHP
font-family:arial; (Extension MySQLi)
} Page 23
body{
Gérer les cookies avec PHP
margin:20px;
} Page 24
input{ Parcours de dossiers et exécution des programmes
border:solid 1px #2222AA; externes
margin-bottom:10px;
padding:16px;
outline:none;
border-radius:6px;
}
.erreur{
color:#CC0000;
margin-bottom:10px;
}
</style>
</head>
<body onLoad="[Link]()">
<h1>Authentification</h1>
<div class="erreur"><?php echo $erreur ?></div>
<form name="fo" method="post" action="">
<input type="text" name="login" placeholder="Login" /><br />
<input type="password" name="pass" placeholder="Mot de passe" /><br
/>
<input type="submit" name="valider" value="S'authentifier" />
</form>
</body>
</html>

Code source de [Link]:

<?php
session_start();
if($_SESSION["autoriser"]!="oui"){
header("location:[Link]");
exit();
}
if(date("H")<18)
$bienvenue="Bonjour et bienvenue dans votre espace personnel";
else
$bienvenue="Bonsoir et bienvenue dans votre espace personnel";
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
*{
font-family:arial;
}
body{
margin:20px;
}
a{
color:#DD7700;
text-decoration:none;
}
a:hover{
text-decoration:underline;
}
</style>
</head>
<body onLoad="[Link]()">
<h1><?php echo $bienvenue?></h1>
[ <a href="[Link]">Se déconnecter</a> ]
</body>
</html>

Code source de [Link]:

<?php
session_start();
session_destroy();
header("location:[Link]");
?>

Explications
Comme pour l'exercice de la page 9, il faut avoir l'habitude de commencer par intégrer les code HTML et CSS,
puis Javascript s'il y en a, et en fin PHP.

Page [Link]:

On commence par démarrer une session avec session_start() au tout début du document, car des variables de
sessions sont prévues dans cette page. Après on récupère les posts (l'arobas sert à échapper les notifications
qui disent que les indexes du tableau $_POST ne sont pas reconnus, et ce avant de poster le formulaire). On
déclare ensuite le bon login le bon mot de passe que l'utilisateur doit saisir pour s'authentifier.

Notez que cette manière de déclarer le login et le mot de passe n'est pas du tout recommandée (surtout
que le mot de passe est déclaré en clair). Or, l'objectif de l'exercice est de savoir comment se servir des
sessions.

On vérifie ensuite que les posts du clients correspondent au bon login et le bon mot de passe. Si oui, une
variable de session du nom $_SESSION["autoriser"] est créée et on lui attribue la valeur "oui". On vérifiera
ensuite que cette variable a bien cette valeur ce qui signifiera que le client s'est correctement authentifié.
Aussitôt, le navigateur est redirigé vers la page [Link].

Si le login ou le mot de passe ne sont pas correctes, alors on affiche le message d'erreur "Mauvais login ou
mot de passe" qu'on a préalablement affecté à la variable $erreur.

Page [Link]:

La page [Link] est une page à accès limité. Seules les personnes qui se sont correctement authentifiées
peuvent y accéder, c'est pourquoi on a d'abord vérifié si la variable de session$_SESSION["autoriser"] a
comme valeur "oui" (après avoir restauré la session courante avec session_start()).

Vous avez certainement remarqué la fonction exit() qui permet d'arrêter prématurément l’exécution du code si
la variable de session n'a pas la valeur souhaitée (ce qui signifie que le client ne s'est pas authentifié
correctement). En fait, la fonction exit() n'est d'aucune utilité dans ce cas, car le navigateur serait déjà redirigé
vers la page [Link]. Mais elle est là si vous avez opté pour une redirection avec HTML ou Javascript. Ces
deux langages s’exécutent sur le client, alors il est possible que le visiteur interrompe leur exécution et se
retrouve alors avec la page [Link] qui s'affiche devant lui, même s'il n'est pas correctement authentifié.

Pour plus de personnalisation, on a opté d'afficher un message de bienvenue qui peut être soit "Bonjour et
bienvenue dans votre espace personnel" ou "Bonsoir et bienvenue dans votre espace personnel". Pour décider
si on affiche "Bonjour" ou "Bonsoir" on a fait appel à la fonction date("H"). Dans ce cas, elle retourne l'heure du
serveur en format 24h. On a estimé qu'avant 18h il convient de dire "Bonjour" et entre 18h et minuit "Bonsoir"
serait plus logique. Mais attention. L'heure est celle du serveur, alors si ce serveur est en Asie et le client en
Amérique du nord, les choses ne se passeront pas comme prévu à cause du décalage horaire. On peut donc
personnaliser le message à l'aide de Javascript qui s’exécute sur le client.

Si le visiteur clique sur le lien "Se déconnecter", il sera envoyé vers la page [Link].

Page [Link]:

Dans le jargon du Web on appelle ce genre de page page tunnel. En effet, la page [Link] n'est pas
destinée à afficher du contenu, mais plutôt à faire un traitement et rediriger le navigateur vers une autre page
sans même que l'internaute ne se rend compte de sa présence.

La page [Link] restaure la session courante qu'elle détruit juste après à l'aide de session_destroy().
Dans ce cas, la session est supprimée et la variable de session $_SESSION["autoriser"] est détruite également.
En suite, le navigateur est redirigé vers [Link].

Désormais, si on tente d'accéder à la page [Link], celle ci nous renvoie immédiatement vers la page
d'authentification.

Authentification statique en vidéo

[Link]

A propos de l'auteur

Cours

Glossaire du Web

Vidéos

Chiny © 2015-2020

Vous aimerez peut-être aussi