webForumDet fria alternativet

Validera inom tid, annars radera

PHP

7 svar · 503 visningar · startad av smileenergy

Medlem sedan jan. 200781 inlägg
Frågan#1

Hallå, har gjort ett medlemssystem där användare kan registrera sig. För att få logga in så måste de klicka på en länk i sitt mail. Men jag vill även att man ska behöva klicka på länken inom två timmar, annars ska kontot raderas. Kan man lösa detta på något sätt?
Jag lägger ju till information om användaren i databasen när han registrerar sig, och ändrar en kolumn till 1 om användaren har aktiverat sig. Denna information vill jag ju också att försvinner om användaren inte har validerat sitt konto inom två timmar.

Medlem sedan juni 20006 031 inlägg
#2

Vid registrering så lägger du till tiden i databasen.
Sen schemalägger du ett skript som körs med jämna mellanrum och raderar alla oaktiverade konton som är äldre än två timmar. (Schemaläggning eller Cron beroende av server)

Medlem sedan jan. 200781 inlägg
#3

okej, då får det bli ett cronjob.
Dock så undrar jag hur jag skriver när jag ska plusa på två timmar?
I min databas sparar jag informationen i DateTime, för att jag ville ha datumet då användaren registrerade sig också... Men som sagt finns det något smidigt sätt att lägga på två timmar? Hur skriver man det?
En enkel if sats om vi säger att variabeln $membersince har hämtat informationen från databasen och innehåller datumet och tiden i DateTime format.

Medlem sedan okt. 2001538 inlägg
#4

Hejsan :)

En annan lösning skulle väl kunna vara att när användaren väl försöker validera sig (länkklick inom två timmar) så kan ju php lätt hämta ut registreringstiden ur databasen, och jämföra den med "nu" och där se om två timmar passerat eller ej.

/ Patrik

Medlem sedan jan. 20061 807 inlägg
#5

Patrik81 skrev:

En annan lösning skulle väl kunna vara att när användaren väl försöker validera sig (länkklick inom två timmar) så kan ju php lätt hämta ut registreringstiden ur databasen, och jämföra den med "nu" och där se om två timmar passerat eller ej.

Ja fast då kommer du inte åt de som inte validerar sitt konto.

Medlem sedan okt. 2001538 inlägg
#6

M@gnus skrev:

Ja fast då kommer du inte åt de som inte validerar sitt konto.

Det är irriterande när man inte lyckas tänka tillräckligt långt ;) tack för att du poängterade detta. :)

Medlem sedan juni 20006 031 inlägg
#7

Man kan ju göra så att i aktiveringssidan så raderas alla aktiveringar som är äldre än 2 timmar innan man gör kollen.

Medlem sedan juni 20014 421 inlägg
#8

Du kan även skapa events i mysql som agerar som cronjob. Istället för att schemalägga ett phpscript eller liknande kan du använda create event on schedule som går och rensar ur gamla poster.

http://dev.mysql.com/doc/refman/5.1/en/create-event.html

259 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)