Avatar billede ridisc Nybegynder
08. januar 2006 - 19:17 Der er 34 kommentarer og
1 løsning

Slet automatisk en bruger!

Hej!

Jeg har et problem, jeg vil gerne have at en bruger slettes hvis den ikke har været på i en måned!

Håber nogen derude kan hjælpe.
Avatar billede webstuff Nybegynder
08. januar 2006 - 19:23 #1
Jeg ville nok gøre det sådan her:

mysql_query("DELETE * FROM brugere WHERE sidstset = NOW()+604800") or die(mysql_error());

Det kræver så også at du har et felt i databasen, som opdateres hver gang en bruger logges ind :)
og du skal også huske at udfylde det når brugeren opretter sig :-)

Men du må ikke hænge mig op på om koden er rigtig, er ikke så habil i php endnu :-)
Avatar billede ridisc Nybegynder
08. januar 2006 - 19:25 #2
Hmm!

Jeg ved squ ikke helt hvor og hvordan du vil have det til at virke! Kan du ikke lige forklare lidt?
Avatar billede webstuff Nybegynder
08. januar 2006 - 19:30 #3
Sæt det ind så det udføres hver gang der er en der besøger din side :-)
Avatar billede ridisc Nybegynder
08. januar 2006 - 19:33 #4
Øh. Nu er jeg helt væk.
Avatar billede webstuff Nybegynder
08. januar 2006 - 19:40 #5
Du laver et felt i din bruger tabel i databasen der hedder 'sidstset' i formatet 'DATE' - når en bruger opretter sig sætter du det felt lig med date("d/m-y G:i")

og hver gang en bruger logger ind, skal det samme felt sættes til date("d/m-y G:i") så har du hele tiden det felt opdateret med datoen for hvornår brugeren sidst har været aktiv på siden...

Og så kører du den kode jeg skrev før hver gang en bruger logger ind f.eks eller bare på et eller andet tidspunkt med kævne mellemrum :-)

Men som sagt er jeg ikke helt sikker på at koden er rigtig..
Avatar billede webstuff Nybegynder
08. januar 2006 - 19:40 #6
kævne = jævne!
Avatar billede webstuff Nybegynder
08. januar 2006 - 19:50 #7
Min kode duer ikke kan jeg så fortælle dig :-)

Prøv den her:

mysql_query("DELETE * FROM brugere WHERE DATE_ADD(sidstset,INTERVAL 43200 MINUTE) < NOW()") or die(mysql_error());
Avatar billede ridisc Nybegynder
08. januar 2006 - 19:52 #8
Hmm. Men den kode du lige har smidt op, ikke! Den skal vel se sådan her ud:

<?
include("mysql.php");
$dato = date("d/m-y G:i")
mysql_query("DELETE * FROM brugere WHERE sidstset = NOW()+604800") or die(mysql_error());
?>

- så skal jeg oprette et nyt dokument som eks. hedder: autoluk.php. Så skal jeg lægge din kode jeg lige skrev i, også vil den når en bruger ikke har været på i en måned blive lukket.

Så ved jeg godt, at inde i: login.php skal der være en update der opdatere det felt med den nye dato. Og den fikser jeg hvis jeg får svar på om min kode var rigtig!?
Avatar billede ridisc Nybegynder
08. januar 2006 - 19:53 #9
Arg pis:

<?
include("mysql.php");
$dato = date("d/m-y G:i")
mysql_query("DELETE * FROM brugere WHERE DATE_ADD(sidstset,INTERVAL 43200 MINUTE) < NOW()") or die(mysql_error());
?>

- rettet med dit nye tag. Virker denne kode?
Avatar billede webstuff Nybegynder
08. januar 2006 - 19:57 #10
hvorfor har du:
$dato = date("d/m-y G:i")
med?

den skal i øvrigt se sådan ud:
$dato = date("d/m-y G:i");
Avatar billede webstuff Nybegynder
08. januar 2006 - 19:57 #11
Men efter hvad jeg kan se med mine forholdsvis utrænede php øjne, så skulle scriptet virke :-)
Avatar billede webstuff Nybegynder
08. januar 2006 - 20:01 #12
Men du skal sørge for at scriptet bliver udført med jævne mellemrum.. du kan f.eks udføre det hver gang en bruger logger ind..
Men hvis det bare ligger i en fil, som ikke bliver åbnet så virker det ikke..
Avatar billede ridisc Nybegynder
08. januar 2006 - 20:04 #13
Ahva mener du?

Altså den kode jeg lige har lavet den burde da virke? Eller ikke!

Er der ikke nogle derude der er pisse god til PHP som kan hjælpe? Si spasser rundt i det :P
Avatar billede webstuff Nybegynder
08. januar 2006 - 20:05 #14
jeg er ret sikker på at det virker, du kan jo prøve det af, og så bare sætte den til at slette en efter 5 minutter f.eks

mysql_query("DELETE * FROM brugere WHERE DATE_ADD(sidstset,INTERVAL 5 MINUTE) < NOW()") or die(mysql_error());
Avatar billede ridisc Nybegynder
08. januar 2006 - 20:07 #15
Uha så ryger alle brugere :P
Avatar billede webstuff Nybegynder
08. januar 2006 - 20:08 #16
du kunne jo lave en ekstra database ;)
Avatar billede webstuff Nybegynder
08. januar 2006 - 20:08 #17
database = tabel ;o)
Avatar billede ridisc Nybegynder
08. januar 2006 - 20:09 #18
Hmm.. Ja jeg kunne jo lige prøve.. Hmm.
Avatar billede webstuff Nybegynder
08. januar 2006 - 20:22 #19
Virker det :-)
Avatar billede ridisc Nybegynder
08. januar 2006 - 20:30 #20
Hmm... Der skal jo lige gå tid :P
Avatar billede ridisc Nybegynder
08. januar 2006 - 20:40 #21
Nå, den sletter ikke!

Hvad gør man så?
Avatar billede webstuff Nybegynder
08. januar 2006 - 20:49 #22
Så laver vi koden om :-D

mysql_query("DELETE * FROM brugere WHERE DATE_ADD(sidstset,INTERVAL 1 MINUTE) > NOW()") or die(mysql_error());

Jeg tror at den burde virke nu, før tjekkede den om der var mindre end 5 min imellem.. den skal jo tjekke om der er mere.. :D
Avatar billede ridisc Nybegynder
08. januar 2006 - 20:56 #23
Der sker intet, den sletter ikke.
Avatar billede webstuff Nybegynder
08. januar 2006 - 21:02 #24
hvilken type er feltet 'sidstset' i databasen?
Avatar billede ridisc Nybegynder
08. januar 2006 - 21:03 #25
Date som du sagde.
Avatar billede webstuff Nybegynder
08. januar 2006 - 21:08 #26
LOL!!!!
mysql_query("DELETE FROM brugere WHERE DATE_ADD(sidstset,INTERVAL 1 MINUTE) < NOW()") or die(mysql_error());

Prøv den, jeg kom til at sige DELETE * FROM, det skulle jo være DELETE FROM
Avatar billede ridisc Nybegynder
08. januar 2006 - 21:13 #27
Gud det har jeg slet ikke set :P
Avatar billede webstuff Nybegynder
08. januar 2006 - 21:13 #28
Så er det bare spørgsmålet om det virker nu ??
Avatar billede ridisc Nybegynder
08. januar 2006 - 21:16 #29
Nix. Brugeren er ikke slettet.. Selvom det er over en time siden at feltet blev opdateret!
Avatar billede webstuff Nybegynder
08. januar 2006 - 21:16 #30
nu husker du at udføre scriptet ikke?
Avatar billede ridisc Nybegynder
08. januar 2006 - 21:21 #31
Hvad mener du med at udføre?
Avatar billede webstuff Nybegynder
08. januar 2006 - 21:24 #32
scriptet skal sættes igang..

lav evt en fil der ser sådan her ud:

<?
mysql_query('localhost', 'brugernavn', 'kodeord');
mysql_select_db("database");

mysql_query("DELETE FROM brugere WHERE DATE_ADD(sidstset,INTERVAL 1 MINUTE) < NOW()") or die(mysql_error());

echo "Brugere nu slettet";
?>

Du husker vel også at ændre tabel navnet i scriptet ikke?
Avatar billede ridisc Nybegynder
08. januar 2006 - 21:26 #33
Jojo..
Avatar billede ridisc Nybegynder
08. januar 2006 - 21:28 #34
Nu slettede den brugeren.. Hehe. Jeg tror jeg ved hvordan jeg gør sådan at man ikke skal skrive den adresse hele tiden.

Tak for hjælpen.. Smid et svar.
Avatar billede webstuff Nybegynder
08. januar 2006 - 21:30 #35
Puha.. Det var rart! og på tide :-)

Men glad for at jeg kunne hjælpe, jeg lærte også selv noget på det her!

og et svar ;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