9
votes

PHP, empêchez les utilisateurs d'accéder à une page lorsqu'il n'est pas connecté?

Comment puis-je empêcher un utilisateur d'accéder à une page quand ils ne sont pas connectés? Je veux qu'il soit redirigé vers la page de connexion. Je sais que cela a quelque chose à voir avec des sessions.


2 commentaires

Comment savez-vous si les utilisateurs sont actifs ou non? Quelles variables sont définies?


1 astuce supplémentaire si vous n'êtes pas encore implémenté: Après avoir vérifié si la session d'utilisateur existe ou non, vérifiez si la variable postale provenait d'une demande et d'un accès direct. Le but est d'empêcher l'accès direct public de votre page PHP (si elles ont un aperçu de l'informatique) et des fonctions indésirables ont été exécutées.


4 Réponses :


8
votes

Quand il se connecte - stocker une variable de session. Ensuite, au début de chaque page xxx

si le login est OK xxx


0 commentaires

13
votes

Cela fonctionne comme ceci:

  1. Démarrer une session: session_start ()
  2. Si la session ["utilisateur"] == null, rediriger vers la page de connexion, sinon continue.
  3. Dans la page de connexion, demandez à l'utilisateur de mot de passe à l'aide d'un formulaire
  4. Postez ce formulaire à la page de connexion
  5. Vérifiez-vous de votre service d'authentification (par exemple une table dans MySQL) si l'utilisateur est autorisé
  6. Si oui, session ["utilisateur"] = $ USERName, redirige l'utilisateur à la page. Si non, invite à nouveau le mot de passe

    Bien sûr, tout est très très simple. Dans votre session, vous pouvez conserver un objet utilisateur complexe, ou quoi que ce soit. Bonne chance codage.


1 commentaires

Que diriez-vous si vous voulez le faire pour un utilisateur pour une certaine URL? S'ils sont connectés ou non.



10
votes

Comme Svetlozar Angelov a souligné que le code suivant fonctionnerait bien: xxx pré>

Cependant .. em> cela ne garantirait pas réellement la page contre les utilisateurs qui souhaitaient vraiment accès. Vous devez faire quelques ajustements: P>

if (!isset($_SESSION['nID']))
{
    header("Location: login.php");
    die();
}


0 commentaires

1
votes

Suivez ces étapes:

Créer une page login.php accessible à tout le monde où un utilisateur entre son nom d'utilisateur et son mot de passe dans un formulaire. Ce formulaire doit être soumis à Login.php lui-même. (action = 'login.php'). Inclure également une variable cachée de votre formulaire qui suit si le formulaire a été soumis.

Si la variable cachée est définie, vérifiez si le nom d'utilisateur ( _ POST ['User'] ) existe dans votre dB et que le mot de passe correspond au nom d'utilisateur. Si tel est le cas, stockez le nom d'utilisateur dans une variable de $ _session comme celle-ci:

$ _ session ['nom d'utilisateur'] = $ _post ["utilisateur '];

Si ce n'est pas le cas, rechargez le login.php comme ceci:

écho 'en-tête ("login.php")'; // Vous n'auriez pas dû faire écho à rien avant cette

Inclure maintenant login.php dans chaque page utilisateur que vous créez. Supposons que vous écriviez une application de messagerie, créez une boîte de réception.php comme celle-ci

inclure ("login.php")

maintenant, login.php vérifiera si la variable de session 'utilisateur' est définie et autorise l'accès aux utilisateurs autorisés uniquement.


0 commentaires