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.
Dit werkt gewoon:
sessie_pagina1.php:
<?php
session_start();

$_SESSION['blaat'] = 'blaat';
$_SESSION['hits_pagina1'] = (isset($_SESSION['hits_pagina1']) ? $_SESSION['hits_pagina1'] + 1 : 1);

session_write_close();
header('location: sessie_pagina2.php');
exit;
?>

sessie_pagina2.php:
<?php
session_start();

echo 'blaat: ', $_SESSION['blaat'], '<br />',
'hits_pagina1: ', $_SESSION['hits_pagina1'], '<br />',
'<a href="sessie_pagina1.php">Terug naar pagina 1</a>';
?>

Moet je wel eerst naar "sessie_pagina1.php" gaan.
@Jelmer,

ik snap je niet...

@alle anderen

er wordt idd al dingen ge-echo'd; dat klopt.

Vandaar dat ik dus ook over ben gegaan naar javascript.
Zelf heb ik geen zin om extra pagina's te gaan gebruiken, reden hiervoor is vrij simpel : ik wil overzicht in me code houden.

er komen gewoon weg teveel input forms op de site dat ik wil weten wat wat is.

Maar bij deze mag hij als opgelost komen te staan (closed?) javascript bied wel een oplossing voor mij :)
er wordt idd al dingen ge-echo'd; dat klopt.
Dan de oplossing: Niks echoen!

Ik wil niet lullig doen, maar dat had je zelf toch ook wel kunnen bedenken?

Mijn scripts maken letterlijk pas op de allerlaatste regel de html-output aan. Tot die tijd worden er alleen maar variabelen aangemaakt met gegevens die uiteindelijk moeten worden geechood, wat dus op de allerlaatste regel gebeurd. Gevolg: Ik heb nooit gedonder met cookies en/of sessies.

Tip: Gebruik een template-engine.
je kan ook een buffer gebruiken:
<?php ob_start(); /*en */ ob_end_flush();?>
sorry voro doublepost, met die functies boven en onderaan je pagina kun je gewoon tussendoor echoen en headers plaatsen etc, omdat dan pas op het einde van het bestand de data wordt verzonden naar de client.
@door,

Je doet niet lullig, ik had het idd zelf kunnen bedenken, probleem is dat ik met includes werk die al wel wat lopen te outputten.

@stefan,

Buffer kan inderdaad ook, maar de persoon met wie ik de website maak die wil dat niet gebruiken,

anyway, ik houd het op een mooi javascriptje!

Toch bedankt jullie allen!

Reageren