Hello tout le monde !
Voilà, je tourne en rond avec un problème d'auto authentification. J'aimerais offrir à l'utilisateur la possibilité de rester connecté à mon application même après qu'il ait fermé le navigateur.
Je réalise cela avec un cookie contenant l'id de l'utilisateur et lorsque je me connecte à mon appli une première fois (avec la case "rester connecté" cochée), tout fonctionne. Le problème, se produit lorsque je reviens après avoir fermé le navigateur. J'obtiens une erreur du style "Cette page présente une boucle de redirection - erreur 310".
Je précise que lorsque je me connecte sans cette option, tout va bien !
Quelqu'un pourrait-il m'éclairer ?
Je vous présente mon code (une partie du moins) et la manière dont j'ai réfléchi
1) Sur la page de login, je commence par vérifier s'il existe déjà un cookie. Si oui, je redirige l'utilisateur vers une page de connexion auto
2) S'il n'y a pas de cookie, j'affiche le formulaire
3) S'il s'agit d'une "première" connexion et que l'option est cochée, je génère un cookie lors de la connexion
Lorsque l'utilisateur est connecté, je procède à plusieurs tests :
1) Qu'une session a bien été créée
2) Que l'utilisateur dispose bien du rang (admin, user, etc.) pour afficher la page
Je procède également à un test avec le cookie : lorsque l'utilisateur arrive sur la page de login et se connecte automatiquement, je passe une variable de session $_SESSION['conn_cookie'] à 1. Si, en affichant une page, cette même variable vaut 0, cela veut dire que l'utilisateur n'a pas été connecté. Je regarde alors si le cookie existe et qu'il contient la bonne information et je procède à la connexion. Si ce n'est pas le cas, je redirige l'utilisateur vers la page de login.
Pour tous les différents tests (session, rang, cookie), si l'un d'eux échoue, je détruis les différentes variables de session et vide le cookie avant de rediriger l'utilisateur vers la page de loggin avec un message d'erreur.
J'effectue mes différentes redirections de la manière suivante :
Voilà, je ne sais pas si je suis très clair, mais là, pour tout dire, je tourne en rond ! Je n'ai pas posté tout le code car celui-ci est trop long, mais si cela est nécessaire, je le ferai.
Merci d'avance à ceux qui prendront le temps de lire ce message et d'y répondre !
Modifié par LancelotKiin (27 Jun 2012 - 09:11)
Voilà, je tourne en rond avec un problème d'auto authentification. J'aimerais offrir à l'utilisateur la possibilité de rester connecté à mon application même après qu'il ait fermé le navigateur.
Je réalise cela avec un cookie contenant l'id de l'utilisateur et lorsque je me connecte à mon appli une première fois (avec la case "rester connecté" cochée), tout fonctionne. Le problème, se produit lorsque je reviens après avoir fermé le navigateur. J'obtiens une erreur du style "Cette page présente une boucle de redirection - erreur 310".
Je précise que lorsque je me connecte sans cette option, tout va bien !
Quelqu'un pourrait-il m'éclairer ?
Je vous présente mon code (une partie du moins) et la manière dont j'ai réfléchi
1) Sur la page de login, je commence par vérifier s'il existe déjà un cookie. Si oui, je redirige l'utilisateur vers une page de connexion auto
//On teste si l'utilisateur a coché l'option "Rester connecté" et que le cookie créé n'est pas vide ou n'a pas encore expiré
if (isset($_COOKIE["user_id"])) {
//On redirige l'utilisateur vers la page de connexion (cookie)
header("Location: connexion_cookie.php");
}
2) S'il n'y a pas de cookie, j'affiche le formulaire
3) S'il s'agit d'une "première" connexion et que l'option est cochée, je génère un cookie lors de la connexion
//Si l'utilisateur a coché la case "Rester connecté"
//* On créé un cookie valable durant 30 jours contenant l'id de l'utilisateur
//Test
if ($v_stay_connected == 1) {
//Création du cookie
setcookie('user_id', $data_log['UTI_ID'], time() + 30*24*3600);
}
Lorsque l'utilisateur est connecté, je procède à plusieurs tests :
1) Qu'une session a bien été créée
2) Que l'utilisateur dispose bien du rang (admin, user, etc.) pour afficher la page
Je procède également à un test avec le cookie : lorsque l'utilisateur arrive sur la page de login et se connecte automatiquement, je passe une variable de session $_SESSION['conn_cookie'] à 1. Si, en affichant une page, cette même variable vaut 0, cela veut dire que l'utilisateur n'a pas été connecté. Je regarde alors si le cookie existe et qu'il contient la bonne information et je procède à la connexion. Si ce n'est pas le cas, je redirige l'utilisateur vers la page de login.
Pour tous les différents tests (session, rang, cookie), si l'un d'eux échoue, je détruis les différentes variables de session et vide le cookie avant de rediriger l'utilisateur vers la page de loggin avec un message d'erreur.
J'effectue mes différentes redirections de la manière suivante :
header("Location: admin_board.php?v_page=1");
Voilà, je ne sais pas si je suis très clair, mais là, pour tout dire, je tourne en rond ! Je n'ai pas posté tout le code car celui-ci est trop long, mais si cela est nécessaire, je le ferai.
Merci d'avance à ceux qui prendront le temps de lire ce message et d'y répondre !
Modifié par LancelotKiin (27 Jun 2012 - 09:11)