---
title: "Hindra dubbelpostning i php"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/186733-hindra-dubbelpostning-i-php"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "apg29"
published: "2011-04-23T13:38:54.000Z"
updated: "2011-04-25T21:07:46.000Z"
replies: 10
views: 2139
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/186733-hindra-dubbelpostning-i-php"
---

# Hindra dubbelpostning i php

## #1 — apg29, 2011-04-23T13:38Z

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!

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

## #2 — Ledel, 2011-04-23T16:08Z

Jag vet inte vilket sätt som är bäst egentligen, men jag kan komma på två:

1. Ha en tidsgräns för hur tätt en användare kan skriva inlägg. Spara tiden för senaste post i en sessionsvariabel och jämför mot denna när en ny post görs. 30 sekunder kan vara en lämplig tid.
2. Jämför inlägget användaren försöker posta med föregående sparat inlägg. Är de lika är det troligtvis en dubbelpostning.

Kan mycket möjligt finnas fler och bättre sätt...

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

## #3 — apg29, 2011-04-23T18:33Z

Tack för tipsen... Finns det fler sätt?

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

## #4 — civilpolisen, 2011-04-23T19:05Z

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!! :-)

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

## #5 — apg29, 2011-04-23T19:07Z

Tack igen, jag ska se om jag kan klura ut det sista tipset...
Kanske finns fler tips?

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

## #6 — MickeA.com, 2011-04-24T02:48Z

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:

```php
header("Location: sida-för-presentation.php"); 
exit();
```

Då kommer inlägget inte att postas igen, även om användaren laddar om sidan.

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

## #7 — onkelborg, 2011-04-24T11:56Z

Fast det är inte vattentätt. Servern skulle kunna fått data ifrån klienten, sedan bryts anslutningen. Klienten försöker igen...

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

## #8 — apg29, 2011-04-24T20:20Z

> **[onkelborg skrev:](https://www.webforum.nu/p/1533753)**
>
> 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?

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

## #9 — Marcus, 2011-04-24T20:45Z

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.

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

## #10 — MickeA.com, 2011-04-25T00:41Z

> **[Marcus skrev:](https://www.webforum.nu/p/1533766)**
>
> 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:

```php
$checksum = md5($_POST['userid'] . $_POST['subject'] . $_POST['body']);
```

Resten av koden:

```
SELECT id
FROM tabell
WHERE MD5(CONCAT(userid, subject, body)) = ' . $checksum . '
```

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

## #11 — apg29, 2011-04-25T21:07Z

Tack för de intressanta svaren. Ska kolla på det mer i morgon.

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

---

Tråden på webben: https://www.webforum.nu/amne/php/186733-hindra-dubbelpostning-i-php
