Að kom aí veg fyrir Double posting í php

Svara
Skjámynd

Höfundur
gnarr
Kóngur
Póstar: 6208
Skráði sig: Lau 29. Mar 2003 19:54
Staðsetning: Reykjavík
Staða: Ótengdur

Að kom aí veg fyrir Double posting í php

Póstur af gnarr »

Vitiði einhverja aðferð til að koma í veg fyrir double post í php?

ég hélt ég væri búinn að finna góða aðferð

Kóði: Velja allt

<form method= 'get' action= 'action.php' >

<kóði sem nær í breytur>

    <input type= 'hidden' name= 'commented' value= 'set' > 
    <input type="submit" name="Submit" value="áfram">

Kóði: Velja allt

if(isset($_GET['commented']))
{ 
<kóði sem sendir í SQL>
}
else
{
}


en svo prófaði ég að gera refresh, og það kom alltaf ný og ný entry ;( einhverjar hugmyndir?
"Give what you can, take what you need."
Skjámynd

daremo
spjallið.is
Póstar: 423
Skráði sig: Mið 27. Okt 2004 00:39
Staða: Ótengdur

Póstur af daremo »

Tvær tillögur;

Kóði: Velja allt

if(!isset($_SESSION['commented'])) 
{
<kóði sem sendir í SQL>
$_SESSION['commented']=1;
}
Muna bara að gera unset($_SESSION['commented']); einhvers staðar, t.d. á yfirlitinu yfir pósta.


Svo geturðu líka sett tímalimit.

Kóði: Velja allt

if(time()+60 < $_SESSION['commented']) 
{
forwarda á yfirlit pósta, eða eitthvað :)
}
else
{
<kóði sem sendir í SQL>
$_SESSION['commented']=time();
}

Skjámynd

MezzUp
Besserwisser
Póstar: 3694
Skráði sig: Þri 24. Sep 2002 15:19
Staða: Ótengdur

Póstur af MezzUp »

Ef að það nægir þér að stoppa þá sem að ýta á 'bakk' til þess að skoða aftur upprunalega póstinn, þá ætti að duga að setja 20 sek. tímalimit á milli pósta.
Skjámynd

Höfundur
gnarr
Kóngur
Póstar: 6208
Skráði sig: Lau 29. Mar 2003 19:54
Staðsetning: Reykjavík
Staða: Ótengdur

Póstur af gnarr »

daremo skrifaði:Tvær tillögur;

Kóði: Velja allt

if(!isset($_SESSION['commented'])) 
{
<kóði sem sendir í SQL>
$_SESSION['commented']=1;
}
Muna bara að gera unset($_SESSION['commented']); einhvers staðar, t.d. á yfirlitinu yfir pósta.

Svo geturðu líka sett tímalimit.

Kóði: Velja allt

if(time()+60 < $_SESSION['commented']) 
{
forwarda á yfirlit pósta, eða eitthvað :)
}
else
{
<kóði sem sendir í SQL>
$_SESSION['commented']=time();
}

Þetta virkar ekki vegna þess að ég er ekki að sækja commented í session :p það kemur bara beint af síðustu síðu.

á ekki að vera hægt að gera unset($_POST['commented']); ?

annars eru skemmtilegar pælingar hérna:

http://labs.silverorange.com/archives/2 ... yousaythat

ég ætla að athuga hvort ég fæ þetta til að virka.
"Give what you can, take what you need."
Skjámynd

daremo
spjallið.is
Póstar: 423
Skráði sig: Mið 27. Okt 2004 00:39
Staða: Ótengdur

Póstur af daremo »

þú þarft ekki að sækja neitt, þú býrð til session breytuna á staðnum :P

skelltu bara session_start(); efst í skjalið og notaðu kóðann fyrir ofan, ég ábyrgist það að hann virki :)
Skjámynd

Dagur
Geek
Póstar: 801
Skráði sig: Fös 19. Sep 2003 14:00
Staðsetning: Reykjavík
Hafðu samband:
Staða: Ótengdur

Póstur af Dagur »

Að auki borgar sig að koma í veg fyrir að hægt sé að klikka á submit tvisvar:

sjá hér
Skjámynd

Höfundur
gnarr
Kóngur
Póstar: 6208
Skráði sig: Lau 29. Mar 2003 19:54
Staðsetning: Reykjavík
Staða: Ótengdur

Póstur af gnarr »

nei, það er ekki sniðugt að disable submit.
"Give what you can, take what you need."
Skjámynd

Dagur
Geek
Póstar: 801
Skráði sig: Fös 19. Sep 2003 14:00
Staðsetning: Reykjavík
Hafðu samband:
Staða: Ótengdur

Póstur af Dagur »

gnarr skrifaði:nei, það er ekki sniðugt að disable submit.
vegna þess að... :)
Skjámynd

Höfundur
gnarr
Kóngur
Póstar: 6208
Skráði sig: Lau 29. Mar 2003 19:54
Staðsetning: Reykjavík
Staða: Ótengdur

Póstur af gnarr »

vegna þess að það þarf að nota hann stundum oftar en einusinni. það veldur líka ekki double pósti hjá mér að klikka tvisvar a´takkann.
"Give what you can, take what you need."
Skjámynd

Stutturdreki
Vaktin er ávanabindandi
Póstar: 1629
Skráði sig: Þri 27. Apr 2004 14:03
Staða: Ótengdur

Póstur af Stutturdreki »

Submittar formið í sjálft sig? Þe. í sömu síðu og inniheldur formið..
Skjámynd

Höfundur
gnarr
Kóngur
Póstar: 6208
Skráði sig: Lau 29. Mar 2003 19:54
Staðsetning: Reykjavík
Staða: Ótengdur

Póstur af gnarr »

nei. það er önnur "action" síða.
"Give what you can, take what you need."
Skjámynd

Stutturdreki
Vaktin er ávanabindandi
Póstar: 1629
Skráði sig: Þri 27. Apr 2004 14:03
Staða: Ótengdur

Póstur af Stutturdreki »

Ok.. þá geri ég ráð fyrir að notandin stoppi í action síðunni.

Það er hinsvegar miklu betra að redirecta honum bara annað. Td. ef þú ert með tvær síður, form.php og post.php:
- form.php: notandi slær eitthvað inn í þartilgert form og gerir submit.
- post.php: parsar querystrengin vinnur hugsanlega eitthvað með gögnin og dælir þeim í gagnagrunn.. redirectar svo notandanum aftur á form.php.
- form.php: birtir skilaboð um að búið sé að pósta og tómt form. Refresh á tómt form gerir ekki neitt..
Svara