Avatar billede teck Nybegynder
13. april 2005 - 19:01 Der er 15 kommentarer og
1 løsning

Slet inaktiv bruger efter 24 timer

Hejsa,

Jeg sidder lige og er ved at modificere mit brugersystem lidt. Jeg har lavet mit opret bruger system sådan, at brugeren modtager en mail med et link der skal trykkes på for at aktiver brugeren. Når dette sker kommer der et 1 i feltet aktiv i min database.

Nu kommer spørgsmålet så... kan det lade sig gøre at få serveren til at slette en bruger der ikke har aktiveret sin profil inden for 24 timer? Og hvis man kan, hvordan skal koden så se ud?
Avatar billede barklund Nybegynder
13. april 2005 - 19:10 #1
Mjaa, du kan jo et eller andet sted gøre en mysql-kommando, der fjerner alle sådanne rækker. For eksempel i en include fil, så den køres hver gang nogen klikker på noget som helst. Et cron-job på serveren ville dog være smartere, men det er ikke sikkert, at du har det til rådighed.

Så skal du blot køre noget med:

UPDATE user_table SET user_status = 'old' WHERE user_status = 'new' AND DATE(user_created, INTERVAL 1 DAY) < NOW()

Så bliver deres status sat til noget "inaktivt" - det er nok lidt smartere end at slette dem, men det kan du nu også nemt gøre.

--
Morten Barklund
Avatar billede Slettet bruger
13. april 2005 - 19:12 #2
Der bliver vel også sat et felt med tiden for oprettelsen ?
Du kan godt få et script til at køre hver nat. Men det kræver at du selv kan konfigurer serveren, for du skal have sat et crontab.

Men hvis du f.eks. sætter tiden ind som datetime, når brugeren bliver oprettet kunne du slette brugere ved hjælp af:

<?PHP
// husk at lave database adgang
mysql_query("DELETE FROM tabel WHERE datoforoprettelse = ADDDATE(now(), INTERVAL 1 DAY) AND aktiv != '1'") or die(mysql_error());
?>
Avatar billede Slettet bruger
13. april 2005 - 19:20 #3
Ja, hvis du ikke har adgang til crontab, kunne du jo som barklund foreslår blot køre scriptet hver gang en bruger klikker sig ind på forsiden.
Et enkelt sql kald kræver jo ikke meget.
Avatar billede teck Nybegynder
13. april 2005 - 20:32 #4
Hej cypermann >> din løsning ser rigtig flot ud.... men jeg ahr lidt problemer med den datetime. Jeg har aldrig brugt det før, så hvad skal man skrive for at smide datoen ind i databasen når en bruger oprettes?
Avatar billede barklund Nybegynder
13. april 2005 - 20:36 #5
Du indsætter blot NOW() i databasen - som:

INSERT INTO user(..., oprettet) VALUES(..., NOW())

--
Morten Barklund
Avatar billede teck Nybegynder
13. april 2005 - 20:40 #6
jeg vil også men at det var sådan det skulle gøres. Men der opstår følgende fejl:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ') values ('tester', 'casper', 'casper@domane.dk', NOW
Avatar billede teck Nybegynder
13. april 2005 - 20:42 #7
har fundet fejlen :)
Avatar billede barklund Nybegynder
13. april 2005 - 20:42 #8
Må vi se din query? Det kunne tyde på, at du har et komma til sidst i dine attribut-navne.
Avatar billede teck Nybegynder
13. april 2005 - 20:59 #9
Jeg kan ikke lige se at koden virker jeg har sat oprettelses datoen til 2005-04-12 20:53:00 og det betyder vel at den skulle slette brugeren, men det sker desværre ikke
Avatar billede barklund Nybegynder
13. april 2005 - 21:01 #10
Prøv med min query i stedet:

DELETE FROM user_table WHERE aktiv = '0' AND DATE_ADD(oprettet, INTERVAL 1 DAY) < NOW()

--
Morten Barklund
Avatar billede Slettet bruger
14. april 2005 - 09:46 #11
Husk hvis du benytter min kodestup at ændre tabel til det din tabel i databasen nu hedder. samt feltet datoforoprettelse til det du kaldte feltet hvor du indsætter tiden for oprettelsen.
Avatar billede teck Nybegynder
14. april 2005 - 09:51 #12
Jeg har fået skidtet til at virke med baklunds kode... så hvis han vil smide et svar, så jeg kan accepter det :).... I skal alle sammen have tak for hjælpen!
Avatar billede barklund Nybegynder
14. april 2005 - 10:16 #13
Check, men jeg vil nu stadig rekommandere blot at rendere brugerne "inaktive" i stedet for brutalt at slette dem - så har du stadig data :)
Avatar billede teck Nybegynder
14. april 2005 - 10:38 #14
det kan godt være at jeg skal gøre det :)
Avatar billede barklund Nybegynder
14. april 2005 - 11:17 #15
Tark for points :)
Avatar billede teck Nybegynder
14. april 2005 - 11:19 #16
det var så lidt ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester