Avatar billede ny89 Nybegynder
12. oktober 2012 - 09:14 Der er 5 kommentarer og
1 løsning

php og localstorage

Hej, jeg er lavet noget html og php-script med en formular, hvor man skal indtaste oplysninger, som videresender oplysninger til php-script, men hvordan kan man gemme disse data lokalt? har hørt noget om localstorage, men ved intet om det. Nogen der kan hjælpe?

På forhånd tak.
Avatar billede DeeDawg Nybegynder
12. oktober 2012 - 17:28 #1
Local Storage er en feature der først blev implementeret af Microsoft i IE, igennem deres berømte DHTML behaviors så vidt jeg husker. Indtil nu, har der ikke været nogen officiel standard, og man har derfor ikke kunnet regne med denne feature, hvilket nok også er grunden til at der ikke er en overflod af artikler og dokumentation om det.

Som sagt har det ændret sig med HTML5. Der er nu defineret en standard og jeg mener de fleste browsere skulle have fået implementeret det allerede. Dog skal man huske på at HTML5 ikke er en officiel standard endnu.

Men lad os komme tilbage til dit indlæg. Local Storage/Web Storage/DOM Storage kan rigtigt nok benyttes til at gemme data hos klienten. Dog er dette ikke helt ligesom cookies, for det forbliver nemlig hos klienten og bliver ikke sendt med tilbage til webserveren. Derfor kan det heller ikke rigtig gøre nogen nytte med PHP, da denne data kun kan tilgås via JavaScript. Man kunne jo så sende dataen til serveren via AJAX, men hvorfor så ikke bare bruge cookies til at starte med? :)
Avatar billede ny89 Nybegynder
13. oktober 2012 - 09:48 #2
Tak for svaret :) Kan du hjælpe mig i gang med javascript? Bare et simpelt eksempel, med måske to formular; navn og efternavn, som bliver gemt lokalt? og evt. hvordan disse data kan blive vist frem igen på min side?
Avatar billede DeeDawg Nybegynder
14. oktober 2012 - 23:26 #3
Beklager forsinkelsen, men her har du et eksempel. Husk at der er forskel på localStorage og sessionStorage, hvilket du kan læse om i den dokumentation jeg linkede til i #1.

<!DOCTYPE html>
<html lang="da-dk">
    <head>
        <meta charset="utf-8" />
        <title>Web Storage test</title>
        <script type="text/javascript">
            function formHandler(form) {
                if (form.fornavn.value != '') sessionStorage.fornavn = form.fornavn.value;
                if (form.efternavn.value != '') sessionStorage.efternavn = form.efternavn.value;
               
                return true;
            }
        </script>
    </head>
    <body>
        <form id="test" action="" method="post" onsubmit="formHandler(this);">
            <label for="fornavn">Fornavn</label>
            <input type="text" name="fornavn" />
            <label for="efternavn">Efternavn</label>
            <input type="text" name="efternavn" />
            <button type="submit">Send</button>
        </form>
        <button type="button" onclick="clearData()">Slet</button>
        <script type="text/javascript">
            fornavnElm = document.forms['test'].elements['fornavn'];
            efternavnElm = document.forms['test'].elements['efternavn'];
           
            fornavnElm.value = sessionStorage.fornavn ? sessionStorage.fornavn : '';
            efternavnElm.value = sessionStorage.efternavn ? sessionStorage.efternavn : '';
           
            function clearData() {
                sessionStorage.clear();
                fornavnElm.value = '';
                efternavnElm.value = '';
            }
        </script>
    </body>
</html>
Avatar billede ny89 Nybegynder
15. oktober 2012 - 09:42 #4
Det er helt okay.. Vil lige læse nærmere om forskellen, men hvordan finder jeg mine data frem, når jeg trykker på "send"?
Avatar billede DeeDawg Nybegynder
16. oktober 2012 - 00:55 #5
Præcis ligesom du tilføjer, og i mit eksempel sker det her

fornavnElm.value = sessionStorage.fornavn ? sessionStorage.fornavn : '';

og selvfølgelig også for efternavn lige efter. Hvis det er fordi du ikke forstår denne linje, beklager jeg, men det er faktisk bare en simpel ternary if-sætning. Kunne ligeså godt have set således ud

if (sessionStorage.fornavn) {
    fornavnElm.value = sessionStorage.fornavn;
} else {
    fornavnElm.value = '';
}
Avatar billede ny89 Nybegynder
14. april 2013 - 17:00 #6
Lukker tråden :)
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
Kurser inden for grundlæggende programmering

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