Avatar billede augustjoergensen Nybegynder
25. april 2006 - 19:59 Der er 28 kommentarer

hvordan får jeg data i en form til at blive der efter en refresh?

Hej eksperten!

Hvis jeg har oprettet en form i html, derefter indskriver noget data og trykker på f5 gemmes det data som er indskrevet i felterne ikke :(

Er der en mulighed for at man kan sætte apache2 eller noget andet op så form data gemmes ved refresh?
Avatar billede olebole Juniormester
25. april 2006 - 20:37 #1
<ole>

Nej, det har jo ikke noget med serveren at gøre, om der bliver trykket F5. Du må ud i at rode med en cookie på klienten, i hvilken værdierne bliver skrevet ved onunload - og hvis kagen indeholder værdier, bliver disse skrevet ind i felterne på onload.

Men da enhver webbruger mellem 7 og 75 år ved, at en formular mister sit indhold ved reload, burde det vel også være overflødigt. Jeg finder det i hvertfald overkill  :)

/mvh
</bole>
Avatar billede mclemens Nybegynder
25. april 2006 - 23:03 #2
- Og det næste spørgsmål er så om det overhovedet er smart at gemme disse oplysninger i en cookie på maskinen ... det afhænger selvfølgelig af hvilke oplysninger vi taler om ... hvis der er tale om Navn, adresse kodeord og lignende vil jeg ikke synes det er optimalt - medmindre cookie sættes som midlertidig/kortvarig. (jeg tænker bl.a. på visse offentligt tilgængelige pc'er som biblioteker, netcafeer ... eller pc'er i uddannelses institutioner...)
Avatar billede busschou Praktikant
26. april 2006 - 07:03 #3
så kunne man jo gemme dem i en session i stedet
Avatar billede mclemens Nybegynder
26. april 2006 - 09:12 #4
Joh, ulempen ved sessionen (i dette tilfælde) er jo blot at der skal afsendes en xmlhttprequest hver gang man trykker på en knap med de nye oplysninger om hvad der er indtastet i formularen (da dataer som spørger siger ikke normalt gemmes ved F5)... og der skal derfor xmlhttprequest'es ved tryk på alle taster i formular felter - og det belaster både server og bruger en del.

- Men, jeg foretrækker generalt altid en session istedet for en cookie.
Avatar billede augustjoergensen Nybegynder
26. april 2006 - 09:52 #5
Det har ikke noget med sessioner eller andre ting at gøre....

Jeg har fundet forskellige forms på nettet som man kan refreshe der intet har med sessions eller cookies!

Jeg kopierede en af disse forms og prøvede den på min server, resultatet var at den ikke gemte dataen....

Det er udfra dette jeg tror at det er en opsætning i fx apache?
Avatar billede olebole Juniormester
26. april 2006 - 12:55 #6
Jamen, det er det med 100% garanti ikke. Det kan _kun_ gøres på klienten ... og det er ikke noget, jeg tror  :)
Læg et link til en form, du kan reloade og som samtidig beholder indskrevne data - så skal jeg fortælle dig, hvordan det er gjort
Avatar billede augustjoergensen Nybegynder
26. april 2006 - 13:09 #7
olebole

Hvis du ser på siden(i firefox) og opdatere gemmes data'en fra formen:
http://www.yourhtmlsource.com/forms/basicforms.html

Hvis du ser på siden:
http://www.eblogger.dk/test.php og opdatere - gemmes de forskellige form data ikke?

Hvorfor :S
Avatar billede mclemens Nybegynder
26. april 2006 - 13:36 #8
Tror egentlig det i dette tilfælde (som du selv siger) har noget med din php eller apache at gøre... Normalt checker browseren om der er en ny udgave af siden... hvis der er downloades denne og inputs i formularen slettes... Prøv af at fjerne nogle no-cache og lignende og max-age m.v. fra din php fil...

Det tyder på at caching er blevet disabled.... enten via php-filen elller apache...
(tror det er php filen her... men det kan være begge dele)

((Hvis jeg tester lokalt med din formular gemmes inputs fint...)
Avatar billede olebole Juniormester
26. april 2006 - 13:41 #9
mclemens >> cacheing handler om koden. Det, brugeren skriver i felterne, kommer aldrig i nærheden af cache'en. Derfor kan det umuligt have noget at gøre med no-cache headers - eller andet på serveren  ;o)
Avatar billede mclemens Nybegynder
26. april 2006 - 13:42 #10
Og bingo... cache er disabled

( http://www.seoconsultants.com/tools/headers.asp )

SEO Consultants Directory Check Server Headers - Single URI Results

Current Date and Time: 2006-04-26T04:39:52-0700

#1 Server Response: http://www.eblogger.dk/test.php

HTTP Status Code: HTTP/1.1 200 OK

Date: Wed, 26 Apr 2006 11:43:50 GMT

Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1

X-Powered-By: PHP/5.1.2-1+b1

Set-Cookie: PHPSESSID=3cc62f21641cfdc49fd396af28f151fc; path=/

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

^^^^^^

Pragma: no-cache

^^^^^^

Content-Length: 706
Connection: close
Content-Type: text/html; charset=ISO-8859-1
Avatar billede mclemens Nybegynder
26. april 2006 - 13:44 #11
ok olebole,
Men hvis jeg tester lokalt vs. på siden virker det... ergo må det jo være fordi at når IE eller FF henter en ny side så lader den ikke inputs være i feltet... eller rettere ved F5 opdaterer den sådan set ikke siden hvis der ikke er en nyere side... så på en måde hvis F5 ingen effekt har kan man bevare inputs - ellers kan man ikke
Avatar billede mclemens Nybegynder
26. april 2006 - 13:46 #12
... medmindre man bruger cookies
Avatar billede augustjoergensen Nybegynder
26. april 2006 - 14:16 #13
hvordan bestemmer jeg så at cookies skal være aktiveret i php?
Avatar billede olebole Juniormester
26. april 2006 - 14:22 #14
mclemens >> Det er klart, at hvis du bruger no-cache headers (eller trykker Ctrl+F5 i FF), så vil browseren altid hente en ny side - og så slettes indholdet af alle felter - men du kan ikke skrive en kode, der gør det modsatte. Du kan ikke skrive en stump kode, der gør, at indholdet af felterne altid bibeholdes ved reload.

Men igen: Hvem i alverden er så tumpet at opdatere en side midt under udfyldningen af en formular? Det er da yderst ukvikt  :)
Avatar billede olebole Juniormester
26. april 2006 - 14:24 #15
augustjoergensen >> Du kan (heldigvis) ikke tvinge brugerens browser til at acceptere cookies fra serveren
Avatar billede mclemens Nybegynder
26. april 2006 - 14:29 #16
[ Det er klart, at hvis du bruger no-cache ... ]
- Jeps, helt enig :)
Avatar billede augustjoergensen Nybegynder
26. april 2006 - 14:53 #17
kan jeg ikke ændre no-cache? det er pga. jeg laver en form hvor der undervejs kan tilføjes flere input felter.
Avatar billede olebole Juniormester
26. april 2006 - 15:09 #18
Hvad er det helt præcist, du skal lave?
Avatar billede augustjoergensen Nybegynder
26. april 2006 - 15:44 #19
en form hvor det er muligt undervejs at tilføje flere svarmuligheder samt slette svar muligheder tilføjet.

jeg havde først tænke på at man startede med at vælge svar muligheder, men vil gerne lave det sådam at man imens man indskriver "svar_muligheder" kan tilføje flere....

Derfor jeg gerne vil aktivere no-cache
Avatar billede olebole Juniormester
26. april 2006 - 15:55 #20
Hvis du vil lade serveren indsætte de nye felter, kan du da bare submitte formen mod serveren. Så har du jo de værdier, som brugeren har skrevet. Dem kan serveren så skrive ind i felterne igen, oprette nye felter og sende dokumentet tilbage  ;o)

'Løsningen' i http://www.yourhtmlsource.com/forms/basicforms.html virker jo kun i FF - men ikke i den browser, 80-90% af WWW's brugere anvender
Avatar billede spaceus Nybegynder
26. april 2006 - 16:32 #21
.NET har deres viewState, ellers mener jeg også de formulare skal tømmes ved f5 tryk
Avatar billede augustjoergensen Nybegynder
26. april 2006 - 21:44 #22
olobole - tak for hjælpen, den metode du beskriver havde jeg også tænkt mig at bruge, men ville vide om der var en nemmere metode.

Kan du ikke lave et svar?
Avatar billede olebole Juniormester
27. april 2006 - 02:49 #23
Selvtak, men jeg vil lige nævne en betydeligt mere 'sexy' løsning på indsættelse af nye felter: 'AJAX'  :)

Et eksemplen kan du se her:
    http://www.google.com/webhp?complete=1&hl=en

- begynd at skrive et ord i feltet. Læg så mærke til, at serveren hele tiden bliver kaldt og resultatet bliver indskrevet i et div under feltet. Det bliver gjort med 'Asynchronous JavaScript And XmlHttpRequest' -> 'AJAX'. Prøv at google lidt på emnet
Avatar billede olebole Juniormester
27. april 2006 - 02:49 #24
- og svaret  ;o)
Avatar billede olebole Juniormester
27. april 2006 - 02:57 #25
PS: et meget godt sted at starte er hos ham, der navngav teknikken:
    http://www.adaptivepath.com/publications/essays/archives/000385.php
Avatar billede augustjoergensen Nybegynder
27. april 2006 - 11:13 #26
olebole jeg har lavet ajax applikationer ;)
men tror det er lidt overkill til ligepræcis dette app

btw fik det til at virke på http://www.eblogger.dk/test.php
Avatar billede olebole Juniormester
27. april 2006 - 16:11 #27
- overkill? Tjaaahhh ... det er ikke mere besværligt for koderen - og væsentligt mere brugervenligt  :)
Avatar billede augustjoergensen Nybegynder
28. april 2006 - 07:43 #28
Hvis jeg enedelig skulle lave det mere brugervenligt - skulle jeg lave det via. javascript så man kunne tilføje og fjerne derfra - så når formen skulle gemmes havde jeg alle værdierne. Men generalt er serverside med sikkert.... vel
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