/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Cookie sjov og ballade
Fra : Allan Schuster Bach


Dato : 21-04-04 23:57

Jeg sidder og pusler med det temmeligt dumt problem, som jeg ikke rigtig kan
få hul på.

Jeg har noget client javascript, som laver en cookie. På min hjemme server
ser cookien således ud

Valg=Baggrund; ASP.NET_SessionId=0unb5055iyofbxbfg53shm45

men på mit webhotel ser der således ud

ASP.NET_SessionId=q00hxu55a2hdwineyqabiv55; Valg=Baggrund


Der er selvfølgelig forskel på ASP.NET_SessionId, men bemærk, at min egen
cookie stå først på min hjemme server, og sidst på mit webhotel??

Jeg har så brygget et Javascript sammen, som skulle tage højde for dette.
Det virker fint på hjemmeserveren, men ikke på webhotellet.

Er der nogen måde, hvorpå man kan få cookien til at være i samme rækkefølge
?

Det kan ses på http://212.242.63.213/schuster og www.schuster.dk

Foreslag til hvordan jeg kan undgår denne problemstilling

Bach



 
 
Kim Bach Petersen (22-04-2004)
Kommentar
Fra : Kim Bach Petersen


Dato : 22-04-04 07:30

Allan Schuster Bach wrote:

> Jeg har noget client javascript, som laver en cookie. På min hjemme
> server ser cookien således ud
> Valg=Baggrund; ASP.NET_SessionId=0unb5055iyofbxbfg53shm45
> ASP.NET_SessionId=q00hxu55a2hdwineyqabiv55; Valg=Baggrund
> Er der nogen måde, hvorpå man kan få cookien til at være i samme
> rækkefølge ?

Hvorfor er rækkefølgen vigtig?

Cookies ligger som key-value-par og hvis du skal bruge værdien for en
bestemt key, kan du blot slå op under denne.

// Hent cookies
var c = document.cookie;
// Find nøglen Valg
var pos = c.indexOf("Valg=");
// Tjek om nøglen findes
if (pos != -1){
// Find starten på value
pos += 5;
// Find slutningen på value
var end = c.indexOf(";",pos);
if (end==-1){end=c.length};
// Hent value og afkod den
var value = unescape(c.substring(pos,end));
};

Kim
--
http://dotnet.kensho.dk



Allan Schuster Bach (22-04-2004)
Kommentar
Fra : Allan Schuster Bach


Dato : 22-04-04 11:29

> Hvorfor er rækkefølgen vigtig?

Rækkefølgende er nu heller ikke special vigtig, jeg under mig bare en del
over det. Og måske er det vigtig allligevel!. Men hvorfor bliver der byttet
om på dem?
>
> Cookies ligger som key-value-par og hvis du skal bruge værdien for en
> bestemt key, kan du blot slå op under denne.

Nemmelig, jeg har derfor lavet dette script

if (document.cookie.split("=")[1] !=''){
// Indlæs cookien i en variable
var CookieInd = document.cookie;
var kontrol = 0;

// Cookie bliver nu splittet op ved ;
var SplitCookie = CookieInd.split(";");
for (m in SplitCookie ){
var temp = SplitCookie[m].split("=");
for (i in temp){
if (kontrol == 1){
VisNu(temp[i]);
kontrol = 0;
}
if (temp[i] == "Valg"){
kontrol = 1; }
}
}
}

Det som så "pisser" mig total af er, at ovenstående script virker på min
hjemmeserver, men ikke på mit webhotel, og at jeg ikke kan finde fejlen. Nu
vil så lige prøve dit script, for at se om det måske skulle virker

Bach



Kim Bach Petersen (22-04-2004)
Kommentar
Fra : Kim Bach Petersen


Dato : 22-04-04 12:24

Allan Schuster Bach wrote:

> Rækkefølgende er nu heller ikke special vigtig, jeg under mig bare en
> del over det. Og måske er det vigtig allligevel!. Men hvorfor bliver
> der byttet om på dem?

Det ved jeg ikke.

> Nemmelig, jeg har derfor lavet dette script
> [...]
> Det som så "pisser" mig total af er, at ovenstående script virker på
> min hjemmeserver, men ikke på mit webhotel, og at jeg ikke kan finde
> fejlen.

Fejlen skyldes, at dit script ikke tager højde for rækkefølgen. Du tager
cookie-strengen og laver et split, det giver henholdsvis:

Valg=Baggrund
ASP.NET_SessionId=0unb5055iyofbxbfg53shm45

ASP.NET_SessionId=q00hxu55a2hdwineyqabiv55
Valg=Baggrund

Bemærk her, at anden cookie i begge tilfælde starter med et mellemrum. På
dit webhotel giver andet split derfor en key, der hedder " Valg" og ikke
"Valg".

Scriptet virker således kun når din cookie kommer først, men det skulle let
kunne justeres ved at split'te så mellemrummet fjernes:

var SplitCookie = CookieInd.split(/;\s/);

Kim
--
http://dotnet.kensho.dk



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste