Avatar billede detnemt Nybegynder
08. januar 2003 - 13:45 Der er 11 kommentarer

Cookie, sidste besøg og en anden side er opdateret

Er det muligt at lave en side (med HTML og JavaScript) som kan fortælle brugeren hvornår brugeren sidst var på siden og hvornår en underliggende side er opdateret??

Eks. Dit seneste besøg var d. 08. jan. 2003 kl. 13:40, EnEllerAndenSide er opdateret siden dit seneste besøg.

Er det sådan nogenlunde forståeligt?? Jeg regner med, at der skal bruges cookie, men jeg er ikke en guro på dette område, et eksempel ville være perfekt.

/Kim.n
Avatar billede Slettet bruger
08. januar 2003 - 16:01 #1
Hm, du kan sagtens lagre information om, hvornår brugeren sidst har været på siden, men for at aflæse den sidste opdatering af et dokument, kræver det, at dette dokument er tilgængelig i en (evt. skjult) frame eller en popup... Er det OK?
Avatar billede detnemt Nybegynder
09. januar 2003 - 08:09 #2
En skjult frame kan godt bruges, hvis det er det der skal til, men ikke en popup.
Avatar billede Slettet bruger
09. januar 2003 - 18:08 #3
Sæt dette i body på din test-side:

<iframe src="siden_der_maaske_er_opdateret.html" width="0" height="0" frameborder="0" style="display: none;" name="ifr"></iframe>
<script>
if (document.cookie == "")
document.write("Dette er dit første besøg på siden!");
else {
sb = new Date(document.cookie.split("=")[1]);
lm = new Date(document.ifr.document.lastModified);
str = "Dit seneste besøg var d. " + sb.getDate() + "/" + (sb.getMonth() + 1) + "-" + sb.getFullYear() + " kl. " + ((sb.getHours() < 10) ? "0" + sb.getHours() : sb.getHours()) + ":" + ((sb.getMinutes() < 10) ? "0" + sb.getMinutes() : sb.getMinutes()) + ". ";
if (sb.getTime() < lm.getTime())
document.write(str + "Siden har været opdateret siden da.");
else
document.write(str + "Siden har ikke været opdateret siden da.");
}
nu = new Date();
document.cookie = "sidsteBesoeg=" + nu.toGMTString();
</script>
Avatar billede detnemt Nybegynder
10. januar 2003 - 11:58 #4
Når jeg indsætter koden, ser det rigtigt ud første gang siden læses, næste gang står der:
Dit seneste besøg var d. NaN/NaN-NaN kl. NaN:NaN. Siden har ikke været opdateret siden da.

Skal der lidt kode på siden_der_maaske_er_opdateret.html således at cookien ved hvornår lastModified er??
Avatar billede Slettet bruger
10. januar 2003 - 16:43 #5
Nej. Det virkede fint nok på min com, så hvis du vil smide et link, kan jeg se på det.
Avatar billede detnemt Nybegynder
30. januar 2003 - 11:33 #6
Til at starte med, vil jeg sige undskyld fordi jeg ikke har besvaret sidste kommentar.... jeg har ikke haft tid..

Det du <phoenixv> havde lavet virkede fint, så længe jeg kørte det på min com, men så snart det blev uploadet gik det galt. Dit eksempel lagde heller ikke en cookie ned på pc´en og så kan man jo ikke logge sidste besøg hvis browseren har været lukket ned..

Nedenstående eksempel virker...næsten, det der skulle hente sidste besøg, henter tiden hvor siden loades og altså ikke foregående besøg. Kan du (eller en anden) fortælle mig hvad der skal ændres?? Det er noget kode jeg har fundet..

<html>

<head>
<title>New Page 1</title>

<SCRIPT LANGUAGE = "JavaScript">
<!-- Begin Script

var expDays = 30;
var exp = new Date();
exp.setTime(exp.getTime() + (expDays*24*60*60*1000));

function When(info){
    // When
            var rightNow = new Date()
        var WWHTime = 0;
        WWHTime = GetCookie('WWhenH')
       
        WWHTime = WWHTime * 1

        var lastHereFormatting = new Date(WWHTime);  // Date-i-fy that number
            var intLastVisit = (lastHereFormatting.getYear() * 10000)+(lastHereFormatting.getMonth() * 100) + lastHereFormatting.getDate()
            var lastHereInDateFormat = "" + lastHereFormatting;  // Gotta use substring functions
            var dayOfWeek = lastHereInDateFormat.substring(0,3)
            var dateMonth = lastHereInDateFormat.substring(4,10)
        var hours = "" + lastHereFormatting.getHours()
        var year = lastHereFormatting.getYear()
                if (year < 1000) year+=1900
        var minutes = "" + lastHereFormatting.getMinutes()
        if (minutes.substring(0,1) == minutes){
            minutes = "0" + minutes
        }

            var WWHText = rightNow.toGMTString() //display
   
        SetCookie ("WWhenH", rightNow.getTime(), exp)

    return WWHText;
}

function Count(info){
    var psj=0;
    // How many times
        var WWHCount = GetCookie('WWHCount')
        if (WWHCount == null) {
            WWHCount = 0;
        }
        else{
            WWHCount++;
        }
        SetCookie ('WWHCount', WWHCount, exp);


    return WWHCount+1;
}



function set(){
    SetCookie ('WWHCount', 0, exp);
    SetCookie ('WWhenH', 0, exp);
}

function getCookieVal (offset) { 
    var endstr = document.cookie.indexOf (";", offset); 
    if (endstr == -1)   
        endstr = document.cookie.length; 
        return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) { 
    var arg = name + "="; 
    var alen = arg.length; 
    var clen = document.cookie.length; 
    var i = 0; 
    while (i < clen) {   
    var j = i + alen;   
    if (document.cookie.substring(i, j) == arg)     
        return getCookieVal (j);   
        i = document.cookie.indexOf(" ", i) + 1;   
        if (i == 0) break; 
    } 
    return null;
}

function SetCookie (name, value) { 
    var argv = SetCookie.arguments; 
    var argc = SetCookie.arguments.length; 
    var expires = (argc > 2) ? argv[2] : null; 
    var path = (argc > 3) ? argv[3] : null; 
    var domain = (argc > 4) ? argv[4] : null; 
    var secure = (argc > 5) ? argv[5] : false; 
    document.cookie = name + "=" + escape (value) +
    ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
    ((path == null) ? "" : ("; path=" + path)) + 
    ((domain == null) ? "" : ("; domain=" + domain)) +   
    ((secure == true) ? "; secure" : "");
}

function DeleteCookie (name) { 
    var exp = new Date(); 
    exp.setTime (exp.getTime() - 1); 
    // This cookie is history 
    var cval = GetCookie (name); 
    document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();

}
//  End Script -->
</SCRIPT>

<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
</head>

<body>

<p>&nbsp;</p>

<p>&nbsp;</p>

<h1 align="center">Side 1</h1>

<p>&nbsp;</p>

<iframe src="<Den anden side>.htm" width="0" height="0" frameborder="0" style="display: none;" name="ifr"></iframe>

<script>
llm = new Date(document.ifr.document.lastModified);
lm = llm.getTime();

tidx = new Date(When());

tidxx = tidx.getTime();
str  = "Dit seneste besøg var d. " + tidx.getDate() + "/" + (tidx.getMonth() + 1) + "-" + tidx.getFullYear() + " kl. " + ((tidx.getHours() < 10) ? "0" + tidx.getHours() : tidx.getHours()) + ":" + ((tidx.getMinutes() < 10) ? "0" + tidx.getMinutes() : tidx.getMinutes()) + ":" + ((tidx.getSeconds() < 10) ? "0" + tidx.getSeconds() : tidx.getSeconds()) + ". ";
alert(tidxx-lm);
if ((tidxx-lm) < 0)
document.write(str + "<Den anden side> er opdateret siden dit sidste besøg.")
else
document.write(str + " <Den anden side> er ikke opdateret siden sidste besøg.");
</script>

</body>
</html>

/Kim.n
Avatar billede Slettet bruger
01. februar 2003 - 15:17 #7
Lad os nu lige arbejde videre med min kode, for den ved jeg virker. Prøv at smide et link til den side, hvor det går galt.
Avatar billede detnemt Nybegynder
03. februar 2003 - 10:01 #8
På denne side: http://det_nemt.subnet.dk/test/side1.htm har jeg lagt et testside ud. her står der hele tiden: "Dette er dit første besøg på siden".
Det er ikke her cookien skal bruges, men kommer det til at virke her, virker det vel også det andet sted.
Avatar billede Slettet bruger
03. februar 2003 - 15:58 #9
Hvilken browser bruger du? I IE6 virker det fint.
Det skal lige rettes til, hvis det skal virke i andet end IE.
Avatar billede detnemt Nybegynder
03. februar 2003 - 16:13 #10
Det skal bruges på IE 5.5

/Kim
Avatar billede Slettet bruger
04. februar 2003 - 16:35 #11
Det skulle også meget gerne virke i IE5.5.
Prøv at gå inde på denne side:
http://www.phoenixv.dk/exp/side_opdateret.html
Måske oplever du lidt problemer med "siden har været opdateret siden da", men datoen skulle meget gerne være korrekt!
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