13. april 2005 - 19:01Der 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?
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
Synes godt om
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()); ?>
Synes godt om
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.
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?
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
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
DELETE FROM user_table WHERE aktiv = '0' AND DATE_ADD(oprettet, INTERVAL 1 DAY) < NOW()
-- Morten Barklund
Synes godt om
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.
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!
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.