3.24 Http et la conservation d’informations sur les clients

3.24.1 Problème

Le protocole HTTP est un protocole sans mémoire. Une requête d’un client ou les informations qui y sont rattachées ne sont pas mémorisées par défaut.

Plusieurs techniques ont été développées pour remédier à ce manque :

— Envoyer de l’information sur l’URL

— Utiliser un champ caché HTML

— Utiliser des Cookies

— Utiliser des Sessions

Utiliser des cookies :

L’information est stockée dans un petit fichier texte sur le navigateur du client. On peut par

exemple s’en servir pour stocker un identifiant de session, un login, un compteur de visites ou encore mesurer un temps de connexion.

Index.php

</head>

<body>

<?php

if (!isset($_COOKIE['login'])){

?>

<form method='GET' action=page2.php>

 

<p>Login: <input type="text" name="login"></p>

<input type="submit" value="Valider">

</form>

 

<?php

}

else {

 

header('Location:page2.php?login='.$_COOKIE['login']);

}

?>

</body>

page2.php

<!doctype html>

<html lang="fr">

<head>

<meta charset="utf-8"/>

<title>Formulaires</title>

</head>

<body>

<?php

if (isset($_COOKIE ['login'])){

echo "bonjour et bon retour".$_COOKIE ['login'];

}

else {

setcookie("login", $_GET['login'], time()+100);

echo "bonjour  ".$_GET['login'];

}

?>

</body>

</html>

 

Mais si on a des informations en plus grand nombre à stocker ou qui revètent un caractère

plus sensible, on préférera les stocker essentiellement côté serveur et utiliser le mécanisme plus complet des sessions. Celui-ci consiste à utiliser le tableau associatif _SESSION[] qui permet de stocker toute sorte d’informations associées à ce client (données de type nombres ou chaines, tableaux ou objets PHP).

Considérons une première page mettant en place une session :

</head>

<body>

<?php

session_start();

if (!isset($_SESSION['login'])){

?>

<form method='GET' action=page2.php>

 

<p>Login: <input type="text" name="login"></p>

<input type="submit" value="Valider">

</form>

 

<?php

}

else {

 

header('Location:page2.php?login='.$_SESSION['login']);

}

?>

</body>

<!doctype html>

<html lang="fr">

<head>

<meta charset="utf-8"/>

<title>Formulaires</title>

</head>

<body>

<?php

session_start();

if (isset($_SESSION ['login'])){

echo "bonjour et bon retour".$_SESSION['login'];

}

else {

$_SESSION['login']=$_GET['login'];

echo "bonjour  ".$_GET['login'];

}

?>

</body>

</html>

 

 


Last modified: Tuesday, 12 April 2022, 7:05 PM