Jag har nu suttit i ett bra tag och försökt lösa problemet med dubbelpostning, utan att ha lyckats. Det går att lösa i javascript, men jag vill ha det i php. Hur gör man?
Tack på förhand!
10 svar · 2 129 visningar · startad av apg29
Jag har nu suttit i ett bra tag och försökt lösa problemet med dubbelpostning, utan att ha lyckats. Det går att lösa i javascript, men jag vill ha det i php. Hur gör man?
Tack på förhand!
Jag vet inte vilket sätt som är bäst egentligen, men jag kan komma på två:
Kan mycket möjligt finnas fler och bättre sätt...
Tack för tipsen... Finns det fler sätt?
Nu kör jag mest ASP men tekniken är underordnad användningen.
Jag brukar ha formulär på en sida, databashantering på en annan och "tack" på en tredje.
index.asp
confirm.asp
thankyou.asp
Jag har använt detta i över tio år och inte fått en enda dubbelpost eller skickade brev eller vad som helst på den tiden. Så... Jag skulle säga att tekniken som sådan är rätt vattentät mot dubbelposter. Men att tro är att inte veta!!
Om man backar i webbläsaren skulle jag gissa att det går att dubbelposta, men det är samtidigt en medveten manöver, inte av misstag.
Det är olika hur man gör. Detta passar för mig och i alla sammanhang har det passat men det är mycket möjligt att det finns sammanhang där det inte passar, bara det att jag inte har kommit dit ännu!! :-)
Tack igen, jag ska se om jag kan klura ut det sista tipset...
Kanske finns fler tips?
Vad menar du med dubbelpostning? Är det att det blir två gånger om användaren postar ett inlägg och trycker F5 och laddar om sidan? Det bästa är isf. att spara inlägget och sen köra:
header("Location: sida-för-presentation.php");
exit();
Då kommer inlägget inte att postas igen, även om användaren laddar om sidan.
Fast det är inte vattentätt. Servern skulle kunna fått data ifrån klienten, sedan bryts anslutningen. Klienten försöker igen...
Fast det är inte vattentätt. Servern skulle kunna fått data ifrån klienten, sedan bryts anslutningen. Klienten försöker igen...
Men jag använder den funktionen, fast jag har det på samma sida dom formuläret, men det funkar inte. Måste det vara i olika sidor/filer?
Det behöver inte vara på olika sidor. Det är bara jobbigt och ger i många fel felaktig respons mot personer som kommit till sidan på alternativa sätt. Jag kör alltid formulär, kontroller och "tack" på samma sida.
Rekommenderar Ledels punkt 2.
Innan en post sparas, skapar du en checksumma av alla fälten. Denna checksumma kontrolleras mot databasen/session beroende vad du är bekväm med för metod. Förutom indatafälten bör checksumman skapas baserat på värden som identifierar den unika användaren.
Det behöver inte vara på olika sidor. Det är bara jobbigt och ger i många fel felaktig respons mot personer som kommit till sidan på alternativa sätt. Jag kör alltid formulär, kontroller och "tack" på samma sida.
Rekommenderar Ledels punkt 2.
Innan en post sparas, skapar du en checksumma av alla fälten. Denna checksumma kontrolleras mot databasen/session beroende vad du är bekväm med för metod. Förutom indatafälten bör checksumman skapas baserat på värden som identifierar den unika användaren.
Precis, t.ex. så kan du sätta ihop en checksumma som ser ut såhär:
$checksum = md5($_POST['userid'] . $_POST['subject'] . $_POST['body']);
Resten av koden:
SELECT id
FROM tabell
WHERE MD5(CONCAT(userid, subject, body)) = ' . $checksum . '
Tack för de intressanta svaren. Ska kolla på det mer i morgon.