Toon posts:

[JS & ASP] sessies

Pagina: 1
Acties:

Verwijderd

Topicstarter
hoi,

Ik heb en javascripje gemaakt waarmee de resterende tijd van een asp-sessie wordt getoond javascriptje werkt als volgt in de header staat de code en bij het laden van de body wordt de functie aangeroepen.
Er word nu een balkje getoond onderaan het scherm en dat werkt prima loopt mooi de tijd van de sessie af.

Als de tijd in javascript verstreken is zou dus de sessie moeten zijn afgelopen. Dit is echter niet het geval de sessie is niet afgelopen.

Kan het zijn dat de javascript functie de sessie in leven houd?

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ik weet niet hoe sessies precies werken, maar als deze serverside zijn zal javascript hier zowiezo niets mee te maken hebben. Het lijkt me zowiezo sterk want hoe zou javascript met je sessie in asp in contact moeten komen ? Zou trouwens ook wel een hele eenvoudige hack zijn :P

Misschien kun je een deel van je script(s) posten :?

[ Voor 10% gewijzigd door r0bert op 18-12-2002 10:30 ]


Verwijderd

Topicstarter
dit is het script
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var tijd = new Date();

function sessie_timeOut() {
    var t = new Date();
    var verschil = new Date();
    verschil.setMinutes(t.getMinutes()-tijd.getMinutes());
    verschil.setSeconds(t.getSeconds()-tijd.getSeconds());
    var min = verschil.getMinutes();
    var sec = verschil.getSeconds();

    document.all.balk.width=  Math.round(60-(((min*60)+sec)));
    document.all.balkPassed.width = 60-document.all.balk.width
    window.setTimeout("sessie_timeOut()", 60);
}

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Volgens mij moet je nog eens goed gaan bestuderen wat sessies nu precies zijn :)

Het minste wat je in jouw geval kan doen is nadat je JS-sessie timertje is afgelopen een redirect doen (zichtbaar of onzichtbaar in bv iframe), waarin je de sessie serverside leegt.

Eigenlijk P&W, maar daar krijg je direct een slotje.. terwijl ik best benieuwd ben naar waarom jij dacht dat bovenstaande zou gaan werken :)

[ Voor 22% gewijzigd door Bosmonster op 18-12-2002 15:41 ]


Verwijderd

nou ben ik niet echt een js n00b, maar ik zit al 5 minuten te staren naar de code..... :{

ik snap de werking iig niet... een tip (standaard asp sessies duren 20 minuten, en gaan in als je de pagina laad ergo: zet je timer op 20 minuten en dan is je sessie waarschijnlijk afgelopen..)

Verwijderd

sessies duren geen 20 minuten, die duren zolang als je op de site actief bent en daarna nog 20 minuten :P

dus dit gaat natuurlijk niet lukken, die oplossing om je sessie actief te killen is wel een mogelijkheid though

Verwijderd

Topicstarter
Waarom denken jullie dat het niet werkt

het werkt nu gewoon hoor

deze code staat in de header van mijn pagina's en ik heb de code nu zo aangepast dat de timer afhankelijk is van de session.timeout tijd. Dus bij iedere nieuwe pagina(server request) wordt de timer weer op de session.timeout tijd gezet.

code is nu
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
var tijd = new Date();
function sessie_timeOut() {
    var t = new Date();
    var verschil = new Date();
    verschil.setMinutes(t.getMinutes()-tijd.getMinutes());
    verschil.setSeconds(t.getSeconds()-tijd.getSeconds());
    var min = verschil.getMinutes();
    var sec = verschil.getSeconds();

    document.all.balkPassed.width=  Math.round((((min*60)+sec)/<%=(Session.Timeout*60)%>)*100);
    document.all.balk.width = 100-document.all.balkPassed.width;
    window.setTimeout("sessie_timeOut()", 5000);
}

ohja balk en balkPassed zijn 2 gifjes.

Dus als deze timer afloopt is de sessie verstreken.

toch bedankt voor de hulp

[ Voor 61% gewijzigd door Verwijderd op 19-12-2002 15:00 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Verwijderd schreef op 19 december 2002 @ 14:53:
Waarom denken jullie dat het niet werkt

het werkt nu gewoon hoor

[...]

Dus als deze timer afloopt is de sessie verstreken.

toch bedankt voor de hulp


Maar als iemand refresht reset de sessie-timer zich weer, want een sessie loopt pas af een x tijdseenheid na de laatste activiteit, niet een x tijdseenheid na de start van de sessie.

Als je nu dus een nieuwe venster start loopt je zogenaamde sessie-timer balkje in je andere venster gewoon door en klopt die tijd niet meer. Dat is het probleem van clientside/serverside combineren.

Verwijderd

Topicstarter
nee het werkt wel want bij het refreshen van de pagina wordt toch ook het js script opnieuw gestart.

Ik zal ff een kleine uitleg geven hoe ik het heb gemaakt. het js-script staat in een header.asp en wordt aangeroepen in een footer.asp.
Deze 2 pagina's worden geinclude bij iedere pagina met andere content. dus bij iedere request voor een andere pagina waarbij de sessie timer wordt gereset wordt ook het timer scriptje opnieuw geladen en heeft deze dus ook weer de tijd van de sessie.

Dit klopt toch of zie ik toch iets over het hoofd?
Want volgens mij werkt tie nu perfect

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Verwijderd schreef op 19 december 2002 @ 15:15:
nee het werkt wel want bij het refreshen van de pagina wordt toch ook het js script opnieuw gestart.

Ik zal ff een kleine uitleg geven hoe ik het heb gemaakt. het js-script staat in een header.asp en wordt aangeroepen in een footer.asp.
Deze 2 pagina's worden geinclude bij iedere pagina met andere content. dus bij iedere request voor een andere pagina waarbij de sessie timer wordt gereset wordt ook het timer scriptje opnieuw geladen en heeft deze dus ook weer de tijd van de sessie.

Dit klopt toch of zie ik toch iets over het hoofd?
Want volgens mij werkt tie nu perfect


Nee werkt prima :) Tenzij je een nieuw venster opent ;) Maar lijkt me detail.

Verwijderd

Topicstarter
heb ik ook al aangedacht bij het openen van een popup of een dialogvenster ofzo
doe ik het volgende dan zet ik de vergelijkings tijd opnieuw.
JavaScript:
1
2
tijd = new Date();
window.showModalDialog(...);


Zo klopt de timer denk 97% ofzo.
100% zal inderdaad moeilijk (of niet haalbaar) zijn omdat de sessie serverside is en js clientside.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Ah :)

Waar ga je het eigenlijk precies voor gebruiken?

Verwijderd

Hey dit is geweldig man.. geen "session timeout" gedoe meer als je de tijd neemt om bijvoorbeeld lappen tekst in te voeren en daar alle tijd voor neemt.
Nu heb je in ieder geval een indicatie van de resterende sessie tijd!

Is het mogelijk dat je de header en footer ook post? ik zou dit nl. graag willen gebruiken! :)

Verwijderd

Verwijderd schreef op 21 december 2002 @ 15:18:
Hey dit is geweldig man.. geen "session timeout" gedoe meer als je de tijd neemt om bijvoorbeeld lappen tekst in te voeren en daar alle tijd voor neemt.
Nu heb je in ieder geval een indicatie van de resterende sessie tijd!

Is het mogelijk dat je de header en footer ook post? ik zou dit nl. graag willen gebruiken! :)
code:
1
Session.Timeout = 480


zo maar een ideetje?!

Verwijderd

Nope, niet voldoende.
Datgene wat aEr_aEr gemaakt heeft is visueel en dus zoveel handiger.

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 21-08 10:46
Ik vind het een beetje nutteloze feature, de gemiddelde bezoeker weet niet eens wat een session is, als het mogelijk is dat gebruikers langer op een bepaalde pagina verblijven dan de ingestelde sessionduur moet je dus gewoon de duur van de session veranderen in plaats van 1 of ander metertje display-en. Veeeeel gebruiksvriendelijker :).
Pagina: 1