Le cookie doit naturellement contenir le pseudo (ou nom de l'utilisateur) et par sécurité le password. Ce dernier est optionnel dans l'application qui suit.
.01 .02
| |
<?php
setcookie('nom_cookie', $pseudo . '#' . $password, ( time() + 86400 * 90 ));
?>
|
Voici la fonction qui va vérifier si la session est toujours active, dans le cas contraire nous appellerons le fichier log.php.
Cette fonction autolog() est à placer sur toute les pages protéger par une session. La "cle_client" est dans l'exemple la session inactive.
.01 .02
| |
<?php
session_start();
function autolog()
{
if(!isset($_SESSION['cle_client']) && isset($_COOKIE['nom_cookie']))
{
// on stoke la page en cours
$page = $_SERVER['PHP_SELF'];
// on fait la redirection vers le fichier de log
header('location: log.php?redirect=' . $page);
exit;
}
}
?>
|
Fichier log.php qui permet de renvoyer sur la page, recharger la session et de gérer les erreurs.
.01 .02
| |
<?php
session_start();
// on va aller chercher le speudo dans le cookie
if(isset($_COOKIE['nom_cookie']))
{
$tc = explode('#', $_COOKIE['nom_cookie']);
$pseudo=isset($tc[0]) ? ( get_magic_quotes_gpc() ? $tc[0] : $tc[0]) : '';
$password = isset($tc[1]) ? $tc[1] : '';
$cookie = 1;
}
// on va cherche le speudo dans la table et les autres champs
$result = mysql_query("SELECT id, pseudo, password
FROM table
WHERE pseudo = '$pseudo' AND password = '$password'");
$row = mysql_fetch_array ($result);
if(mysql_num_rows($result) == 1)
{
// on remet le speudo dans la session
$_SESSION['pseudo'] = get_magic_quotes_gpc() ? $pseudo : stripslashes($pseudo);
$_SESSION['cle_client'] = $row['id'];
}
// et on fait la redirection
if($cookie)
{
if(isset($_GET['redirect']) && !empty($_GET['redirect']))
header('location: ' . $_GET['redirect']);
else
header('location: index.php');
}
else
header('location: autre_url.php');
}
}
?>
|
Il est maintenant possible de placer la fonction autolog() sur toute les pages protéger par session. Les utilisateurs devraient être plus a l'aise pour poster leurs informations sur votre espace membre. Le fichier log.php est puissant car il devrait vous permettre de jouer avec différente redirection.
Vous pouvez également passer par ce fichier de log pour terminer la session ou supprimer le cookie en cas de désabonnement de l'utilisateur.