Avatar billede llgpublic Nybegynder
01. september 2007 - 05:46 Der er 2 kommentarer og
1 løsning

Mangler et cookie baseret notat script

Hej, sidder og arbejder på en hjemmeside hvor jeg ønsker det muligt at de besøgene kan efterlade et notat på siden mens de browser rundt. De skal kun selv kunnen se deres notat, notatet skal slette sig selv så snart de lukker deres browser.

Forstiller mig en tekstboks som gemmer det som bliver skrevet, men som kune personen som skriver det kan læse. Andre der besøger siden får automatisk et tomt notat felt som de så kan skrive i.

Idén bag det hele er at folk skal kunne tage notater til hvad de ønsker at bestille over telefonen mens de browser rundt og kigger i hjemmesides kategorier.

Cookies, Sessions!?

Håber en eller anden kan lave dette for mig :D
Avatar billede kimg Nybegynder
01. september 2007 - 08:50 #1
Du må nok selv gå i gang med det, så kan du helt sikkert blive hjulpet godt på vej herinde. Hvis du ikke selv kan, så skal du nok rykke det til kategorien "opgaver".

Kim
Avatar billede showsource Seniormester
01. september 2007 - 09:23 #2
Og jeg ville nok bruge en DB + sesssion, DB er f.eks. mysql, og så bruge session_id() til at identificeere brugeren.
Avatar billede llgpublic Nybegynder
01. september 2007 - 13:44 #3
Måtte nøjes med Javascript og html, lykkedes at sammensætte er script som gemmer indholdet af et tekstfelt når siden lukkes, og indlæser indholdet når siden åbnes.

<html>

<head>
<script language="JavaScript">

<!-- Start

var expDays = 3600;

var exp = new Date();

exp.setTime(exp.getTime() + (expDays));

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 cookieForms() { 

    var mode = cookieForms.arguments[0];

   
    for(f=1; f<cookieForms.arguments.length; f++) {

        formName = cookieForms.arguments[f];

       
        if(mode == 'open') {   

            cookieValue = GetCookie('saved_'+formName);

            if(cookieValue != null) {

                var cookieArray = cookieValue.split('#cf#');

               

                if(cookieArray.length == document[formName].elements.length) {

                    for(i=0; i<document[formName].elements.length; i++) {

                   

                        if(cookieArray[i].substring(0,6) == 'select') { document[formName].elements[i].options.selectedIndex = cookieArray[i].substring(7, cookieArray[i].length-1); }

                        else if((cookieArray[i] == 'cbtrue') || (cookieArray[i] == 'rbtrue')) { document[formName].elements[i].checked = true; }

                        else if((cookieArray[i] == 'cbfalse') || (cookieArray[i] == 'rbfalse')) { document[formName].elements[i].checked = false; }

                        else { document[formName].elements[i].value = (cookieArray[i]) ? cookieArray[i] : ''; }

                    }

                }

            }

        }

               

        if(mode == 'save') {   

            cookieValue = '';

            for(i=0; i<document[formName].elements.length; i++) {

                fieldType = document[formName].elements[i].type;

               

                if(fieldType == 'password') { passValue = ''; }

                else if(fieldType == 'checkbox') { passValue = 'cb'+document[formName].elements[i].checked; }

                else if(fieldType == 'radio') { passValue = 'rb'+document[formName].elements[i].checked; }

                else if(fieldType == 'select-one') { passValue = 'select'+document[formName].elements[i].options.selectedIndex; }

                else { passValue = document[formName].elements[i].value; }

           

                cookieValue = cookieValue + passValue + '#cf#';

            }

            cookieValue = cookieValue.substring(0, cookieValue.length-4);

           

            SetCookie('saved_'+formName, cookieValue, exp);       

        }   

    }

}

//  Slut  -->

</script>
<style type="text/css">
.style1 {
    font-family: Verdana;
    font-size: x-small;
}
</style>
</head>

<body onload="cookieForms('open', 'notat')" onunload="cookieForms('save', 'notat')">

<form name="notat">
    <table style="width: 23%">
        <tr>
            <td><span class="style1"><strong>Notat:</strong></span></td>
        </tr>
        <tr>
            <td><textarea name="note" style="height: 104px"></textarea></td>
        </tr>
    </table>
</form>

</body>

</html>
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

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