21. august 2000 - 21:28Der 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?
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)
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!
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
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.
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.
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(
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.
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!?
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.
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...
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!
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...
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?
Synes godt om
Ny brugerNybegynder
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.