Avatar billede hjep Nybegynder
06. maj 2003 - 13:38 Der er 3 kommentarer

Session/iframe

Vedlægger her koden på to filer. Den første bruger jeg når jeg opretter en vare. Den næste er selve kurven. Planen er jo så at hver gang man opretter en vare bliver den smidt ned i kurven.
Session virker også fint, så længe jeg kører rå htm-filer.
Nu har jeg på en anden server lavet et menusystem (ASP). Derfra henter jeg via IFRAME mine htm-filer.

Nu er det så at det går galt.

Hvis jeg starter op via menusystemet (iframe) gemmer den ikke varerne i kurven.
Hvis jeg starter op uden iframe virker det fint. Hvis jeg derefter går tilbage til IFRAME virker de næste varer også fint. Men jeg kan jo ikke bede kunderne starte op uden menusystemet ved den første vare og derefter kan de hoppe tilbage til systemet igen.

Er IFRAME en dårlig løsning til session.

Her er et udsnit af filerne

Kurv:

function getCookie(name){
    var cname = name + "=";
    var dc = document.cookie;
    if (dc.length > 0) {
        begin = dc.indexOf(cname);
        if (begin != -1) {
            begin += cname.length;
            end = dc.indexOf(";", begin);
            if (end == -1){
                end = dc.length;
            }
            return unescape(dc.substring(begin, end));
        }
    }
    return null;
}


function setCookie(name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape(value) +
    ((expires == null) ? "" : "; expires=" + expires.toGMTString()) +
    ((path == null) ? "" : "; path=" + path) +
    ((domain == null) ? "" : "; domain=" + domain) +
    ((secure == null) ? "" : "; secure");
}

function delCookie (name,path,domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" +
        ((path == null) ? "" : "; path=" + path) +
        ((domain == null) ? "" : "; domain=" + domain) +
        "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}

function goHelpWindow(){
    url_string="Kurvhjaelp.htm"
    GoHjaelp=window.open(url_string,"Select","toolbar=0,directories=no,status=no,resizable=yes,scrollbars=yes,width=230,height=500")
}

//sæt expiration date 14 dage frem (1000ms * 60s * 60min * 24t * 14dg)

var expiration = new Date();
expiration.setTime(expiration.getTime() + 1209600000);


//Hent Cookie og åben vindue hvis 'Hjælp' ikke er set før.

var hent = getCookie('SetTilbudHjaelpFoer');
if (hent == null){
    goHelpWindow();
    setCookie('SetTilbudHjaelpFoer', true, expiration);
}




Vare:
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
}
Avatar billede chriscross Nybegynder
07. maj 2003 - 14:29 #1
Når du starter din aspmenu op, så befinder du dig på ét domæne, de sider du henter ind i din iframe kommr fra et andet domæne. Browseren vil derfor opfatte ovenstående som at du forsøger at sætte en trediepartscookie, hvilket især IE 6.0 ikke som standard accepterer. Du kan, hvis du har IE 6.0, nederst i højre hjørne se et lille rødt øje når en cookie er afvist. Hvis du dobbeltklikker på den kan du se hvorfra den blev forsøgt sat. Er dette problemet, kunne løsningen være at lægge dine html-sider på samme server og i samme domæne som aspmenuen. Ellers skal du til at fortælle dine brugere at de skal tilpasse deres browser til at acceptere trediepartscookies - og det er ikke særlig venligt.

Mvh
Chriscross
Avatar billede hjep Nybegynder
07. maj 2003 - 21:13 #2
Det lyder skidt. Mine html dokumenter ligger på en dominoserver, hvilken ikke er gode venner med asp. Da html filerne er en del af et større bagvedliggende databasesystem, så kan jeg ikke "bare lige" flytte dem over på microsoft serveren. Det er jo noget skidt.
Avatar billede roenving Novice
07. maj 2003 - 21:43 #3
Du kunne også gå den anden vej: bruge en Domino-database (som jo både kan håndtere interfacet til brugeren og gemme-væk-funktionen).

-- det vil dog normalt være et større arbejde at få den op at stå ...

Men det findes der selvfølgelig _råd_ for *g*

-- men jeg regner med, at du selv vil udføre det, så ...
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