---
title: "Formulärfälten blir tomma"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/147149-formulärfälten-blir-tomma"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Troxy"
published: "2006-05-20T21:47:24.000Z"
updated: "2006-05-22T06:59:11.000Z"
replies: 10
views: 787
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/147149-formulärfälten-blir-tomma"
---

# Formulärfälten blir tomma

## #1 — Troxy, 2006-05-20T21:47Z

Hej.
Jag har ett formulär med metoden POST och massa textfält. Efter att man postat så kontrolleras alla värden på serversidan och om det är något fel så visas ett felmeddelande.

Men om man trycker på bakåt-knappen i webbläsaren för att korrigera felet så är alla fälten i formuläret tomma.
Det är ju jobbigt om man ska behöva fylla i allting igen.
Går detta att lösa på något sätt?

Jag har lite andra hemsidor kodade i ASP och där fungerar det att trycka bakåt utan att allt blir tomt. Vad beror detta på?

Mvh Troxy

Permalänk: https://www.webforum.nu/p/147149

## #2 — nkrantz, 2006-05-20T21:52Z

Jag har också funderat på det där, hur andra sidor har löst det hela. Jag har i tidigare projekt löst det med att använda sessions. Sätt sessionsvariablarna när du postar sidan. Om man klickar back så hämtar du bara upp värderna från sessionvariablerna.

Lycka till!

Permalänk: https://www.webforum.nu/p/1818967

## #3 — Troxy, 2006-05-20T22:17Z

Okej, det är ju en lösning.

Men varför behöver man inte göra det när det gäller ASP?

Permalänk: https://www.webforum.nu/p/1818985

## #4 — Peeer, 2006-05-20T22:29Z

Har du någon kod som gör så att sidan inte cacheas eller något liknande? Jag har inte märkt det problemet.

Permalänk: https://www.webforum.nu/p/1818992

## #5 — Troxy, 2006-05-20T22:38Z

Nu har jag gjort lite undersökningar och ja, faktiskt så har det att göra med caching!

Problemet verkar ligga i att jag kör funktionen session_start(); på php-sidan där fomuläret ligger.
När man anropar session_start(); så skickas det tydligen också med massa HTTP-headers som gör att webbläsaren inte cachar sidan:

> 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

Frågan är nu: hur ska jag lösa detta?
Om jag tar bort session_start(); så kommer väl alla mina sessioner att sluta fungera?

Permalänk: https://www.webforum.nu/p/1818993

## #6 — nkrantz, 2006-05-21T17:25Z

Hm... 

Ja, om du tar bort session_start så kommer inte dina sessions att funka. Men om du använder dig av sessions att lagra formulärdatan så slipper du oroa dig för det, dessutom så \_tror\_ jag att det kan vara lite browser-relaterat...

// N

Permalänk: https://www.webforum.nu/p/1819188

## #7 — nkrantz, 2006-05-21T18:46Z

Kanske kan vara något?

> session_cache_limiter() returns the name of the current cache limiter. If cache_limiter is specified, the name of the current cache limiter is changed to the new value. 
> 
> The cache limiter defines which cache control HTTP headers are sent to the client. These headers determine the rules by which the page content may be cached by the client and intermediate proxies. Setting the cache limiter to nocache disallows any client/proxy caching. A value of public permits caching by proxies and the client, whereas private disallows caching by proxies and permits the client to cache the contents. 
> 
> In private mode, the Expire header sent to the client may cause confusion for some browsers, including Mozilla. You can avoid this problem by using private_no_expire mode. The expire header is never sent to the client in this mode.

Permalänk: https://www.webforum.nu/p/1819201

## #8 — aasah, 2006-05-21T18:59Z

Hmm, kan du inte sätta fälten till $\_POST-värdena om dessa är satta, när sidan laddas? Om jag förstått din felbeskrivning rätt är det så jag gör.

Alltså i formulärsidan: 

```php
session_start();
if (isSet($_POST["myField"])) $f = $_POST["myField"];
else $f = ""; //tex

//...
echo "<input type=\"text\" name=\"myField\" value=\"$f\">....";
```

Permalänk: https://www.webforum.nu/p/1819210

## #9 — nkrantz, 2006-05-21T19:44Z

Fast det hjälper ju inte om det är så att någon klickar på back-knappen, då finns ju inte POST variablerna längre.

// Nippe

Permalänk: https://www.webforum.nu/p/1819227

## #10 — aasah, 2006-05-22T00:11Z

> **nkrantz skrev:**
>
> Fast det hjälper ju inte om det är så att någon klickar på back-knappen, då finns ju inte POST variablerna längre.
> 
> // Nippe

Nej, men i stället för att ta hand om felet och skriva ut det på test.php (tex), så kan man ta hand om feltestet direkt i form.php och om det blev fel så skrivs felmeddelande plus form ut, annars vidareskickas man till ok.php . 

Ett alternativt sätt att lösa det på, kanske, som i alla fall löser problemet med tomma fält.

Permalänk: https://www.webforum.nu/p/1819293

## #11 — Troxy, 2006-05-22T06:59Z

nkrantz, tack för tipset!

```
session_cache_limiter(0);
```

Denna kod löser problemet. Den ser till att inga cache-headers skickas med till webbläsaren, och då kan man trycka bakåt utan att formuläret rensas.

Tack för hjälpen!

Permalänk: https://www.webforum.nu/p/1819324

---

Tråden på webben: https://www.webforum.nu/amne/php/147149-formulärfälten-blir-tomma
