Autor Zpráva
holi
Profil
Dobrý večer,
myslím že nadpis je jasný, ale uvedu příklad. Pokud se registruje uživatel vygeneruje se speciální aktivační kód, který má platnost 24 hodin. Jak zařídit aby se uživatel a kód z databáze smazal po uplynutí 24 hodiny. Bez použití Cronu(a interakce uživatele), jde to vůbec ?

Díky.
johnl
Profil
Můžeš při nové registraci projít db a pokud tam nějaký takový zastaralý řádek je, tak ho smazat.. Ale opět, nejlepším řešením by byl ten CRON..
TomášK
Profil
holi:
Ve skutečnosti není potřeba vymazat kód přesně za 24 hodin. Stačí, když při ověřování otestujete, zda kód není starší než 24 hodin a jednou za čas se smažou staré kódy, aby jich tam nebylo moc.
holi
Profil
Aha tak děkuji za názory, kdyby jste na něco ještě přišli budu rád za další návrhy. Nespíše to udělám tak že se to bude kontrolovat po každém přihlášení nějakého uživatele nebo tak něco.
Keeehi
Profil
holi:
TomášK má pravdu. Když někdo bude chtít, vygeneruješ kód, uložíš do databáze s aktuálním časem + 24 hodin. A teď nastává několik možností:
1) uživatel to stihne do 24 hodin - zaregistruješ ho a z databáze záznam smažeš
2) uživatel to nestihne do 24 hodin, ale pokusí se ho použít - nezaregistruješ ho, z databáze smažeš záznam, vygeneruješ nový kód a uložíš ho do db s aktuálním časem +24 hodin
3) uživatel to nestihne do 24 hodin a nepokusí se ho nikdy zadat - tyto záznamy ti sice budou v databázi zbývat, ale vadí to snad? I milion záznamů není žádné velké číslo a nechce se mi věřit, že by se za rok vyskytlo milion uživatelů typu 3 -> stačí to jednou ročně ručně promazat. Anebo třeba měsíčně? Vždyť to zase takový problém není.
okolojdouci
Profil *
Keeehi:
Spíš bych to řešil tak, že bych při každém pokusu o použití kódu smazal všechny starší než 24 hodin a pak ověřil jestli ten aktuální platí. Je to jeden DELETE, triviální operace a milióny ušetřených záznamů :)
Keeehi
Profil
okolojdouci:
To už je jedno, jen jsem tím chtěl říct, že těmi přebývajícími záznamy se není třeba znepokojovat.
Spectator
Profil
okolojdouci:
Spíš bych to řešil tak, že bych při každém pokusu o použití kódu smazal všechny starší než 24 hodin a pak ověřil jestli ten aktuální platí. Je to jeden DELETE, triviální operace a milióny ušetřených záznamů :)

Přesně tak!!!

Keeehi

Proč mít plnou databázi neplatných záznamů a proč jednou za rok něco nějak složitě mazat a nedej bože u toho udělat nechtěnou chybu?
Flek
Profil
Stačí při nové registraci ukládat do databáze výstup z funkce time() a poté při kontrole platnosti klíče porovnat aktuální time() s tím co je uložený v databázi a pokud bude starší více jak 24 hodin, žádná akce se neprovede.

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-sedm: