login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Reload zorgt voor dubbele uitvoer

Offline qubus - 02/10/2005 12:05
Avatar van qubusLid Goedendag,

Ik heb een PHP script, waarmee iemand een berichtje op de site kan achterlaten. De PHP pagina wordt opnieuw geladen op het moment dat de bezoeker op 'verzenden' drukt. Door ?action=plaats mee te geven weet het script dat de tekst uit de tekstblokken in de database moet worden geschreven.

Nu komt het probleem. Als de tekst geplaatst is, en de bezoeker druk de reload knop van de browser in, komt het bericht er twee keer in te staan 

Ik dacht het op te lossen door alle strings die ik gebruik met de functie 'unset' van hun inhoud te ontdoen. maar dat helpt niet.

Weet iemand een oplossing, waardoor ik het dubbel posten kan voorkomen?

Alvast bedankt.

5 antwoorden

Gesponsorde links
Offline BigBug - 02/10/2005 12:09
Avatar van BigBug PHP expert Post het script eens... dan is het iets duidelijker en vaak zie je dan eerder hoe je het op kan lossen.
Offline nemesiskoen - 02/10/2005 12:11
Avatar van nemesiskoen Gouden medaille

PHP expert
Je kan het formulier laten doorverzenden naar een andere pagina en deze laten doorverzenden naar een andere. Hierdoor wordt alle data weggeschreven en wordt de "cashe" leeggemaakt.

pagina.php
  1. <?php
  2. if(isSet($_GET['error'])) {
  3. switch($_GET['error']) {
  4. case 1: echo "Er heeft zich een fout voorgedaan tijdens het verzenden van het formulier. Er is een fout met de database server, probeer later opnieuw";
  5. break;
  6. case 2: //hier kan je nog verdere foutafhandeling doen
  7. break;
  8. } else {
  9. ?>
  10. <form name="frm" action="verwerk.php" method="post">
  11. <input type="text" name="naam" />
  12. <input type="submit" name="submit" value="verzend" />
  13. </form>
  14. <?php
  15. }
  16. ?>


verwerk.php
  1. <?php
  2. if(isSet($_POST['submit'])) {
  3. $naam = addslashes(htmlspecialchars($_POST['naam']));
  4. $q = "insert into test (naam) VALUES ('". $naam ."')";
  5. $dat = ob_get_contents();
  6. if(strlen($dat) > 2) {
  7. header("loaction: pagina.php?error=1");
  8. } else {
  9. header("location: pagina.php");
  10. }
  11. }
  12. ?>
Offline qubus - 02/10/2005 12:18 (laatste wijziging 02/10/2005 12:32)
Avatar van qubus Lid Bedankt, is opgelost!
Offline nemesiskoen - 02/10/2005 12:20
Avatar van nemesiskoen Gouden medaille

PHP expert
  1. echo "<form method=\"post\" enctype=\"multipart/form-data\" action=\"index.php\" name=\"toevoegen\">";

==>
  1. echo "<form method=\"post\" enctype=\"multipart/form-data\" action=\"verwerk.php\" name=\"toevoegen\">";


en de rest doen wat ik heb gedaan. Het is trouwens vrij nutteloos om html te echoën.
Offline qubus - 02/10/2005 12:26 (laatste wijziging 02/10/2005 12:30)
Avatar van qubus Lid Dat gaat niet, ik moet index.php als action opgeven. Anders klopt de pagina niet meer. Verder snap ik niet zo goed wat je bedoelt.
Alles gaat namelijk met index.php?pagina= --> en dan net welke pagina ik in het midden wil hebben.

De code verdient waarschijnlijk geen schoonheidsprijs, maar ik ben dan ook maar een beginner die een beetje aan het prutsen is. Mij gaat het er nu even om of het werkt. Al lerende zal de code ook wel verbeteren 

EDIT: Sorry, je bovenste bericht heeft mijn bericht gekruisd! Duidelijker nu. 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.192s