Autor Zpráva
Tori
Profil
Pěkný den.
Mějme fórum, kam se přihlašují uživatelé. Stav přihlášení a ID uživ. se ukládá do session, na každé stránce se z DB tahají další info o uživateli: čas poslední aktivity (timestamp), oprávnění (int), ban ano/ne. Uživatelů je v databázi pár stovek, počet banovaných IP neznám.

Problém je: Jak ušetřit ten jeden dotaz do DB (např.načíst data do session už při přihlášení), a přitom aby byla aplikace schopná hned zjistit, že uživatel zrovna dostal ban (nick a/nebo IP)? Jak byste to řešili?

Zatím mě napadly 2 možnosti:
* info u uživateli se uloží do session a jednou za x minut se aktualizuje podle databáze.
* pole blokovaných uživatelů/IP se bude cachovat do souboru, číst pouze odtamtud, a zabanování nicku aktualizuje data v cache.
Joker
Profil
Tori:
Jak byste to řešili?
Při banu by uživatel byl zároveň automaticky odhlášen.
Tori
Profil
Joker:
No ano, odhlášen samozřejmě bude, ale jak ten skript zjistí, že dostal ban? Buď musí ověřovat bany nicku/IP, anebo platnost současného SID - a jak seznam banů tak seznam platných přihlášení se musí někde ukládat. Šlo mi o to, jestli ho můžu ukládat jinde než v DB, a jestli by ten jiný způsob byl vhodnější.
Joker
Profil
Tori:
Aha, takže ani relace se neověřuje proti databázi.

Já bych to četl z databáze a souborovou cache nebo takové věci řešil až kdyby se zjistilo, že to je moc pomalé.
Mimochodem, úplně stejný problém jako s tím banem předpokládám bude se změnou oprávnění.
Tori
Profil
Joker:
Ok, nechám to na databázi. Děkuju.
Změny oprávnění jsem ani neřešila, ty se na tom fóru dějí asi stejně často jako tady. :)

(Zapomenuté heslo?)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-pět: