Avatar billede majbom Novice
05. september 2003 - 16:52 Der er 9 kommentarer og
1 løsning

tømme $_POST['xxx']

hej..

jeg har et mindre forum på min hjemmeside, som jeg selv har lavet...

men jeg har et problem:

når man svarer på en tråd, laver siden en php-self, og da variablen $comment bliver sat til 'true' ved at man trykker submit i formen, går den ind i en if-sætning i toppen af siden, hvor den gemmer kommentaren. det virker fint, men når man opdaterer siden, vil den sende oplysningerne igen, altså oprette samme kommentar en gang til... kan man ikke slette variablen $_POST['comment'], eller gøre noget andet, så den ikke vil gemme igen?

på forhånd tak!
Avatar billede nicklasb Nybegynder
05. september 2003 - 17:47 #1
du kan saktens slette variablen i bunden af din side. Men tror desværre ikke det vil have den store betydning på dit problem. Når du i din browser klikker opdater, beder du browseren om at hente den side den er inde på med samme kriterier og funktioner, som den hentede den med sidst (altså somom du var på siden før og klikkede submit igen). Grunden til at boksen med at du allerede har haft kørt denne komando kommer frem er for at du ikke at stoppe dem der ikke ved at de har submittet før, og fortælle dem at deres data bliver sendt på ny.

En brugbar løsning ville være at sende alle dataene til en anden side. Sammen med dine data laver du så også en

<?
$thissite = $_SERVER['PHP_SELF'];
if (!empty($_SERVER["QUERY_STRING"])) {
    $thissite .= '?' . $_SERVER['QUERY_STRING'];
}
echo '<input name="forumreferer" type="hidden" value="' . $thissite . '">
';
?>

På din nye side skriver du nu lige som du har gjordt i toppen af din normale forumside, koden der søger for at putte dataene i din database. Efterfølgende sender du nu bare brugeren videre til $_POST['forumreferer'] med en header location.
Så er problemet med at brugeren kan poste flere gange, ikke længere et problem.. :D
Avatar billede majbom Novice
05. september 2003 - 18:40 #2
det lyder smart, men jeg fostår det ikke helt...

hvordan laver du en header location?
Avatar billede nicklasb Nybegynder
05. september 2003 - 18:45 #3
en simpel header med input location ?!?

Du skriver bare
header ('location: ' . $_POST['forumreferer']);
i bunden af dit script.. Og så skal du sørge for at der på intet tidspunkt bliver skrevet noget ud på skærmen. Hverken i eller uden for din <? og ?>.
burde virke.. ;D
Avatar billede majbom Novice
05. september 2003 - 18:58 #4
jeg kan godt skrive header ('location: vispost.php');
ik'?
Avatar billede nicklasb Nybegynder
05. september 2003 - 18:59 #5
jo.. men så går den jo bare kun tilbage til vispost.php..
Ideen med alt det jeg skrev var at du i dit forum havde flere tråde, og disse var blevet kaldt med fx vispost.php?id=35
Så havde den selv gået tilbage til den samme post igen, ved nu posting.. Men jo. Hvis du bare vil tilbage til vispost.php er det som du har skrevet den..! :D
Avatar billede majbom Novice
05. september 2003 - 19:10 #6
hov.. jeg skrev forkert
det skulle være sådan: header ('location: '.$_POST['forum']);

men der er fejl...
Avatar billede majbom Novice
05. september 2003 - 19:18 #7
weeeee

fik det til at virke

takker mange gange for den fantastiske hjælp :D
Avatar billede kr-data Nybegynder
06. september 2003 - 16:14 #8
det ville være en god idé for dig at lukke dette spørgsmål!
Avatar billede nicklasb Nybegynder
06. september 2003 - 18:33 #9
lyder fedt at du har fået det til at virke! Ligger et svar, så du kan få delt point ud :D
Avatar billede majbom Novice
10. september 2003 - 09:01 #10
-> kr-data - det er lidt svært at lukke spørgsmålet, når jeg ikke har fået et muligt svar jo...
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