Avatar billede thomas_b Nybegynder
26. februar 2008 - 01:31 Der er 17 kommentarer

Lille cookie-script.

Hej...

Jeg skal bruge et script der gør følgende...:

Den skal registere om cokkien: "chat" er gemt på computeren

1. Hvis den ikke findes på computeren skal den genere et 10-cifret tal.
2. Hvis computeren har cookien skal den ikke generere et nyt men bare udskrive det den allerede har...

Cookien må gerne indstilles til at udløbe 1 år efter aktivering!
Avatar billede olebole Juniormester
26. februar 2008 - 02:42 #1
<ole>

function setCook() {
    var oExp = new Date(), nVal = Math.round(Math.random()*10000000000),
    nNewTime = oExp.getTime() + (1000*60*60*24*365);
    oExp.setTime(nNewTime);
    if ( navigator.cookieEnabled ) {
        document.cookie="chat="+nVal+";expires=" + oExp.toGMTString();
    }
}
function checkCook() {
    if (!navigator.cookieEnabled) return;
    if (document.cookie.indexOf("chat=")!=-1) {
        var aVal = document.cookie.split("chat=");
        if (aVal.length>1) {
            var nVal = aVal[1].split(";")[0];
            alert("Gør, hvad du vil med nVal her: " + nVal);
        }
        else setCook();
    }
    else setCook();
}
checkCook();

/mvh
</bole>
Avatar billede olebole Juniormester
26. februar 2008 - 02:44 #2
- og da setCook jo aldrig bliver afviklet, hvis cookies ikke er enabled, kan den bare se sådan ud:

function setCook() {
    var oExp = new Date(), nVal = Math.round(Math.random()*10000000000),
    nNewTime = oExp.getTime() + (1000*60*60*24*365);
    oExp.setTime(nNewTime);
    document.cookie="chat="+nVal+";expires=" + oExp.toGMTString();
}
Avatar billede olebole Juniormester
26. februar 2008 - 02:53 #3
- eller en sjov lille konstruktion, så den afvikler sig selv:

(function() {
    if (!navigator.cookieEnabled) return;
    if (document.cookie.indexOf("chat=")!=-1) {
        var aVal = document.cookie.split("chat=");
        if (aVal.length>1) {
            var nVal = aVal[1].split(";")[0];
            alert("Gør, hvad du vil med nVal her: " + nVal);
        }
        else setCook();
    }
    else setCook();
   
    function setCook() {
        var oExp = new Date(), nVal = Math.round(Math.random()*10000000000),
        nNewTime = oExp.getTime() + (1000*60*60*24*365);
        oExp.setTime(nNewTime);
        document.cookie="chat="+nVal+";expires=" + oExp.toGMTString();
    }
})();
Avatar billede thomas_b Nybegynder
26. februar 2008 - 03:00 #4
hvad hedder det den streng som jeg for tallet ud i ? "oExp" ??
Avatar billede olebole Juniormester
26. februar 2008 - 03:23 #5
nVal
Avatar billede olebole Juniormester
26. februar 2008 - 03:23 #6
alert("Gør, hvad du vil med nVal her: " + nVal);
Avatar billede thomas_b Nybegynder
26. februar 2008 - 12:08 #7
Den siger 'nVal' er ikke difeneret når jeg prøver trække den ud.. !
Avatar billede roenving Novice
26. februar 2008 - 13:18 #8
-- og lige detaljen med de ti cifre kan heller ikke garanteres med den aktuelle kode (men de vil jo være der i ca. 90% af tilfældene !-)

-- og så bør det være Math.floor i stedet for Math.round, men det skulle ikke forhindre tingene i at virke ...
Avatar billede thomas_b Nybegynder
26. februar 2008 - 14:33 #9
roenving> kan du se fejlen...? :)
Avatar billede olebole Juniormester
26. februar 2008 - 16:52 #10
thomas_b >> Der er ingen fejl omkring nVal's eksistens. Bliver den ikke sat, er det fordi, du gør noget forkert - eller fordi, du har disabled cookies  :)

- og så har roenving ret i det med de 10 ciffre. Det kunne du f.eks. komme udenom med:
    nVal = String(Math.random()*10000000000).replace(".","").substring(0,10)
Avatar billede thomas_b Nybegynder
30. marts 2008 - 23:29 #11
Det er dette script der ikke helt fungere...!

(function() {
    if (!navigator.cookieEnabled) return;
    if (document.cookie.indexOf("chart=")!=-1) {
        var aVal = document.cookie.split("chart=");
        if (aVal.length>1) {
            var nVal = aVal[1].split(";")[0];
        }
        else setCook();
    }
    else setCook();

    function setCook() {
        var oExp = new Date(), nVal = Math.round(Math.random()*10000000000),
        nNewTime = oExp.getTime() + (1000*60*60*24*365);
        oExp.setTime(nNewTime);
        document.cookie="chart="+nVal+";expires=" + oExp.toGMTString();
    }
})();

x1=(window.screen.width)+"x"+(window.screen.height);
x2=(escape(document.referrer));
x3=(escape(document.location));
x4=(escape(navigator.browserLanguage));
x5=(escape(navigator.appName));
urll="<a href='?id="+id+"' target='_blank'><img src='?id="+id+"&x1="+x1+"&x2="+x2+"&x3="+x3+"&x4="+x4+"&x5="+x5+"&x6=90.184.66.229&x7="+nVal+"' border='0'></a>";
document.write(urll);
Avatar billede olebole Juniormester
31. marts 2008 - 00:35 #12
Nej, det er klart. Variablen er jo erklæret i et lukket scope. Prøv:

var nVal;
(function() {
    if (!navigator.cookieEnabled) return;
    if (document.cookie.indexOf("chart=")!=-1) {
        var aVal = document.cookie.split("chart=");
        if (aVal.length>1) {
            nVal = aVal[1].split(";")[0];
        }
        else setCook();
    }
    else setCook();

    function setCook() {
        var oExp = new Date(), nNewTime = oExp.getTime() + (1000*60*60*24*365);
        oExp.setTime(nNewTime);
        nVal = Math.round(Math.random()*10000000000);
        document.cookie="chart="+nVal+";expires=" + oExp.toGMTString();
    }
})();

x1=(window.screen.width)+"x"+(window.screen.height);
x2=(escape(document.referrer));
x3=(escape(document.location));
x4=(escape(navigator.browserLanguage));
x5=(escape(navigator.appName));
urll="<a href='?id="+id+"' target='_blank'><img src='?id="+id+"&x1="+x1+"&x2="+x2+"&x3="+x3+"&x4="+x4+"&x5="+x5+"&x6=90.184.66.229&x7="+nVal+"' border='0'></a>";
document.write(urll);
Avatar billede thomas_b Nybegynder
31. marts 2008 - 16:28 #13
et var lige det jeg manglede... :) lægger du et lille svar :))
Avatar billede thomas_b Nybegynder
01. april 2008 - 00:04 #14
fungere det sådan så hvis brugeren ikke understøtter cokkie's så generere den bare et nyt nummer hver gang han loader ?

Kunne dette ikke undgå's ved at sætte en if op med understøttelse af cokkie?  hvordan? :D
Avatar billede olebole Juniormester
01. april 2008 - 00:36 #15
Det sker allerede:
    if (!navigator.cookieEnabled) return;
Avatar billede thomas_b Nybegynder
01. april 2008 - 16:01 #16
Jeg kan se nu. at ikke hver gang... men cirka hver 3. for et nyt nummer selvom de har et i forvejen... og ved de andre virker det fint...!
Avatar billede thomas_b Nybegynder
06. april 2008 - 10:02 #17
olebole... Er der en anden måde at gøre dette på, hvor den ikke laver det lille nummer der :)
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