Avatar billede the_email Nybegynder
23. januar 2006 - 19:04 Der er 8 kommentarer og
1 løsning

Undgå repost ved Refresh i browser

Davdav.
Jeg har lavet en tagwall hvor man poster i tagwallen ved at udfylde et felt som er en input i et form. Når man submitter indsætter den denne værdi i en MySQL-database og det virker fint nok.
Mit problem er at hvis man refresher browseren vil den sende dette input igen.
Kan man tvinge browseren til at glemme inputtet så man kan refreshe uden at lave dobbeltindlæg i tagwallen?

Mvh. TheEmail
Avatar billede cgroup Nybegynder
23. januar 2006 - 19:39 #1
Jeg ville foreslå at du evt laver en javascript location.href, eller at du fra din side, poster til en anden, og når input er modtaget så redirecte tilbage til din tagwall. Den sidste ville jeg mene var den bedste.
Avatar billede phpnewbie Nybegynder
23. januar 2006 - 19:43 #2
Vil sige Cgroup har ret, men javascript er ikke nødvendigt for at lave det. Bare siden poster til en temporær insert side.

noget i stil med:
tagwall.php:
<form action="addpost.php" method="post">
<input felter>
</form>
addpost.php
<?php

if("if construct der checker om alt er indtastet") {
mysql_query("insert statement der fylder din tabel");
header("location: tagwall.php");
}
?>
Avatar billede olebole Juniormester
24. januar 2006 - 13:23 #3
<ole>

Nej, det bedste er at gøre det med en HTTP-redirect i PHP ... fuldstændig, som man gør her på Eksperten:

<form action="response.php" method="post">
  <input type="hidden" name="ret_page" value="<?=$_SEVER["PHP_SELF"]?>">
... osv - osv ...
</form>

response.php ser sådan ud:

<?php
// Her opdaterer du DB, m.m.

Header("Location: ".$_POST["ret_page"]);
?>

/mvh
</bole>
Avatar billede phpnewbie Nybegynder
24. januar 2006 - 20:52 #4
Ole:
like i said :)
Avatar billede olebole Juniormester
25. januar 2006 - 09:37 #5
- damned ... det så jeg da slet ikke ... sorry  ;D
Avatar billede the_email Nybegynder
25. januar 2006 - 17:11 #6
Tak for jeres forslag.
Jeg prøver dem af i løbet ugen og vender tilbage

/TheEmail
Avatar billede the_email Nybegynder
27. januar 2006 - 16:17 #7
Davdav.
Jeg har nu fået det til at fungere.
Jeg benyttede cgroup's metode med at sende brugeren til en anden side (tagwallsend.php) og når MySQL-query er udført så blive man sendt tilbage med Header(); igen.

Ole, vil du evt. prøve at forklare det geniale i din metode?

/TheEmail
Avatar billede olebole Juniormester
28. januar 2006 - 22:10 #8
Den er der intet genialt ved ... det er såmænd blot den standardmetode, der anvendes i langt de fleste professionelle løsninger  :)

Fordelen er bl.a. at du sparer serveren for at arbejde med at skrive noget ud til et dokument, brugeren alligevel ikke skal bruge til noget - og at han ikke skal vente på det ankommer - og vente på, at han får downloaded et, han kan bruge. Desuden skabes der ikke rod i browser-historikken, som det er tilfældet ved brug af JS.

Nu er du jo så i den heldige situation, at du netop _ikke_ har brugt cgroup's JavaScript-løsning, men derimod den, phpnewbie og jeg anbefalede - og du derved undgår de uhensigtsmæssigheder, en JavaScript-/klient-løsning indebærer  :)

- man kan så undre sig over, det ikke var phpnewbie, der fik pointene(?)
Avatar billede phpnewbie Nybegynder
28. januar 2006 - 23:17 #9
Ole..
Sårn går det gerne når jeg poster med kommentar istedet for svar :)
Jeg går ikke så meget op i pointene. Sjovere at se når folk lærer noget.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester