Permalänk
Medlem

Php

Jag har en <form> med action="post" som går till $PHP_SELF. roblemet är nu detta, att när jag har postat mina variabler och allting är frid o fröjd. Men om jag nu trycker F5 (refresh) så kommer scriptet agera som om jag postade samma variabler igen. Jag försökte då tömma den kritiska variabeln.

unset($_POST["submit"]);

eftersom denna kod initierar scriptet:

if (isset($_POST["submit"])) { blabla; }

jodå, visst funkade det att tömma (variabeln blev tom, kollade med echo). Men problemet kvarstår. alltså tippar jag på att browsern lagrar dem tillfälligt tills jag kommer till en ny sida. Men jag vill inte ha 2st filer.

Går detta att komma runt?

Permalänk
Medlem

Kör if-satsen med något formulärfält och skippa isset. Exempel:

if ($_POST["password"]) { blabla; }

Alternativt kan du istället för unset kanske göra såhär:

$_POST["submit"] = FALSE;

Permalänk
Medlem

Jag var skeptisk till att det skulle bli någon skillnad, men jag testade bara för att vara säker. Och mycket riktigt så kvarstår problemet. Har jag varit otydlig?

EDIT: Jag noterade din ändring, men det gör ingen skillnad. problemet kvarstår.

Permalänk
Medlem

Jag ändrade inlägget, var ute och cyklade först

Permalänk
Medlem

Alltså, jag tänker såhär: Ifall browsern lagrar dem tillfälligt så när jag refreshar så skickar browsern skiten igen som om det vore en ny post.
För när jag har kört unset($_POST["submit"]); så kommer inte min isset låta han komma in. Men när jag då refreshar så bildas $_POST["submit"] igen av browsern.

Permalänk
Medlem

Tror att jag missförstått ditt problem två gånger, vi gör ett nytt försök

Sätt en session när formuläret postas första gången och gör en check efter den varje gång sidan laddas. Det ska funka.

Permalänk
Medlem

hehe, jo. Jag har tänkt på det. Men hoppades slippa. Detta är bara en pluttig liten funktion som är så obetydlig att jag inte orkar.

Nämen, skulle vara roligt ifall man kunde lösa det ändå.
Det kommer sluta med sessions iaf. OM ingen lyckas komma på nåt.

Permalänk
Medlem

Det lär inte innebära någon mätbar prestandaskillnad.

Permalänk
Medlem

Är jag ute och cyklar om jag säger att du skall ha köra header("location: sidan.php"); efter koden som behandlar formulärresultaten

EDIT: menade formulärresultaten och inte inloggningsresultaten

Visa signatur

Har bytt namn från: nulleman ~ Blogg: http://skorpion.se
MacBook Pro: 15.4' ~ 1.83GHz ~ 1512MB RAM ~ 80GB HDD
Medlem i signaturen blodtörstiga Appleanvändare

Permalänk
Medlem

du cyklar. Men eftersom problemet inte är direkt lätt att beskriva så förlåter jag dig

EDIT: Spelar fortfarande ingen roll. Problemet sitter i att browsers sparar formulärresultaten själva. Jag är tvungen att köra sessions. Eller skriva en check funktion som kräver en annan variabel än den senast skickade. På så vis kan jag lösa det. Kom på det nu medans jag skrev.