skå måske lige siges at det eksempel på min side ik virker.. jeg har ik lagt databaserne i den rigtige mappe kun så i kan se hvordan det ser ud og hvad jeg mener
Jeg kan slet ikke åbne din side (den timer ud), så jeg kan ikke se præcist hvad du mener. Men ud fra beskrivelsen er jeg næsten sikker på, at jeg ved hvad du mener :-)
Du har faktisk udelukket den eneste reelle alternative løsning der er; Session_OnEnd i global.asa. Du har ret i, at der er nogle problemer med at anvende dette, specielt hvis du anvender Access og endnu mere hvis din side kører på IIS4 (NT4).
Kører du derimod med eks. MySQL el. SQL Server på IIS5, er det en helt anden historie. Jeg har endnu aldrig oplevet problemer med funktionerne i global.asa på denne platform.
Du har jo bare et problem, hvis brugeren ikke logger ud og bare lukker browseren. Men hvis du ikke vil bruge global.asa, kan du jo nortere dig tidspunktet for brugerens login i DB'en, og så automatisk sætte vedkommendes status til "0" efter fx. 20 min, som en session som standard varer...
Den fremgangsmetode bruger jeg selv, da jeg ikke kunne få (Access) databasen til at opdatere i Session_OnEnd. Formentlig samme problem, du selv har. Selvfølgelig er det mere elegant at gøre det i din asa-fil, men den anden metode er nu også rimelig pålidelig.
oasen >> den er faktisk mere pålidelig. Den har kun 2 problemer:
1 Den optager server resourcer (ikke aktuelt på mindre sites)
2 Noget skal eksekvere opdateringen server-side. Dette er ofte et problem, da de fleste anvender et webhotel uden adgang til schedulerede jobs på serveren. De fleste implementerer så rutinen i en eller anden ASP side på deres site, men det giver en del overhead, da checket så udføres hver gang denne side vises.
... oasen kom med et godt bud der.. det har jeg selv tænkt på.. men hvordan updater man en kolone i et tabel..
1 = online 0 = offline
det er nemlig mit eneste problem .. hvis folk bare lukker browseren..
tilbage til global.asa nej.. jeg gider ik alle jeres mysql og bla bla.. jeg har prøvet 34000 8889 gange uden held.. tror sku ik min webhost understøtter det..
så derfor laver jeg det i en database..
det er rigtigt min side lige var nede.. den er oppe nu :D
Du kan lege lidt videre med dette og tilpasse det dine behov:
XMinAgo = DateAdd("n", -5, Now())
Conn.Execute("Update DinTabel set Status = '0' Where SidsteLogin < '" & XMinAgo & "' And Status = '1'")
Du har formentlig en side, der viser alle brugerne og deres aktuelle status. Det ville som nævnt nok være det mest oplagte blot at indsætte ovenstående der, ved mindre det er en side med flere hundrede samtidige brugere...
Alternativt kan du også lade et lille popup-vindue åbne ved onBlur (når brugeren forlader din side), hvor du kan udføre den nødvendige kode. Men så har du igen et problem, hvis brugeren har deaktiveret JavaScript...
Du kan enten vælge at sætte denne kode på siden, hvor brugeren logger ind eller indsætte den vha. SSI på hver eneste side. Sidstnævnte er klart det mest præcise, men også det, der belaster serveren mest, da den skal lave en opdatering hver gang en bruger, anmoder om en side.
eller http://www.emingos.dk/asp/users.asp ... jeg har lavet tabel med tid og adder time når en bruger logger ind.. sat koden ind i min users.asp med status osv.. men jeg synes ik den opdater dem .. selvom den ik laver fejl
Nå, du gemmer den i amerikansk tidsformat kan jeg se. Har du husket at lave kolonnen til typen dato? Ellers kan den ikke sammenligne værdierne og opdaterer derfor ikke.
2002 06 30 06 05 25 = År, Måned, Dag, Time, Minut, Sekund
Men det var bare et alternativ, hvis du ikke kunne få din "dato-kolonne" til at fungere. Skriver du datoen på den form, kan du også lægge den ind i et tekst/nummer-felt, så der stadig kan sorteres korrekt.
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.