Dit is relatief vrij lastig uit te leggen,
Heb al bij google, het forum en wat andere php websites doorzocht, maar kan gewoon niet vinden wat ik zoek...

HEt probleem is als volgt.

Voor mijn aankomende website heb ik een formulier:

file blaat.php


function formulier() {
  $uitvoer = ""; //init
  $uitvoer .= "  <form action="blaat.php" method="post" name="f">\n";
  $uitvoer .= "  <input type="text" name="gebruikersnaam"><br>\n";
  $uitvoer .= "  <input type="text" name="bericht"><br>\n";
  $uitvoer .= "  <input type="submit" name="actie" value="plaatsen"><br>\n";
  $uitvoer .= "</form>";
  return $uitvoer;
}

function formulier() {
  $uitvoer = ""; //init
  mysql_connect($host,$user,$passwd);
  mysql_select_db($database);
  $sql  = "INSERT INTO berichten (gebruikersnaam, bericht) VALUES ";
  $sql .= "('" . $_POST['gebruikersnaam'] . "','" . $_POST['bericht'] . "')"; 
  mysql_close();

  $uitvoer .= "Uw bericht is geplaatst";
  $uitvoer .= Formulier();
  return $uitvoer;
}


if ((isset($_POST['actie']) && ($_POST['actie'] == "plaatsen")) {
  echo BerichtPlaatsen();
}
else {
  echo Formulier();
}


Ok, heb de code even uit mijn hoofd geschreven, maar er vanuit gaande dat dit werkt.

Ik wil voorkomen dat de user eerst een tussenpagina voor zijn kiezen krijgt (dmv javascript location.href="take_post.php";) of iets dergelijks.

als ik deze pagina refresh krijg ik een popup vanuit firefox / internet explorer of ik de data nogmaals wil verzenden, of dat ik misschien wil annuleren.

Om de pagina te willen zien moet ik dus opnieuw drukken... leuk, maar dan is mijn posting er 2 x.

Om de database te checken met een datum zie ik ook niet echt zitten.

Worden deze $_POST[] variablen nu in de http header gezet? of waar komen deze vandaan? (ik zag op php.net iets van $HTTP_POST_VARS maar dat komt op hetzelfde neer (Gecontroleer met print_r($_POST); en print_r($HTTP_POST_VARS);

Is het mogelijk om deze te 'destroyen'? en dit dus niet meer mogelijk is?

Kan er op internet weinig over vinden, terwijl er best wel wat scripts (lees o.a. fora's) hier gebruik van maken? (met refresh krijg ik in ieder geval geen dubbele postings...


Ben nu paar uur bezig geweest met stoeien, alle hulp is welkom.
blaat.php:
<?php
# Is er wat gepost hier heen?
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{

header('location: blaat.php');
exit;
}
?>
@Martijn,

Hmm dat gaat niet werken aangezien ik gebruik maak van sessies en cookies die de headers already sent hebben zeg maar....
Bij PHP sessies wordt er toch maar 1 keer een cookie aangemaakt, die jou aan de sessie koppelt?

Ik heb een eigen sessie systeem gemaakt met de database en daar maak ik maar 1 keer een cookie aan.
dat klopt,

maar indien session_start(); gebruikt wordt kun je daarna geen headers meer gebruiken.

Daarom was ik over gestapt naar javascript:location.href=''; die voor mijn gevoel ook sneller door stuurt.

header('location : iets.php'); geeft tijdens het parsen van de code al een ander pagina? of moet je dan output buffering gebruiken?
Lukt dit wel dan?

<?php
session_start();

session_write_close();
header('location: blaat.php');
exit;
?>
nope, helaas:

Warning: Cannot modify header information - headers already sent by (output started at /opt/data/apache/PROD

edit:
Weet je misschien waar de post data vandaan komt?deze komt uit de HTTP vars, dus zou weg te drukken moeten zijn?
ik zit toch te denken om een javascript re-direct aan te maken, en deze in een functie te banjeren.

lijkt me het makkelijkst...
Waar slaat dat op? Na session_start() kun je gewoon headers blijven gebruiken, wat is anders het nut ervan? Jij moet eens kijken waar die output vandaan komt, misschien heb je wel ergens een echo neergezet waar die niet thuis hoort of iets anders.
Klinkt als gratis-host reclamebanners a la lycos e.a. to me
weet je zeker dat je echt geen output voor die header hebt?

een spatie kan al te veel zijn...

Reageren