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:
- When user is not logged in:
Then when he change some preference store it just in cookie
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.