Kullanıcı açmış tüm bilgi alma?

2 Cevap php

HI

Yerine kullanıcı oturum açmış kullanıcı adı, e-posta vb almak için tüm sayfaların üstüne bu kod parçası olan o / o giriş ve oturumları saklamak zaman kullanıcı TÜM bilgi almak olabilir?

$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");  
}

2 Cevap

Evet (probably) olabilir.

Olsa da, dikkate alınması gereken bir çift:

  • Eğer (to not have a giant session file with lots of useless data) sadece ihtiyacınız olan şeyi oturumda tutmak isteyebilirsiniz
  • kullanıcının kendi profilini günceller, sizi veritabanında iki yeni veri depolamak zorunda ve oturumda edeceğiz - "Profili Düzenle" sayfasında biraz daha fazla eser demektir.
  • if some other user (like an admin) edits a user's profile, you won't be able to change the session data of that user, and the updates will be loaded from database into the session only the next time the user logs in.
    • Bu sık sık olur bir şey ise, databse gelen verileri yenilemek isteyebilirsiniz dakika her çift (but it's rarely the case on a "normal" website)

evet, yerine sorguda sadece id alma, her şeyi olsun:

$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");  
}