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 » Fim 14. Apr 2005 16:13
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."
daremo
spjallið.is
Póstar: 423 Skráði sig: Mið 27. Okt 2004 00:39
Staða:
Ótengdur
Póstur
af daremo » Fim 14. Apr 2005 18:15
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();
}
MezzUp
Besserwisser
Póstar: 3694 Skráði sig: Þri 24. Sep 2002 15:19
Staða:
Ótengdur
Póstur
af MezzUp » Fim 14. Apr 2005 22:32
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.
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 » Fös 15. Apr 2005 07:55
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."
daremo
spjallið.is
Póstar: 423 Skráði sig: Mið 27. Okt 2004 00:39
Staða:
Ótengdur
Póstur
af daremo » Fös 15. Apr 2005 09:26
þú þarft ekki að sækja neitt, þú býrð til session breytuna á staðnum
skelltu bara session_start(); efst í skjalið og notaðu kóðann fyrir ofan, ég ábyrgist það að hann virki
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 » Fös 15. Apr 2005 09:59
Að auki borgar sig að koma í veg fyrir að hægt sé að klikka á submit tvisvar:
sjá hér
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 » Fös 15. Apr 2005 10:04
nei, það er ekki sniðugt að disable submit.
"Give what you can, take what you need."
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 » Fös 15. Apr 2005 12:11
gnarr skrifaði: nei, það er ekki sniðugt að disable submit.
vegna þess að...
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 » Fös 15. Apr 2005 14:03
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."
Stutturdreki
Vaktin er ávanabindandi
Póstar: 1629 Skráði sig: Þri 27. Apr 2004 14:03
Staða:
Ótengdur
Póstur
af Stutturdreki » Fös 15. Apr 2005 14:14
Submittar formið í sjálft sig? Þe. í sömu síðu og inniheldur formið..
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 » Fös 15. Apr 2005 14:32
nei. það er önnur "action" síða.
"Give what you can, take what you need."
Stutturdreki
Vaktin er ávanabindandi
Póstar: 1629 Skráði sig: Þri 27. Apr 2004 14:03
Staða:
Ótengdur
Póstur
af Stutturdreki » Fös 15. Apr 2005 14:45
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..