Avatar billede 4u2x Nybegynder
20. marts 2005 - 21:49 Der er 23 kommentarer og
2 løsninger

session i JS

hvordan tjekker jeg om der er en session ved navn "joseph" registreret og hva den er sat til?

kunne også godt tænke mig at vide hvordan man registrerer og sletter en session i JS ?  :)
Avatar billede barklund Nybegynder
20. marts 2005 - 23:20 #1
Snakker du om cookies eller "rigtige" serverside sessions?
Avatar billede 4u2x Nybegynder
20. marts 2005 - 23:23 #2
ligesom sessions i asp / php .. går ud fra at JS også har session support ?
Avatar billede barklund Nybegynder
20. marts 2005 - 23:26 #3
JS er clientside - du kan ikke oprette session filer clientside - du kan tilgengæld gemme hvad du vil i cookies, men du skal selv parse objekter og tilsvarende frem og tilbage.

Du kender godt forskellen på clientside og serverside, right?
Avatar billede roenving Novice
20. marts 2005 - 23:31 #4
Hvis sessions fungerer alene ved hjælp af cookies, kan man aflæse dem via javascript, men javascript har ingen direkte understøttelse af den slags, som det også indirekte fremgår af barklunds indlæg !-)
Avatar billede 4u2x Nybegynder
20. marts 2005 - 23:36 #5
barklund > ok.

roenving > hva mener du?
Avatar billede barklund Nybegynder
20. marts 2005 - 23:37 #6
Og da sessions som oftest er tænkt "sikre" overfor at brugeren (der har en session) ikke selv kan manipulere dem (da cookien blot indeholder navnet på en session - selve indholdet ligger på serveren) så kan det ikke laves rent i cookies.

Men du kan godt lave noget session-lignende - men så snakker vi bare helt almindelige cookies. Hvis du er lidt smart, kan du lave dit et session-lignende framework i javascript - hvilket sikkert kan laves ret nydeligt. Men du kan også bare skrive dig en variabel ned i en cookie og læse den igen på næste side.

--
Morten Barklund
Avatar billede roenving Novice
20. marts 2005 - 23:38 #7
Den binding, der er imellem et html-dokument (og dets omgivelser) og javascript, giver direkte adgang til de cookies, som er sat for det pågældende domæne/path via document.cookie, som leverer alle de cookies, som er sat ...
Avatar billede 4u2x Nybegynder
20. marts 2005 - 23:40 #8
hvordan er den "smarte måde"  ...?  :)

vil ikke have cookies som min løsning
Avatar billede barklund Nybegynder
20. marts 2005 - 23:41 #9
Du har kun cookies til rådighed - intet andet.
Avatar billede 4u2x Nybegynder
20. marts 2005 - 23:45 #10
hmm øv...

grunden til at jeg vil have session er fordi:
når session "joseph" er registreret, så skal den IKKE vise noget.

ellers (dvs når den mangler) så skal den vise noget og samtidig registrere session'en "joseph".

hva ville I gøre i min situation?
Avatar billede roenving Novice
20. marts 2005 - 23:47 #11
Lyder netop som en klassisk cookie-ting ...
Avatar billede barklund Nybegynder
20. marts 2005 - 23:50 #12
Men da vi ikke helt forstår din kontekst, så er det ret svært at gætte sig til noget videre.
Avatar billede 4u2x Nybegynder
20. marts 2005 - 23:53 #13
jeg har en ting som kun må udskrives éen gang, og først må komme igen så snart han kommer ind på siden igen.

med ?
Avatar billede barklund Nybegynder
20. marts 2005 - 23:56 #14
Du kan vel bare lave en cookie uden tidsbegrænsning - så er det netop en "session" cookie som de fleste browsere beholder indtil de lukkes ned. Det er sådan både PHP og ASP holder deres sessions.
Avatar billede roenving Novice
20. marts 2005 - 23:56 #15
I javascript kan man sætte en cookie, give den en relativ kort udløbstid, forny den lige inden udløbstiden nås og gensætte den ...

-- men man kan ikke knytte den direkte til noget session-agtigt !-)
Avatar billede roenving Novice
20. marts 2005 - 23:57 #16
-- men uden udløbstid vil den være levende så længe browseren er det ...
Avatar billede 4u2x Nybegynder
21. marts 2005 - 00:04 #17
roenving .. kan du komme med noget kode?  er ikk den store haj til JS
Avatar billede roenving Novice
21. marts 2005 - 00:24 #18
F.eks.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>

<title>Tomt dokument</title>
<script type="text/javascript">
function setSession(){
  if(!document.cookie||document.cookie.indexOf('joseph')==-1){
    //her alertes bare, men du kan jo gøre hvad du vil !-)
    alert('Session sættes');
  }
  var udloeb = new Date(new Date().getTime() + 33 * 1000);//Udløber om 33 sekunder;
  document.cookie = "joseph=true;expires=" + udloeb.toGMTString() + ";path=/";
  setTimeout('setSession()',30000);//sæt den igen inden den udløber
}
setSession();
<script>
<body>

</body>
</html>

-- som klart er et eksempel, som kræver, at det er til rådighed på alle sider ...

-- men hvis du placerer scriptet i en ekstern fil, og linker til det i de aktuelle sider, vil det virke på tværs af sider, som er under samme domæne !-)
Avatar billede 4u2x Nybegynder
21. marts 2005 - 00:30 #19
barklund skrev "Du kan vel bare lave en cookie uden tidsbegrænsning - så er det netop en "session" cookie som de fleste browsere beholder indtil de lukkes ned."

hva ska setTimeout linjen skrives om til ?
Avatar billede roenving Novice
21. marts 2005 - 00:40 #20
Hvis det skal gælde, så længe browseren er åben, kan du fjerne den og de to foregående linjer kan omskrives til:

  }
  document.cookie = "joseph=true;path=/";
}
setSession();

-- men den vil så forblive levende, sålænge browseren er åben, så hvis en bruger åbner browseren ved arbejdstids start, vil den stadig leve, når han lukker computeren ned, når han skal hjem ...

-- men så dør den også (forudsat, at han faktisk lukker computeren og ikke bare sætter den i dvale el. !-)
Avatar billede 4u2x Nybegynder
21. marts 2005 - 00:53 #21
sådanner :)

tak for hjælpen!

nu er jeg så også blevet en tand klogere inde for JS kundskaben :P

lig et svar. begge to... :)
Avatar billede roenving Novice
21. marts 2005 - 00:55 #22
Oki '-)
Avatar billede barklund Nybegynder
21. marts 2005 - 11:53 #23
Jeg gemmer et svar her, så :)
Avatar billede barklund Nybegynder
21. marts 2005 - 16:05 #24
Tak :)
Avatar billede roenving Novice
21. marts 2005 - 23:43 #25
Tak for point ;~}
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