A propos des sessions (merci de faire partager votre expérience)
A propos des sessions (merci de faire partager votre expérience) - PHP - Programmation
MarshPosté le 27-06-2002 à 17:25:55
Salut à tous,
Alors voila y'a des trucs avec les sessions que je ne pige pas, j'espère que vous pourrez m'éclairer et m'aider a rendre mon code fiable.
Voici comment je procède :
1./ Dans ma page d'authentification ('sign.php' j'ai un formulaire avec 'Pseudo' et 'Password'. Dans cette même page, une fois le formulaire validé je test les informations saisi par l'utilisateur. Si les infos correspondent avec celles présentes dans ma table 'user', je crée une variable de session 'ses_user' et je redirige l'utilisateur vers son espace perso ('profile.php'.
{ //pseudo et password ok -> création d'une session user //je récupère le pseudo saisi dans le formulaire ($pseudo) dans une variable $ses_user $ses_user = $pseudo;
//création de la session user session_register("ses_user" ); $HTTP_SESSION_VARS["ses_user"];
//redirection de l'utilisateur vers son espace perso echo("<SCRIPT> location=profile.php'</SCRIPT>" ); }
A ce niveau la, j'aimerai savoir si la création se ma session utilisateur est correcte Et si le fait de n'utiliser à aucun moment la transmission de variable par querystring est une bonne chose.
2./ Dans ma page 'profile.php' je place en haut du script la fonction :
<?php session_start(); ?>
Comme ça je peux me servir de ma variable de session dans mes requêtes : ?SELECT * FROM users WHERE pseudo = $HTTP_SESSION_VARS["ses_user"]?
3./ Dans la page 'profile.php' il y a un lien 'sign out' pour déconnecter l'utilisateur. Lorsqu'il clique dessus il va à la page 'out.php'.
Dans la page 'out.php', je détruis la session :
<?php session_start(); session_destroy(); ?>
4./ Et enfin un dernier point. Dans la page 'profile.php' j'ai placé un test pour vérifier que l'utilisateur s'est bien identifier (pour éviter qu'un petit malin tape directement l'url dans la barre d'adresse sans s'être authentifié au préalable).
<?php //TEST SUR LA VALIDITE DE LA SESSION USER if ($HTTP_SESSION_VARS['ses_user'] == "" ) { //l'utilisateur n'existe pas -> on le redirige echo("<SCRIPT> location='error.php'</SCRIPT>" ); } ?>
Ce test marche sauf la première fois que je lance le site a partir de mon navigateur, après mettre authentifié, il me redirige directement sur 'error.php' ( ?!) et si je recommence ça marche sans problème. A mon avis le souci vient de la session.
Bon voila j'ai terminé (ouf), j'aimerai savoir si mon code est juste et si mes sessions sont fiables (et sécurisés). En local ça marche sauf que je ne peux pas ouvrir 2 sessions (avec 2 noms d'utilisateurs et dans 2 feuilles différentes) en même temps ( ?!)
Marsh Posté le 27-06-2002 à 17:25:55
Salut à tous,
Alors voila y'a des trucs avec les sessions que je ne pige pas, j'espère que vous pourrez m'éclairer et m'aider a rendre mon code fiable.
Voici comment je procède :
1./ Dans ma page d'authentification ('sign.php' j'ai un formulaire avec 'Pseudo' et 'Password'.
Dans cette même page, une fois le formulaire validé je test les informations saisi par l'utilisateur.
Si les infos correspondent avec celles présentes dans ma table 'user', je crée une variable de session 'ses_user' et je redirige l'utilisateur vers son espace perso ('profile.php'.
{
//pseudo et password ok -> création d'une session user
//je récupère le pseudo saisi dans le formulaire ($pseudo) dans une variable $ses_user
$ses_user = $pseudo;
//création de la session user
session_register("ses_user" );
$HTTP_SESSION_VARS["ses_user"];
//redirection de l'utilisateur vers son espace perso
echo("<SCRIPT> location=profile.php'</SCRIPT>" );
}
A ce niveau la, j'aimerai savoir si la création se ma session utilisateur est correcte
Et si le fait de n'utiliser à aucun moment la transmission de variable par querystring est une bonne chose.
2./ Dans ma page 'profile.php' je place en haut du script la fonction :
<?php
session_start();
?>
Comme ça je peux me servir de ma variable de session dans mes requêtes :
?SELECT * FROM users WHERE pseudo = $HTTP_SESSION_VARS["ses_user"]?
3./ Dans la page 'profile.php' il y a un lien 'sign out' pour déconnecter l'utilisateur.
Lorsqu'il clique dessus il va à la page 'out.php'.
Dans la page 'out.php', je détruis la session :
<?php
session_start();
session_destroy();
?>
4./ Et enfin un dernier point.
Dans la page 'profile.php' j'ai placé un test pour vérifier que l'utilisateur s'est bien identifier (pour éviter qu'un petit malin tape directement l'url dans la barre d'adresse sans s'être authentifié au préalable).
<?php
//TEST SUR LA VALIDITE DE LA SESSION USER
if ($HTTP_SESSION_VARS['ses_user'] == "" )
{
//l'utilisateur n'existe pas -> on le redirige
echo("<SCRIPT> location='error.php'</SCRIPT>" );
}
?>
Ce test marche sauf la première fois que je lance le site a partir de mon navigateur, après mettre authentifié, il me redirige directement sur 'error.php' ( ?!) et si je recommence ça marche sans problème.
A mon avis le souci vient de la session.
Bon voila j'ai terminé (ouf), j'aimerai savoir si mon code est juste et si mes sessions sont fiables (et sécurisés).
En local ça marche sauf que je ne peux pas ouvrir 2 sessions (avec 2 noms d'utilisateurs et dans 2 feuilles différentes) en même temps ( ?!)
Encore merci de m'avoir lu jusqu'au bout.
@+
Dead.metheny