Kullanıcıların tercihlerini ayarlarken, bu oturumda olarak çerezleri kullanmak en iyisidir?

5 Cevap php

Kullanıcıların oturum kapatma onlar geçilmek yok, çünkü her kullanıcı için, ben onları böyle kurabiye seans daha iyi olurdu, vb onlar görmek istiyorum etiketleri kendi profilinde, göstermek için hangi kategorileri olarak kendi tercihlerini seçmek için izin istiyor?

5 Cevap

Kullanıcılar giriş için son bir - Ben iyi çözüm tanımlama ve veri tabanı karıştırmak olduğunu düşünüyorum.

Cookies are fine, because the user doesn't have to log in on your website to have some preferences saved. But if somebody will login to your page than you got ability to save his preferences in more stable source - server database. Then these preferences are available from every computer and won't disappear after "browser cleaning".

EDIT:

Don't use sessions - her ikisi de daha kötü olan, kurabiye tabanlı ve veritabanı tabanlı bir çözüm.

Neden seans iyi bir fikir değil mi? Önce çerezleri (oturumlar sisteminin düzgün çalışması için gerekli session id denilen tanımlama içinde saklanan güvenmek tüm SID / SESSID / SESSIONID (çoğu durumda )) böylece temiz tanımlama da oturumu kaybettiğim zaman. Kurabiyeler hatta birkaç ay veya yıl için mevcut olabilir süre Ayrıca seans (ilk sayfa yük tarayıcı kapanışa veya web sitesi üzerinde işlem yaklaşık 20 dakika) sadece birkaç dakika için kullanılabilir!

So how should you do that?

Iki senaryo vardır:

  1. When user is not logged in:
    Then when he change some preference store it just in cookie
  2. When user is logged in:
    Then when he change some preference just save it in database:

    INSERT INTO preference (user_id, key, value) VALUES (?, ?, ?)
    ON DUPLICATE KEY UPDATE value = ?;
    

    İşte MySQL için örnek ama Başkalarının RDBMS bu aynı yapabilirsiniz.

And how do you get final preferences?

// That's VERY unsafe code... you HAVE TO do necessary validation (this is only an example)
$preferences = unserialize($_COOKIES['preferences']); 

if (/* user is logged in */) {
    $databasesPreferences = result_of_query('SELECT key, value FROM preference WHERE user_id = ?');
    $preferences = array_merge($preferences, $databasesPreferences);
}

Sumary

Bu çözüm, giriş-in ve non-giriş yapmış kullanıcılar için kullanıcı tercihlerini işleme için en istikrarlı yol verir.

Çerezler bir son kullanma tarihi olabilir. Onlara hiçbir hassas veriler varsa o zaman onlar vb kullanıcı kimliği yıllardan, gibi bir şey saklıyorsanız ancak onlar sunucuda depolanan konum olarak oturumları kullanarak kapalı iyi sorgularda kullanılan olacağını, kullanmak için iyiyiz insanlar el onlara alınamıyor nerede.

Siz genellikle kullanıcı tercihlerini kaydetmek için nerede üç seçenek vardır:

  • veritabanı
  • kurabiye
  • oturum

Bu arasında karar, her çözelti açısından farklı davranışlar sunmaktadır:

  • sebat
  • yerellik (bir tarayıcı veya hesaba bağlı)
  • güvenlik

Eğer bu değerin uzun süreli kalıcılığı gerekirse, veritabanında onları koymak gerekir. Eğer onları bir işaret gerekmez istiyorsanız, o zaman kurabiye daha iyi bir seçimdir. Gerçekten hiç kimse doğru cevap yoktur - bu başarmak için çalışıyoruz bağlıdır.

Kullanıcı kapalı oturum çerezleri kullanarak nokta nedir?? Kullanıcı çerez okuma ve ayarları uygulamak amacıyla web sitesini kullanarak gerekiyor. Kullanıcı oturum açtıktan sonra, veritabanını sorgulamak olabilir ve kullanıcı oturum kadar oturumlarda seçenekleri saklamak.

Benim tavsiye onlar çok daha güvenli olduğu gibi oturumları kullanmanız iyi olmasıdır.

Onlar ziyaretleri veya "oturumları" arasında sürebilir, çünkü Çerezler güzel. Onlar küresel da kullanıcı düzenlenebilir ve okunabilir ancak. Vb bir giriş, parola, oturum kimliği gibi hassas veri depolamak oturumu veya kullanıcıların bilgi kaçırma, kötü niyetli bir siteye yol açabilir. Ayrıca kurnaz kullanıcı ayrıcalık düzeyi veya açmış ve onları taklit edilir kullanıcıyı değiştirmek için çerez değiştirebilir.

Onlar uzak kullanıcılar ve diğer web sitelerinin meraklı gözlerden sunucu tarafında saklanır çünkü oturumları çok güvenli. Onlar oturumu sona erince onları saklanan bir şey kaybolur sınırlama var.

Ben sistemlerini giriş yaptığımda ben bir oturumları kullanmayı tercih. Sen veritabanından kullanıcıyı çekin ve sonra oturumuna çeşitli kullanıcı tanımlı ayarları yükleyebilirsiniz.