header('Refresh: 3; url=formulier.php');
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)
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)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?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');
}
?>
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');
}
?>
Geen header gebruiken nadat je al iets naar de browser toe hebt gestuurd!
Eerst je php script en daarna pas het html deel!
zelfde als hier: http://www.phphulp.nl/php/forum/topic/session-errors/75706/last/
Eerst je php script en daarna pas het html deel!
zelfde als hier: http://www.phphulp.nl/php/forum/topic/session-errors/75706/last/
Gewijzigd op 17/01/2011 17:19:16 door Yea Rupie
In welk geval stuur ik iets al naar de browser? Dit is dus toch alleen maar PHP? (oei, misschien een domme vraag)
Toevoeging op 17/01/2011 17:48:06:
ik bedoel PHP en HTML zijn gescheiden...
Toevoeging op 17/01/2011 17:48:06:
ik bedoel PHP en HTML zijn gescheiden...
Het probleem ligt in stats.php
Waar je op moet letten: stats.php moet beginnen met <?php. Geen enkele spatie, tab, enter, ... mag daar voor komen.
Er mag ook geen enkele spatie, tab, enter, ... komen tussen ?> en het einde van de file.
Ook mag nergens anders gelijk wat buiten php haakjes staan.
De simpelste manier is om die ?> gewoon weg te laten.
Waar je op moet letten: stats.php moet beginnen met <?php. Geen enkele spatie, tab, enter, ... mag daar voor komen.
Er mag ook geen enkele spatie, tab, enter, ... komen tussen ?> en het einde van de file.
Ook mag nergens anders gelijk wat buiten php haakjes staan.
De simpelste manier is om die ?> gewoon weg te laten.
header() mag geen output naar de browser hebben. Dit staat binnen de <body> tags. Althans dat neem ik aan want ik zie echo.
Met PHP en HTML scheiden wordt bedoeld eerst PHP en dan pas de HTML. Er mag natuurlijk altijd stukken php tussen je HTML staan. Maar niet alles gaat werken zoals je nu al hebt gemerkt.
Met PHP en HTML scheiden wordt bedoeld eerst PHP en dan pas de HTML. Er mag natuurlijk altijd stukken php tussen je HTML staan. Maar niet alles gaat werken zoals je nu al hebt gemerkt.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
// Hier je php code.
?>
<html> en wat er verder hier dan ook tussen staat.</html>
// Hier je php code.
?>
<html> en wat er verder hier dan ook tussen staat.</html>
Gewijzigd op 17/01/2011 18:02:54 door - Mark -




