Warning: Cannot modify header information - headers already sent by (output started at

Deze foutmelding krijg ik. Waarom? Google verteld mij dat ik geen php ervoor mag uitvoeren. Andere sites zeggen dat ik helemaal niks mag uitvoeren. Zelf heb ik op localhost iets waar ik gewoon eerst output heb en dan header('Location: index.php'); heb waar die het gewoon doet. Ligt dit aan de versie van PHP ofzo?
- Aar - dat zit toch net iets anders in elkaar. Ik vind het nog wel vreemd waarom die test op 000webhost ook gewoon redirecte


[size=xsmall]Toevoeging op 12/10/2012 18:06:44:[/size]

- Aar - dat zit toch net iets anders in elkaar. Ik vind het nog wel vreemd waarom die test op 000webhost ook gewoon redirecte
Albert de Wit op 12/10/2012 18:06:43

- Aar - dat zit toch net iets anders in elkaar.

Verklaar je nader....

Ik vind het nog wel vreemd waarom die test op 000webhost ook gewoon redirecte

Dat heb ik al eerder gezegd. Dus vreemd dat je het dan nog vreemd vindt?
Mijn advies, doe het gewoon in één keer goed.
Albert houd je even in alsjeblieft en blijf respectvol met elkaar omgaan.
Anders word ik ook respectloos en gaat er een slot op dit topic.
Als je dan toch die buffer gebruikt, wat maakt het dan nog uit?

[size=xsmall]Toevoeging op 12/10/2012 18:11:55:[/size]

Als je dan toch die buffer gebruikt, wat maakt het dan nog uit?
het is onnodig, je gaat geen heel script in het geheugen bufferen/opslaan.
Resource-verspilling...

Dus script gewoon goed, en netjes en ga vriendelijk met de voor jouw deels aangestelde server om.
Albert iets wat op localhost wel werkt wil niet zeggen dat dit op een goede server ook werkt. output voor een redirect is niet toegestaan zoals eerder vermeld door leden en ik vind dat jou reactie op Cake ook helemaal niet kan. Als je de hulp die je hier krijgt ( wat overigens goed is ) niet waardeert dan zou ik mijn vraag ook niet stellen als ik jou was ( vooral als je daarna jezelf tegen gaat spreken ). Zoals Aar ook al zegt je kan instellingen fout hebben staan of niet aan hebben staan hiervoor kan je de

<?php
phpinfo();
?>

van je localhost raadplegen.

Overigens vind ik 000webhost nou niet bepaald een goede testserver.. gratis servertjes of hostruimtes zijn niet altijd goed.
Om hier nog even op terug te komen, want dit heeft me wel aan het denken gezet. Stel ik heb een index.php


<html>
<head>
	<title>
               blahblah
	</title>
</head>
<body>
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db   = 'test';

$mysql = new mysqli($host,$user,$pass,$db);
if (!$mysql){
	echo 'Er is iets fout gegaan!';
}else{
	include_once 'header.php';
	include_once 'body.php';
	include_once 'footer.php';
}

?>
</body>
</html>


Hoe moet ik dan ergens die

<?php 
header('Location: index.php?blahblah');
exit();
?>

neerzetten? Moet ik dat bijvoorbeeld in een bestandje helemaal bovenin voor de HTML tags includen?
Wat je moet doen is alle logica boven je HTML plaatsen en in je HTML alleen wat simpele if statements, loopjes en echo's. In jou geval: (vergeet doctype niet, belangrijkste element van je hele code, de rest mag je allemaal weglaten!!)

<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db   = 'test';
$errors = array();

$mysql = new MySQLi($host, $user, $pass, $db);

if (!$mysql) {
    $errors[] = 'Er is iets fout gegaan!';
} else {
    include_once 'header.php';
    include_once 'body.php';
    include_once 'footer.php';
}

?>
<!doctype html>
<html>
<head>
    <title>
               blahblah
    </title>
</head>
<body>
<?php if (0 < count($errors)) : ?>
    <ul id=errors>
    <?php foreach ($errors as $error) : ?>
        <li><?php echo $error ?></li>
    <?php endforeach ?>
    </ul>
<?php endif ?>
</body>
</html>
Oke maar nu ziet de pagina er ongeveer zo uit als ik dat ga doen.


<div class="header_container">
  <div class="header_container_menu">
    <div class="header_container_menu_item">
      <a href="index.php">Home</a>
    <div>
    <div class="header_container_menu_item">
      <a href="index.php?pagina=over_mij">Over mij</a>
    <div>
    <div class="header_container_menu_item">
      <a href="index.php?pagina=gastenboek">Gastenboek</a>
    <div>
  </div>
</div>

<div class="body_container">
  <?php
    if (isset($_GET['pagina'])){
      include_once 'pagina/'.$_GET['pagina'].'.php';
    }
  ?>
</div>

<!doctype html>
<html>
<head>
    <title>
               blahblah
    </title>
</head>
<body>
<?php if (0 < count($errors)) : ?>
    <ul id=errors>
    <?php foreach ($errors as $error) : ?>
        <li><?php echo $error ?></li>
    <?php endforeach ?>
    </ul>
<?php endif ?>
</body>
</html>


Kan dit wel? Ik ben hier niet bekend mee maar nu outputten we spul voor de html tags?
Dat gaat niet werken natuurlijk.

Reageren