2010-06-03 4 views
0

Je ne sais pas je l'ai expliqué correctement dans le titre de la question, voici donc les détails:En CodeIgniter, comment effacer « les données de formulaire » après la redirection Page

contrôleur Login:

function authenticate() { 
    if (authorized) { 
     redirect('lobby'); 
    } else { 
     redirect('login'); 
    } 
} 

Lobby contrôleur:

function index() { 
    //load lobby view 
} 

ce qui se passe est que, dans la page de connexion, j'entre l'utilisateur/pass, cliquez sur Connexion, puis authenticate() est appelé, et réoriente moi au Lobby. Toutefois, lorsque je clique sur Actualiser dans le Lobby, le formulaire de connexion est à nouveau envoyé, de sorte que je me reconnecte à nouveau. Comment puis-je empêcher cela?

Répondre

3

Ce que vous voyez est un comportement du navigateur qui n'est pas lié à CodeIgniter, en soi. Le navigateur Web stocke les données POST du formulaire de connexion et accède à l'action du formulaire lorsque l'utilisateur clique sur le bouton Envoyer. La réponse du serveur est une redirection. Par conséquent, lorsque l'utilisateur clique sur le bouton d'actualisation, le navigateur actualise l'action du formulaire et non la réponse de redirection du serveur.

Vous avez quelques options pour contourner ou éviter cela. La première qui vient à l'esprit est de mettre une vérification dans la méthode d'authentification pour voir si l'utilisateur est déjà connecté. Si oui, alors allez-y et redirigez-vous vers le Lobby. Sinon, vérifiez les informations de connexion de l'utilisateur comme d'habitude.

Vous pouvez également modifier l'action du formulaire de connexion pour accéder directement au lobby et effectuer votre authentification dans la méthode d'index du lobby. Si l'utilisateur n'est pas connecté, redirigez-le vers le formulaire de connexion.

0

Vous devez utiliser le contrôleur pour valider dans la construction si l'utilisateur est connecté ou non, de cette façon, vous pouvez rediriger ou non en fonction d'une variable de session.

Questions connexes