2009-10-17 8 views
0

HIObtenir toutes les informations de l'utilisateur connecté? PHP

ce que je pourrais aller chercher toutes les informations de l'utilisateur quand il/elle vous connecter et le stocker dans des sessions au lieu d'avoir ce morceau de code au-dessus de toutes les pages pour obtenir le nom d'utilisateur, email etc de l'utilisateur connecté ?

$userq = mysql_query("SELECT * FROM users WHERE id = {$_SESSION['id']}"); 
$auth_user = mysql_fetch_assoc($userq); 

login.php

$sql = mysql_query("SELECT id FROM users 
         WHERE username = '$username' AND password = '$password'"); 

if (mysql_num_rows($sql) < 1) { 
    echo "Wrong username/password"; 
} else { 
    $_SESSION['id'] = mysql_result($result, 0, 'id'); 
    header("Location: index.php"); 
} 
+0

S'il vous plaît utiliser: mysql_query ("SELECT * FROM utilisateurs WHERE id =" .mysql_real_escape_string ($ _ SESSION [ 'id'])); au lieu de mysql_query ("SELECT * FROM utilisateurs WHERE id = {$ _SESSION ['id']}"); et mysql_query ("SELECT id FROM utilisateurs WHERE nom d'utilisateur = '" .mysql_real_escape_string ($ nom d'utilisateur). "' AND password = '" .mysql_real_escape_string ($ mot de passe). "'"); au lieu de mysql_query ("SELECT id FROM utilisateurs WHERE nom d'utilisateur = '$ username' AND password = '$ mot de passe'"); –

Répondre

2

Oui, vous (probablement) pouvait.

Un couple de choses à considérer, cependant:

  • vous pourriez vouloir garder en session seulement ce que vous devez (pour ne pas avoir un fichier de session géant avec beaucoup de données inutiles)
  • si l'utilisateur met à jour son profil, vous devrez stocker les nouvelles données à la fois dans la base de données et en session - ce qui signifie qu'un peu plus de choses fonctionnent sur la page "modifier le profil".
  • si un autre utilisateur (comme un administrateur) modifie le profil d'un utilisateur, vous ne serez pas en mesure de modifier les données de session de cet utilisateur, et les mises à jour seront chargées de la base de données dans la session uniquement la prochaine fois. utilisateur se connecte.
    • si cela est quelque chose qui arrive souvent, vous pourriez vouloir actualiser les données de databse toutes les deux minutes (mais il est rarement le cas sur un site Web « normal »)
0

oui, au lieu d'obtenir simplement l'identifiant dans la requête, vous obtenez tout:

$sql = mysql_query("SELECT * FROM users 
        WHERE username = '$username' AND password = '$password'"); 

if (mysql_num_rows($sql) < 1) { 
    echo "Wrong username/password"; 
} else { 
    $_SESSION['userdata'] = mysql_result($result, 0); 
    header("Location: index.php"); 
} 
Questions connexes