Avatar billede sorenmh Nybegynder
21. august 2000 - 21:28 Der er 25 kommentarer og
2 løsninger

Auto logud efter noget tid

Jeg har programmeret et brugersystem, som er implementeret i en MySQL database...
Når folk logger ind så checker scriptet ip\'en og gemmer den i db\'en samtidig sætter den \"aktiv\" til 1.
Jeg har lavet et logud script også, men det skal aktiveres manuelt.

Hvordan laver jeg et script som selv logger en bruger ud efter 20 minutters inaktivitet?
Avatar billede mpj Nybegynder
21. august 2000 - 21:31 #1
Jeg tror jeg kan lave det i javascript...
Men det bliver ikke så flot...
Men nu har du tilbuddet hvis du får brug for det!
Avatar billede morw22 Nybegynder
21. august 2000 - 21:37 #2
gem desuden et timestamp i database, så du ved hvornår brugeren sidst har været aktiv.

Så kan du lave en cronjob der køres hver 5 min og sætter dem der ikek har været aktive til 0 igen.
Avatar billede jd Nybegynder
21. august 2000 - 21:38 #3
normalt sætter man vel en cookie, men det passer vel ikke helt ind i dit system, da jeg regner med at det med \"aktiv\" 1 går ud på at man skal kunne se hvem der er online...?
Et alternativ, kunne vel være at man ved hjælp af javascript, fik et lille vindue til at poppe op når man forlader siden, med en kode sletter udfører dit logud script! -men dette ser dog noget amatør agtigt ud!

Ellers ved jeg det sq ikke, du må vel til de hårde gutter... :o)

/Jon@z
Avatar billede mpj Nybegynder
21. august 2000 - 21:46 #4
jd>>

Ja... det var min løsning den med vinduet...
Det ser da meget smagsfuldt ud... *LOL*
Avatar billede morw22 Nybegynder
21. august 2000 - 21:49 #5
En clientside løsning holder ikke, da man ikke kan være sikker på en det script bliver kørt
Avatar billede sorenmh Nybegynder
21. august 2000 - 22:10 #6
morw22 -> Jeg tror at det er lidt dit svar jeg fisker efter. Hvad er et cronjob og hvordan bruger jeg det?
Avatar billede jd Nybegynder
21. august 2000 - 22:15 #7
sorenmh-> cronjob er et program der tillader dig at udføre et \"job\" på et bestemt tidspunkt... det skal vel og mærket være understøttet på dit webhotel!

/Jon@z
Avatar billede morw22 Nybegynder
22. august 2000 - 14:37 #8
sorenmh  >>

Virker kun hvis du har shell adgang eller hvis du kan overtale dit webhotel til at sætte det op.

prøv man crontab via shell
Avatar billede lojmann Nybegynder
22. august 2000 - 18:55 #9
Hvis du bruger cookie, og i toppen af ALLE dokumenter tjekker om indholdet af kagen stemmer overens med user/pass i MySQL DB\'en, sæt f.eks time i kagen til 3600, dvs. en time :) Se på: http://www.dk.php.net/manual/function.setcookie.php
Avatar billede sorenmh Nybegynder
23. august 2000 - 10:13 #10
Jeg har givet jer begge point. Fordi at det var jd\'s svar jeg fiskede efter. Men mit webhotel tilbyder ikke den funktion.
Jeg bliver nød til at benytte cookie løsningen, men det er jo ikke alle der bruger cookies og hvis man sidder ved en offentlig computer, så er det jo knap så fedt.
Avatar billede sorenmh Nybegynder
23. august 2000 - 12:34 #11
Er det muligt at få en cookie til at udføre en handling ved expire?
Min cookie skulle jo helst slette noget fra databasen ved autologud.
Avatar billede morw22 Nybegynder
23. august 2000 - 12:50 #12
En cookie kan ikke gøre andet end at gemme nogle oplysninger. Når det er tid til expire \"dør den\".

Så du blive nødt til selv at checke om cookien er der.

Men hvad med dem der ikke bruger cookies?

Småkager lugter. ;-D
Avatar billede sorenmh Nybegynder
23. august 2000 - 15:37 #13
Det mente jeg nok...
Ja cookies er pisse irriterende, men jeg ved jo ikke hvordan jeg ellers skal logge folk ud.
Avatar billede sorenmh Nybegynder
23. august 2000 - 15:40 #14
Men, jeg behøver jo nok nærmest ikke nogen database registrering ved login...
Avatar billede sorenmh Nybegynder
23. august 2000 - 15:41 #15
...Hvis jeg altså bruger cookies... Sikkerheden er bare ikke særlig stor, f.eks. hvis man sidder ved en andens pc
Avatar billede sorenmh Nybegynder
23. august 2000 - 15:45 #16
Jeg fik lige en ide... kan man ikke blande et javascript ind som siger: \"OnLeave udfør en PHP funktion\"? Så kunne jeg jo få den til at slette brugeren fra databasen.
Avatar billede jd Nybegynder
23. august 2000 - 16:27 #17
sorenmh-> det kan ikke lade sig gøre, da du ikke kan køre en kode som er i en side som lige er lukket ned... du kan kun gøre det ved at lave en javascript der åbner et nyt vindue som udfører kommandoen, og derefter lukker sig selv! :o(

/Jon@z
Avatar billede sorenmh Nybegynder
23. august 2000 - 22:11 #18
jd-> Jeg har tjekket det, der er en funktion der hedder onunload() den kører en funktion ved unload, problemet er bare nu, at jeg ikke rigtigt kan komme til at køre andet end HTML og javascript kommandoer i funktionen. Jeg vil gerne kunne køre nogle PHP.
Avatar billede jd Nybegynder
24. august 2000 - 09:28 #19
sorenmh-> nu skal jeg da heller ikke gøre mig for klog på javascript! -for det er jeg ikke! :o)
Men hvorfor kan du ikke køre noget php? -det kan da vist ikke passe!?

/Jon@z
Avatar billede sorenmh Nybegynder
24. august 2000 - 09:45 #20
har fået det til at virke... nu er problemet så bare, at det kun skal være hvis man forlader sitet og ikke kun siden. Jeg bliver vel nød til at oprette en unsynlig frame.
Avatar billede pilehave Nybegynder
27. november 2000 - 14:00 #21
Tænk at anbefale at lave et cron job! Er du klar over hvad det koster hver gang du kører det hos de fleste udbydere??? Og så hvert 5 min!?
Avatar billede jd Nybegynder
27. november 2000 - 20:52 #22
pilehave-> Har du da en bedre løsning siden du sådan kæfter op?
Avatar billede r_brejnholt Nybegynder
27. november 2000 - 21:19 #23
Kan man ikke indirekte få javascript til at køre noget php-kode gennem f.eks. en swap-img function - hent et img.php billede, og altså uden popup-vidue, og uden reloadhalløjsa, bare ved at generere et 1x1 billede kører en mysql_query? -
efter at man i javascript har lavet en eller anden timeout-function.
nåh ja - lidt lappeløsningsagtigt bliver det jo nok...
Avatar billede pilehave Nybegynder
28. november 2000 - 08:54 #24
jd> Du skal sq da bare sætte en cookie, der bliver opdateret hver gang brugeren går videre på siden! Så laver man en funktion der tjekker tidsstemplingen i cookien, og hvis den er 5 min. ældre en akt. tid, så udfør funktion $logout.
På den måde kunne man aut. blive logget af efter 5 min, medmindre man laver noget på siden!
Avatar billede jd Nybegynder
28. november 2000 - 16:56 #25
øhh?? Hvordan vil du checke det timestamp hvis brugeren bare lukker browseren ned? Så står han måske stadig til at være online et-eller-andet sted!!

Problemet er jo nettop at serveren selv skal checke hvem der er online, uden at brugeren skal surfe videre rundt på sitet!
Avatar billede r_brejnholt Nybegynder
28. november 2000 - 22:43 #26
Hvis nu man lavede en timout-function i javascript, som via før omtalte lappeløsningsmodel med en swapimg function rapporterede til et php-script på serveren hvert 5. min.
Så kunne serverscriptet: Opdatere klientens timestamp brugerstatus i mysql-databasen + Slette alle brugere, hvis timestamp var udløbet...
- Men så igen.. Hvem gider have at en side skal ud og bryde f.eks. en timeout function på en router eller alm. IE-opkoblingstimout, så brugeren er nødt til at betale konstant for at se på siden...
Avatar billede r_brejnholt Nybegynder
28. november 2000 - 22:48 #27
Selvkritik:
Man skal i hvertfald passe på ikke at rapportere til serveren alt for tit - for så bliver det både \"træls\" for klient og server: Klienten føler at siden aldrig bliver færdig med at loade og serveren belastes konstant af i realiteten unødige kørsler. Men med så store tidsmargener som 20 min som du (->sorenmh) foreslår, gør vel ingen skade?
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