Hi eenieder,
Wanneer ik een script om een formulier te maken en ik simuleer een fout dan krijg ik de volgende melding:
Warning: Cannot modify header information - headers already sent by (output started at /Users/gebruiker/Documents/PHP/PHP leren/stats.php:4) in /Users/gebruiker/Documents/PHP/PHP leren/verwerk.php on line 49
Je bent vergeten om achternaam in te vullen.
Terwijl ik eigenlijk ook verwacht had dat de browser mij dan automatisch naar formulier.php terug zou sturen? Klopt dat?
Alleen snap ik dan niet meer precies waar de foutmelding zichtbaar zou moeten worden want die verschijnt nu gewoon in verwerk.php
Wat zie ik over het hoofd?
Alvast bedankt!
Code (php)
<?php
include 'stats.php';
// Controle of een formulier gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Arrays declareren voor opslag van fouten en data
$aErrors = array();
$aData = array();
// Velden die in het formulier aanwezig moeten zijn
$aFormulierVelden = array('voornaam', 'achternaam');
// Alle formuliervelden doorlopen
foreach($aFormulierVelden as $sVeld)
{
// Controleren of er een waarde voor het formulierveld bestaat
if(isset($_POST[$sVeld]))
{
// Spaties aan begin en eind weghalen
$sValue = trim($_POST[$sVeld]);
// Controle of variabele gevuld is
if(empty($sValue))
{
// Foutmelding toevoegen
$aErrors[] = 'Je bent vergeten om '.$sVeld.' in te vullen';
}
// Ingevulde waarden aan data array toevoegen
$aData[$sVeld] = $sValue;
}
else
{
$aErrors[] = 'Het veld '.$sVeld.' is niet gepost!';
}
}
// Controleren of er geen fouten opgetreden zijn
if(empty($aErrors))
{
// Formulier succes!
echo '<p>Je hebt het formulier succesvol ingevuld! De volgende gegevens zijn bekend:</p>';
echo '<p>Voornaam: '.$aData['voornaam'].'<br />';
echo 'Achternaam: '.$aData['achternaam'].'</p>';
}
else
{
// Fouten opgetreden: weergeven en terug naar formulier
header('Refresh: 3; url=formulier.php');
foreach($aErrors as $sError)
{
echo '<p style="color:red">'.$sError.'</p>';
}
}
}
else
{
// Verwerk.php mag nog niet bezocht worden, terug naar het formulier
header('Location: formulier.php');
}
?>
3.353 views