Archief - PHP: Headers already sent.. ik zie de fout niet

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Miche

Legacy Member
Hey,

Zonder twijfel zal dit al meermaals gevraagd zijn, en ik weet wat de oplossing is (heb dit artikel gelezen) maar ik vind mijn fout niet in mijn code.. kan iemand me helpen? (de output buffering werkte ook niet)

Foutmelding:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /usr/local/psa/home/vhosts/cross-fire.be/httpdocs/5ha/index.php:1) in /usr/local/psa/home/vhosts/cross-fire.be/httpdocs/5ha/index.php on line 1

Code:
PHP:
<?php session_start();
require_once("connect.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="5ha.css" media="screen" />
<link rel="stylesheet" type="text/css" href="print.css" media="print" />
<title>5 Handel</title></head>

<body><div id="wrap">

<img id="frontphoto" src="header.gif" width="760" height="175" alt="" />


<div id="avmenu">
<h2 class="hide">Menu:</h2>
<ul>
<li><a href="#">Nieuws</a></li>
<li><a href="#">Bestanden</a></li>
<li><a href="#">Foto's</a></li>
<li><a href="#">Contactgegevens</a></li>
</ul>

<div class="announce">
<?php if ($_SESSION["loggedin"] == "1") { ?>
<ul>
<li><a href="#">Login</a></li>
<li><a href="#">Login</a></li>
<li><a href="#">Login</a></li>
<li><a href="#">Login</a></li>
</ul>
<?php } ?>
<?php if ($_SESSION["loggedin"] == "") { ?>
<h3>Inloggen :</h3>

<form id="login" method="post" action="login.php">
  <p>
    <input name="username" type="text" class="small" id="naam" value="Naam" />
    <br />
    <input name="paswoord" type="password" class="small" id="paswoord" value="Paswoord" />
    <br />
    <input name="login" type="submit" class="small" id="login" value="Log in" />
  </p>
</form>
</div>
<?php } ?>
</div>
<div id="content">
<h2>Welkom klasgenootjes! </h2>
<p>De bedoeling van deze website is om het schooljaar nog wat makkelijker te maken! Als iedereen die taken op de PC maakt, of samenvattingen voor KO's/GO's/Examens op de pc schrijft, deze nu eens op deze site zet, dan kan iedereen daarmee geholpen worden. Help zelf mensen met jouw samenvattingen of taken, of word geholpen door de samenvattingen of taken van iemand anders te downloaden! </p>

<h3><em>Laatste toevoegingen: </em></h3>
<p>Hier zullen de laatste nieuwsberichten, taken of toetsen weergegeven worden. Om zelf iets toe te voegen, log in met jouw naam en jouw paswoord. </p>

</div>

<div id="footer">
Copyright &copy; 2005-2006 <strong>Michael Passy </strong></div>
</div>
</div>
</body>
</html>

Thx :)

ecko

Legacy Member
Op het eerste zicht lijkt dit OK te zijn.
Normaalgezien komt die error enkel voor indien je
PHP:
session_start();
niet aan het begin van je file hebt staan.

Komt deze regel ook voor in je connect.php file?

Verder hoogstwaarschijnlijk een stomme opmerking, maar is het niet "beter" je <?php te laten volgen door een newline?
PHP:
<?php
session_start();
require_once("connect.php");
...

Miche

Legacy Member
connect.php
PHP:
<? ob_start();
// connect database
$connect = mysql_connect("localhost", "michael", "***") or die("coud not connect to database: ". mysql_error());
// selecteer database
mysql_select_db("handel");
ob_end_flush();
?>

login.php (vooraleer iemand dat vraagt, aangezien deze word aangeroepen bij "action" in het form)
PHP:
<?php
session_start();
include "connect.php" ;

$sql = "SELECT login.id, login.username, login.paswoord FROM login WHERE login.username = '".$_POST["naam"]."' AND login.paswoord = '".sha1($_POST["paswoord"])."' " ;
$result = mysql_query($sql, $connect) or die ("could not execute query : ".mysql_error()) ;

if (mysql_num_rows($result) > 0)
{
	// login succes
	while($row=mysql_fetch_object($result))
	{
		$_SESSION["loggedin"] = "1" ;
		$_SESSION["id"] = $row["id"] ;
		$_SESSION["username"] = $row["username"] ;
		$_SESSION["error_msg"] = "" ;
		

		header("Location: index.php") ;
		exit ;
		
	}	
}
else
{
	// failed login
	$_SESSION["loggedin"] = "" ;
	$_SESSION["error_msg"] = "Fout bij het inloggen." ;
	header("Location: index2.php") ;

	exit ;
}

?>

En in mijn index.php staat er niets voor de <?php .. heb het al duizend keer nagekeken :s

Miche

Legacy Member
Hmm, heb net even iets opgemerkt.

http://cross-fire.be/5ha/index.php

Dit is dus de pagina waar de error zich voordoet, zo zie je dus (met firefox) linksboven een aantal tekentjes staan "" en deze staan ook weergegeven als je de paginabron bekijkt. Raar.. want in mijn code staan deze tekentjes niet, en in explorer worden ze ook niet weergegeven. Mischien heeft het daar iets mee te maken? (in explorer werkt het ook niet dus ik betwijfel het...)

Thx :)

ecko

Legacy Member
Verwijder die "ob_start();" en "ob_end_flush();" eens.
Dat slaat imho op niets, aangezien er geen output gegenereerd zou mogen worden in dat deel van je code.
-Als dit wel zo is, enlighten me over de bedoeling ervan.
Je hebt btw <? staan ipv <?php
Detail, maar het kan zeker een invloed hebben. (Zeker ivm die sessies)

Probeer echt <?php op een aparte lijn te zetten, dat vergemakkelijkt het lezen. (Persoonlijke keuze natuurlijk)

Miche

Legacy Member
Die stonden er omdat ru_orez me had gezegd dat dat het zou oplossen (deze stonden ook in de index) ik heb ze nu verwijderd, en het lost niets op. :)

GenesisX

Legacy Member
Normaal moet je
PHP:
<?php
session_start();
?>
aan het begin zetten van je hoofddocument. Dus niet aan het begin van het bestand dat je include.


Zet eens
PHP:
<?php
session_start();
echo'lalalalala';
?>
aan het begin van je hoofddocument en kijk dan in de source in je browser waar die lalalala staat. Staat er nog iets voor, dan staat het niet voorraan en weet je je probleem.

Beetje raar maarjah, zo heb ik het ook eens gedaan :)

ecko

Legacy Member
Ik zie staan "on line 2"
Volgens mij staat op die lijn je "connect.php" include/require.
Logisch zou dus zijn dat de fout daar gezocht moet worden, hoewel ik daar niet helemaal zeker van ben.

[edit]Luister naar de man hierboven ;)[/edit]

Miche

Legacy Member
Genesix: http://cross-fire.be/5ha/index.php

kijk zelf waar die lalala staat.. die staat niet echt boven aan :s die rare tekentjes zoals ik al zei staan er.. maar die staan niet in mijn code, die worden automatisch gemaakt door iets :s echt heel raar... :s

Miche

Legacy Member
ecko zei:
Ik zie staan "on line 2"
Volgens mij staat op die lijn je "connect.php" include/require.
Logisch zou dus zijn dat de fout daar gezocht moet worden, hoewel ik daar niet helemaal zeker van ben.

ik had juist een aparte lijn gemaakt voor mijn "<?php" line 2 duidt wel degelijk op session_start(); :)

ecko

Legacy Member
Zet in elke file zo'n echo vlak na de session_start();
-best er wel de filename in zetten-

Op die manier moet het wel te vinden zijn denk ik.

Miche

Legacy Member
niet dak weet :s daar staat niets van echo of iets dergelijks in..

mischien mijn CSS ?

5ha.css
PHP:
body {
margin: 0 auto;
padding: 0;
font: 76% Verdana,Tahoma,Arial,sans-serif;
background: #f4f4f4 url(bg.gif) top center repeat-y;
}

#wrap {
background: #ffffff;
color: #303030;
margin: 0 auto;
width: 760px;
}

#header {
clear: both;
margin: 20px 0 0 0;
padding: 0;
height: 45px;
}

#header h1 {
width: 250px;
margin: 0 0 10px 0;
float: left;
}

#header p {
width: 500px;
float: right;
text-align: center;
color: #a0a0a0;
margin: 0 0 10px 0;
font-size: 0.8em;
line-height: 1.2em;
}

#frontphoto {
margin: 0 0 10px 0;
border: 0;
}

#avmenu {
clear: left;
float: left;
width: 150px;
margin: 0 0 10px 0;
padding: 0;
font-size: 0.9em;
}

#avmenu ul {	
list-style: none;
width: 150px;
margin: 0 0 20px 0;
padding: 0;
font-size: 1.1em;
}	

#avmenu li {
margin-bottom: 4px;
}

#avmenu li a {
font-weight: bold;
height: 20px;
text-decoration: none;
color: #505050;
display: block;
padding: 6px 0 0 10px;
background: #f4f4f4;
border-left: 4px solid #cccccc;
}	
	
#avmenu li a:hover {
background: #eaeaea;
color: #286ea0;
border-left: 4px solid #286ea0;
}

.announce {
margin: 10px 0 10px 0;
padding: 10px;
width: 130px;
color: #505050;
background-color: #f4f4f4;
line-height: 1.3em;
}

#extras {
float: right;
width: 100px;
margin: 0 0 10px 0;
padding: 0;
font-size: 0.9em;
line-height: 1.5em;
}

#extras p {
margin: 0 0 1.5em 0;
}

#content {
margin: 0 110px 20px 160px;
border-left: 1px solid #f0f0f0;
border-right: 1px solid #f0f0f0;
padding: 0 10px 0 10px;
line-height: 1.6em;
text-align: left;
}

#content h2 {
font-size: 1.5em;
margin: 0 0 0.5em 0;
}

#content img {
padding: 1px;
display:inline;
background: #cccccc;
border: 4px solid #f0f0f0;
}

h3 {
font-size: 1.3em;
margin: 0 0 10px 0;
}

a {
text-decoration: none;
color: #286ea0;
}

a:hover {
text-decoration: underline;
color: #286ea0;
}

a img {
border: 0;
}

#footer {
clear: both;
margin: 0 auto;
padding: 10px 0 20px 0;
border-top: 4px solid #f0f0f0;
width: 760px;
text-align: center;
color: #808080;
font-size: 0.9em;
}

#footer a {
color: #808080;
text-decoration: none;
}

#footer a:hover {
text-decoration: underline;
}

.left {
margin: 10px 10px 5px 0;
float: left;
}

.right {
margin: 10px 0 5px 10px;
float: right;
}

.textright {
text-align: right;
}

.center {
text-align: center;
}

.small {
font-size: 0.8em;
}

.bold {
font-weight: bold;
}

.hide {
display: none;
}

print.css
PHP:
body {
margin: 0 auto;
padding: 0;
font-family: "Times New Roman",Serif;
background: #ffffff;
color: #000000;
}
	
#wrap {
margin: 2%;
width: auto;
float: none !important;
}

#header h1 {
margin: 0 0 10px 0;
}

#frontphoto, #avmenu ul, #extras, .announce, .hide {
display: none;
}

#content img {
display: none;
}

a {
text-decoration: underline;
color: #0000FF;
}

ecko

Legacy Member
Probeer gewoon eens een file met daarin:
PHP:
<?php
session_start();
require_once("connect.php");
?>
Kijk eens wat dat geeft?

[edit]Check eens je lijn met je "require_once"
Je had staan:
PHP:
require_once("connect.php');
Merk de singlequote op.

[edit2]blaat, waarschijnlijk typfout van mij geweest in mijn eerste post[/edit2]

GenesisX

Legacy Member
Toon es je connect.php, we hebben je css niet nodig hoor :p

Dit bedoelt hij
PHP:
<?php
echo'Zet hier de bestandsnaam';
?>

Luister naar de man hierboven :p

Miche

Legacy Member
connect.php
PHP:
<?php
session_start();
echo "lalala (connect)";
// connect database
$connect = mysql_connect("localhost", "michael", "iib7958") or die("coud not connect to database: ". mysql_error());
// selecteer database
mysql_select_db("handel");
?>

index.php
PHP:
<?php
session_start();
echo "lalalalala(index)";
require_once("connect.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="5ha.css" media="screen" />
<link rel="stylesheet" type="text/css" href="print.css" media="print" />
<title>5 Handel</title></head>

<body><div id="wrap">

<img id="frontphoto" src="header.gif" width="760" height="175" alt="" />


<div id="avmenu">
<h2 class="hide">Menu:</h2>
<ul>
<li><a href="#">Nieuws</a></li>
<li><a href="#">Bestanden</a></li>
<li><a href="#">Foto's</a></li>
<li><a href="#">Contactgegevens</a></li>
</ul>

<div class="announce">
<?php if ($_SESSION["loggedin"] == "1") { ?>
<ul>
<li><a href="#">Login</a></li>
<li><a href="#">Login</a></li>
<li><a href="#">Login</a></li>
<li><a href="#">Login</a></li>
</ul>
<?php } ?>
<?php if ($_SESSION["loggedin"] == "") { ?>
<h3>Inloggen :</h3>

<form id="login" method="post" action="login.php">
  <p>
    <input name="username" type="text" class="small" id="naam" value="Naam" />
    <br />
    <input name="paswoord" type="password" class="small" id="paswoord" value="Paswoord" />
    <br />
    <input name="login" type="submit" class="small" id="login" value="Log in" />
  </p>
</form>
</div>
<?php } ?>
</div>
<div id="content">
<h2>Welkom klasgenootjes! </h2>
<p>De bedoeling van deze website is om het schooljaar nog wat makkelijker te maken! Als iedereen die taken op de PC maakt, of samenvattingen voor KO's/GO's/Examens op de pc schrijft, deze nu eens op deze site zet, dan kan iedereen daarmee geholpen worden. Help zelf mensen met jouw samenvattingen of taken, of word geholpen door de samenvattingen of taken van iemand anders te downloaden! </p>

<h3><em>Laatste toevoegingen: </em></h3>
<p>Hier zullen de laatste nieuwsberichten, taken of toetsen weergegeven worden. Om zelf iets toe te voegen, log in met jouw naam en jouw paswoord. </p>

</div>

<div id="footer">
Copyright &copy; 2005-2006 <strong>Michael Passy </strong></div>
</div>
</div>
</body>
</html>

output: http://www.cross-fire.be/5ha

volgens mij heeft het echt iets met die tekentjes te maken :p enkel zichtbaar in firefox..

ecko

Legacy Member
Raar :/
how to rctify this warning Cannot send session cache limiter - headers already sent
Jan 4th, 2002 13:50
Stephen van Egmond, aravind miryala,




"Headers already sent" is a generic whine produced by PHP to indicate that:

1. you are doing something that needs to send headers to the browsers
2. headers have already been sent

Session functions try to send out headers.

You need to do the session variable stuff before PHP has sent anything to the user.

Please note that PHP can send output in non-obvious ways.
Watch for extra carriage returns at the top and bottom of
your include files.

This file:

---------

<?
header("Location: ...");
?>
--------

Will produce a complaint that output has already been sent - the extra carriage return at the top.
http://www.faqts.com/knowledge_base/view.phtml/aid/13713/fid/51
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan