2011-08-08 5 views
0

Je viens de faire le formulaire d'inscription pour mon site Web, mais je n'ai aucune connaissance sur la façon de se souvenir que l'utilisateur est connecté à travers la session. Je pense que je pourrais simplement stocker son IP sur une table sur ma base de données une fois authentifié et l'enlever quand il se déconnecte.Comment reconnaître un utilisateur connecté?

Y a-t-il quelque chose qui ne va pas dans cette approche? S'il y a quoi que je devrais faire à la place?

Répondre

1

Si vous utilisez PHP que vous pouvez le faire:

$_SESSION['logged_in_user'] = $username; 
... 
    // When you want to display something that is only for logged in users you do this: 
    if (!empty($_SESSION['logged_in_user'])) 
    { 
    // Authenticated user 
    ... 
    } 
    else 
    { 
    // Not authenticated user 
    ... 
    } 

Et quand il se déconnecte vous retirer le nom d'utilisateur de la session

if(isset($_SESSION['logged_in_user'])) 
{ 
    session_unset($_SESSION['logged_in_user']); 
} 
+1

Vous pouvez simplifier ce code en écrivant 'if (! Empty ($ _ SESSION ['logged_in_user'])' qui vérifiera que la variable est définie et que sa valeur n'est pas vide. –

1

En général, vous faites quelque chose comme

$_SESSION['logged_in'] = 1; 

lorsque l'utilisateur se connecte, et vérifiez

if (isset($_SESSION['logged_in']) { ... 

sur les demandes suivantes pour voir si l'utilisateur sur la page est connecté ou non.

Aucune base de données requise. Vous pouvez mettre tous les détails dont vous aurez besoin pendant que l'utilisateur est connecté à la session, comme le nom d'utilisateur de l'utilisateur ou un autre identifiant. Un problème avec votre approche est que la plupart des gens ne se déconnectent pas explicitement des sites Web, ils ferment juste l'onglet/fenêtre, et vous ne savez pas quand cela se produit. Une autre est que les adresses IP ne permettent pas d'identifier les utilisateurs de manière unique.

-1

votre login, vous pouvez définir une variable de session:

$_SESSION['is_logged_in'] = true; 

puis le vérifier sur les pages qui nécessitent une connexion:

<?php 
    if (!isset($_SESSION['is_logged_in'])) 
    { 
    // redirect to login page 
    } 
?> 

C'est vraiment un moyen très simple, mais se vous avez commencé dans la bonne direction.

+0

problèmes de couple avec ce ... vous n » t vérifiez si la clé existe avant de l'utiliser (avis de PHP), vous l'annulez quand elle n'existe pas, et vous la comparez à 'true' tout en la niant provoque la logique inverse à ce que votre commentaire implique. –

+0

vous avez raison ... il aurait fallu utiliser isset() –

1

Eh bien oui ..
L'adresse IP de votre utilisateur peut changer pendant qu'il est sur votre site, ou pourrait être pour plusieurs ordinateurs (qui utilisent un NAT). Fondamentalement n'importe quel réseau peut avoir plusieurs ordinateurs utilisant la même IP, et si une personne sur un ordinateur se connecte, un autre ordinateur sur le même réseau est également connecté.

La manière normale est de stocker ses informations d'utilisateur dans une session. Cette session marque uniquement son ordinateur (car l'identifiant de session est stocké dans un cookie).

En outre, pour réduire les requêtes sur la base de données, je charge généralement son nom d'utilisateur, mon ID, etc. dans la session lorsqu'il se connecte, puis efface la session lorsqu'il se déconnecte.

Questions connexes