webForumDet fria alternativet

undvika "felmeddelande" vid tryck på backnappen

PHP

10 svar · 612 visningar · startad av Prime_66

Medlem sedan aug. 2004290 inlägg
Frågan#1

Är det nån som vet om det finns ett sätt att få bort popup meddelandet som alltid kommer när man trycker på "back knappen" när sidan innan använder POST variabler? Jävligt störande för jag har en sökmotor som använder sig av POST data men om man trycker man på en länk och sen vill gå tillbaks till resultaten kommer rutan upp och man måste trycka ok för att det ska funka. Tacksam för hjälp!

Medlem sedan sep. 2006867 inlägg
#2

Gör som google och använd GET istället ;) Rutan är ju en varning från web-läsaren, inte från något som står i koden på din sida.

/r YES!! Först :)

Medlem sedan juni 20001 251 inlägg
#3

Använd GET, som alla andra sökmotorer.

[r] Attans. :)

Medlem sedan feb. 2007161 inlägg
#4

http://www.cs.tut.fi/~jkorpela/forms/methods.html

Intressant läsning om POST och GET.

Medlem sedan aug. 2004290 inlägg
#5

Ja kanske jag gör det men blir lite krånligt o skriva om + en annan sak..om man använder GET variabler i själva formet har jag för mig att det inte funkar att skriva t.ex. <form action="results.php?variable=nått&variable2=nåttannat"...> eller? Alltså alltså GET måste va i formet?

Medlem sedan mars 2007845 inlägg
#6

Skillnaden är att _GET syns i adressfönstret och har en begränsning på 100 tecken. _POST syns inte och har ingen begränsning i antal tecken.

/J

Medlem sedan sep. 2006867 inlägg
#7

Prime_66 skrev:

Ja kanske jag gör det men blir lite krånligt o skriva om + en annan sak..om man använder GET variabler i själva formet har jag för mig att det inte funkar att skriva t.ex. <form action="results.php?variable=nått&variable2=nåttannat"...> eller? Alltså alltså GET måste va i formet?

Är lite osäker på hur du menar men i varjefall så måste POST vara i <form>. Emmelertid kan GET skapas i vanliga länkar, som tex

<a href="sok.php?q=rosa+kalsonger">Sökningen</a>
Medlem sedan mars 20041 505 inlägg
#8

Jag har själv brottats med liknande problem förut och lyckades fixa det. Det diskuterades bland annat i denna tråd.
Eftersom det var ett tag sedan, samt att jag inte är så bra insatt i HTTP-protokollet så kan jag bara ge dig svar baserat på mina tankar, som dessutom kan vara helt far off. Jag hoppas också att du förstår min förklaring.

Jag gissar på att det har att göra med HTTP-headers som kontrollerar caching av sidan.
När man exempelvis använder sessions i PHP så läggs det automatiskt till massa HTTP-headers som säger att sidan som skickas absolut inte får cachas, utan måste laddas om varje gång den visas.
Om man då trycker bakåt så visas inte den cachade sidan, utan webbläsaren måste hämta den igen från servern.
Men om sidan i fråga har laddats med hjälp av ett POST-request från ett formulär, ja då måste ju webbläsaren skicka formuläret igen för att kunna ladda om sidan.
Därför visar den ett meddelande som varnar användaren att formuläret skickas igen (så att man inte lägger dubbla beställningar i en webbshop eller liknande).

Så ta dig en titt på dina HTTP-headers för att se om du har något med cache att göra.

<?php var_dump(headers_list());?>

Om du exempelvis använder session_start() så lägger den till headers i stil med följande:

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

Dom måste bort så att webbläsaren inte måste ladda om sidan varje gång.
Då kan du försöka skriva över dessa HTTP-headers med nya som tillåter cache.

Medlem sedan aug. 2004290 inlägg
#9

Trocy: intressant. då kanske jag kan komma runt det bara genom att modierfiera headern? Ska kolla upp det mer..

Medlem sedan aug. 2004290 inlägg
#10

headbug: vad jag menar är att jag tror inte att det funkar att ha metod=GET på ett form och sen hämta in värden man har skrivit i formets ACTION t.ex. ACTION=index.php?varibel=värde&variabel2=värde
men är osäker, fast har för mig jag provade det för längesen o bestämde mig för att aldrig göra det igen eftersom det inte funkade. alltså: om man har GET på metod kan man bara hämta de variabler som ligger i själva formet med <input>:s, men kör man POST man kan man göra som jag visade.

Medlem sedan juni 20001 251 inlägg
#11

Använd dolda fält för att skicka med extra data.

<input type="hidden" name="variabel" value="värde" />

274 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
136 ms — ändringar (db)