Mulla olisi tosiaan seuraavanlainen ongelma;
Olen toteuttamassa nettisivuillani rekisteröitymistoimintoa, jossa rekisteröitymisen jälkeen lähtee aktivointiviesti henkilön sähköpostiin. Nyt se viestin sisältämä aktivointilinkki pitäisi saada sellaiseksi, joka itsekseen laskeskelee aikaa ja "tuhoaa" itsensä tietyn ajan päätyttyä. Tästä ajasta puhuttaessa puhumme päivistä.
Missä kohdassa tuo linkki saadaan ymmärtämään ajankulu ja miten se käytännössä toimisi? Mistä tuo ajankulu pitäisi ottaa? Osaisko kukaan neuvoa koodia tai vähän opastamaan sinnepäin? Olen etsinyt Googlen läpikotaisin, mutta ei tunnu löytyvän nyt sitä mitä haen.
Kiitos kaikille.
Teet esim. tietokantaan juoksevan indeksin, jossa on myös viimeinen toimiva päivämäärä.
Tietenkin voit tunkea linkkiinkin "viimeisen päivämäärän", ja mukaan jokin monimutkainen suola, jottei kukaan voi vaihdella päivämäärää helposti.
Tietenkin linkit olisivat osoitettu sinun sivuille, josta käyttäjä sitten ohjattaisiin haluttuun osoitteeseen (mikäli sille on edes tarvetta).
Sinun pitää tallentaa tietokantaan tieto, milloin linkin voimassaolo loppuu, ja kun sivua yritetään ladata, voit tarkistaa, onko linkki enää voimassa.
Siis nykyään varmaan lisäät ja haet tietoa jotenkin näin:
INSERT INTO x VALUES ('linkki'); SELECT * FROM x WHERE linkki = 'linkki';
Voit tehdä sen sijaan vaikka näin:
INSERT INTO x VALUES ('linkki', NOW() + INTERVAL 3 DAY); SELECT * FROM x WHERE linkki = 'linkki' AND loppumisaika > NOW();
Kun kyse on vain kokonaisten linkkien sijaan siitä linkin päässä olevasta hashista, niin tallentaisin nämä tunnisteet tauluun ja poistelisin niitä sitä mukaa, kun ne joko vanhenevat tai ne on käytetty. Eipä niitä ole hyötyä säilöäkään.
Aihe on jo aika vanha, joten et voi enää vastata siihen.