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?
oke, en stel ik heb een functie

<?php

function inloggen(){
$inlognaam = mysql_real_escape_string($_POST['inlognaam']);
$wachtwoord= mysql_real_escape_string($_POST['wachtwoord']);
$query = mysql_query("SELECT id_gebruiker FROM gebruiker WHERE inlognaam='".$inlognaam."' AND wachtwoord='".$wachtwoord."'");

$id_gebruiker = mysql_fetch_row($query);

if ($query){
$_SESSION['id_gebruiker'] = $id_gebruiker[0];
header('Location: index.php?pagina=inloggen');
exit();
}else{
$error = 'Inlogcombinatie is fout, probeer het nog eens';
}
}

?>

de word gebruikt in de index.php

<?php

$body = inloggen();

echo '<html> etc......';

?>

is $body op succesvol inloggen nu hetvolgende?

$body = header('Location: index.php?pagina=inloggen');exit();
boven aan je page session_start nog neer zetten.
header heeft geen return.

Dus
$body = header(...)
heeft weinig zin.
session_start(); was ik even vergeten.

dus ik kan hetvolgende

<?php
header('Location: index.php?pagina=inloggen');
exit();
?>

niet opslaan in een variabele?
dan kan ik dus een functie opslaan in een variabele, want zodra de browser doorheeft om door te sturen hoe hij niks te outputten omdat de functie zelf in een variabele word gezet?

[size=xsmall]Toevoeging op 15/10/2012 11:31:00:[/size]

als je via een functie een


header('Location: index.php');
exit();


erinzet, en je roept de functie op, is dat output of niet?

<?php
echo functie(); // word dit als output gezien?
?>
Nee, want de functie wordt meteen beëindigd bij exit(), waardoor de functie niet wordt afgemaakt en dus niks terug geeft.
Op 14/10/2012 17:14:31 plaats je dezelfde code als op 15/10/2012 09:09:15.
Op de 1e heb ik uitgebreid gereageerd en dan blijkt het te gaan om een dummy-code (volgens jouw bericht 14/10/2012 19:26:54).
Waarom zet je er niet bij dat het een dummy-code is. Had ik niet zo uitgebereid hoeven te reageren.
Helemaal vreemd als je die code 2x plaatst, terwijl in mijn reactie al de nodige opmerkingen staan m.b.t. die (dummy) code.

Ten aanzien van je veel van je (bovenstaande) vragen: probeer zelf eens wat. :)
Het merendeel van de vragen die je stelt kun je door zelf te proberen ook een antwoord op vinden.
als ik nu een functie in een if statement zet (zie hieronder), krijg ik een 1 als output... waarom? wat kan hier de oorzaak van zijn?


if ($account->is_ingelogd()){
  $body .= 'Welkom';
}else{
  $body .= include_once('formulier/inloggen.php');
}
@Albert: Obelix geeft je een zeer nuttige tip. Ten eerste vind ik het niet netjes dat je hier totaal geen reactie op geeft, maar gewoon doorgaat met zelf vragen stellen. Dit komt nogal egoïstisch over. Ten tweede, volg de tip van Obelix eens op. Probeer zelf eens wat. Je zit nu een functie aan een variabele te plakken... en waarom daar 1 uitkomt? Zoek het eens op zou ik zeggen. Waar? Kijk maar eens op www.php.net.

[size=xsmall]Toevoeging op 15/10/2012 14:21:04:[/size]

Wouter J op 15/10/2012 14:15:51

Daar heb ik het antwoord allang op gegeven: http://www.phphulp.nl/php/forum/topic/headers-already-sent/87099/2/#624409

Dat maakt het nog erger dat je die vraag stelt.

Reageren