Oturum tüm kullanıcıların bilgi depolamak

2 Cevap

Bu login bu gibi oturum çerezleri tüm kullanıcıların bilgileri saklamak için en iyisidir? Bunun yerine querys sürü kullanmanın

$_SESSION['id'] = mysql_result($result, 0, 'id');
$_SESSION['name'] = mysql_result($result, 0, 'name');
$_SESSION['email'] = mysql_result($result, 0, 'email');
$_SESSION['ip'] = mysql_result($result, 0, 'regip');
$_SESSION['groupid'] = mysql_result($result, 0, 'group_id');
$_SESSION['style'] = mysql_result($result, 0, 'style');

Ya da belki oturumda sadece mağaza ID sonra tüm sayfa üzerinde sorgu:

select * from users where id = $_SESSION['id']

2 Cevap

Emin, onları çok kullanıyor gidiyoruz. I all Oturumunda kullanıcıların veri depolama konusunda dikkatli olurdum rağmen. Sadece ne gerekli. Iyi yazılmış sorgular kaynaklara ucuz olduğunu aklınızda tutun. Sadece bunu yaparken, sen de bunu yapmak emin olun, tamamen veritabanına bağlanırken önlemek için çalışmayın.

Eğer memory_get_usage() kullanarak İsterseniz hafıza-tüketimini test edebilirsiniz. Ama unutmayın oturum verileri sistemin kendisi üzerinde düz bir dosyada saklanır:

session_start();
echo memory_get_usage(); // 87744
$_SESSION["user"] = array(
    "name"    => "Jonathan Sampson",
    "id"      => 54680,
    "groupID" => 0285,
    "email"   => "example@somesite.com",
    "style"   => "background-color:#333;color:#f1f1f1"
);
echo memory_get_usage(); // 88344

Yani bu veri bu miktar saklamak için gerçekten çok önemsiz olduğunu görebilirsiniz.

See also: Cache data in PHP SESSION, or query from db each time?

: Ben db kaydedilen her bir kullanıcı için (tuzlu) karma oluşturmak istiyorum

$salt = 'asdjnvdskflds';
$hash = md5($salt . $email);

Daha sonra oturumda karma saklayın. Bu şekilde, her zaman kullanıcı verilerini arayabilirsiniz. Bu da kullanıcı onun / bazı verilerin değişmesi durumunda oturumu güncelleştirmek zorunda değil yararı vardır.