Hallo,
Ik ben bezig met een ledenscript in mijn layout te ''zetten'', maar als ik inlog op de login.php dan geeft hij deze error na het inloggen:
Warning: Cannot modify header information - headers already sent by (output started at /home/humor4li/domains/humor4life.nl/public_html/Members/login.php:11) in /home/humor4li/domains/humor4life.nl/public_html/Members/login.php on line 97

En op de 97e regel staat dit, hier gaat het ook om:
header("Location: index.php");

En mijn vraag is nu: WAT moet ik hieraan aanpassen om te zorgen dat ik die error niet krijg?

Alvast bedankt!
<script language="JavaScript" type="text/javascript">
Dit is toch output verzenden naar de browser?!?

Voordat header() aangeroepen wordt mag er nog 0,0 (ook wel: niets, noppes, nada, geen enkele, niet iets, enz.) output naar de browser verzonden worden. Dus voordat die functie aangeroepen wordt, kun je ook geen HTML naar de browser sturen. Dit gaat dus ook niet werken:

<html>
<head>
</head>

<body>
<?php header('blaat'); ?>
</body>
</html>


Zorg dat je de logica (php) en output (html) gescheiden houdt! Dus:

<?php header('blaat'); ?>
<html>
<head>
</head>

<body>
</body>
</html>
Maar... Nou is het dat die output niet meteen moet worden ''verzonden''. Want het is de bedoeling dat als ik inlog, dat ik dan naar index.php wordt gestuurd. Dus niet dat ik meteen naar de index.php wordt gestuurd! Dit is dat stukje...

$login = 1;
header("Location: index.php");
session_register("login");
session_register("memberid");
Blanche schreef op 11.12.2007 16:28
Zorg dat je de logica (php) en output (html) gescheiden houdt!
Dit betekent dus dat je alle php code aan het begin van je script hebt staan en de output pas aan het einde. Als je in PHP output genereert sla je die tijdelijk op in een variabele of array. Pas als alle logica afgehandeld is, ga je die output naar de browser sturen...

ps. De functie session_register() stamt nog uit de middeleeuwen. Deze syntax is meer van deze tijd:
<?php
$_SESSION['var'] = 'waarde';
?>
Maar als ik de php code in het begin doe, dan komt die ook helemaal bovenaan te staan, en dat wil ik dus niet!
Je zult waarschijnlijk inderdaad wat aan de opbouw van je script moeten veranderen om het op die manier werkend te krijgen. Het is echter wel de enige juiste manier...

Hoe ziet je script er nu uit dan?
Een beetje lang maar ik post het wel met de layout erbij... (met de css eruit gehaald)

<?php
session_start();
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Humor 4 Life |:| LedenGedeelte |:| Home</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--[if lt IE 7.]>
<script defer type="text/javascript" src="pngfix.js"></script>
<![endif]-->
<meta name="Title" content="Humor 4 Life">
<meta name="Author" content="Kees Kluskens">
<meta name="Description" content="Want een dag niet gelachen, is een dag niet geleefd!">
<meta name="Keywords" content="humor, humorplaatjes, humorsite, humorwebsite, humorafbeeldingen, humorpictures, fun, funplaatjes, funsite, funwebsite, funafbeeldingen, funpictures, grappig, humorloos, lolbroek, lol, website, site, moppen, video's, funvideo, humorvideo, mop, mopjes, geld, leuk, fun">
<meta name="Language" content="Nederlands">
<meta name="Copyright" content="&#65533; Copyright 2007-2008  Humor 4 Life">
<meta name="Designer" content="Kees Kluskens">
<meta name="Publisher" content="Kees Kluskens">
<meta name="Revisit-After" content="3 Days">
<meta name="Robots" content="index, follow">
<link rel="shortcut icon" href="favicon.ico" />
</head>

<body>
<div class="fdsafsdfasd">
<div class="adf">
<div class="askdjfladsf"> 
</div>
<div class="ffdasf"> <img src="http://www.humor4life.nl/layout/images/newheader.png" style="border: none;">
</div>
<div class="naasttitel">
</div>
<div class="misluktesmile">
</div>
<div class="slogan"><img src="http://www.humor4life.nl/layout/images/newheader_slogan_.png" style="border: none;"></div>
<div class="titelbar">
(hier zou normaal het topmenu komen, maar dan wordt het te lang...)
</div>
</div>
<div class="content">
<div class="content_up">
</div>
<div class="content_middle">


VANAF HIER BEGINT HET SCRIPT
<?

require("config.php");

if($submit){

$query = mysql_query("SELECT * FROM members WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord' AND geactiveerd = '1'");
$result = mysql_num_rows($query);

if(!$result){
$a = "Je gebruikersnaam en/of je wachtwoord zijn INcorrect.<br><br><a href=\"?gebruikersnaam=$gebruikersnaam\">Ga terug</a>";
}
else{
while($object = mysql_fetch_object($query)){
$memberid = $object->memberid;
}
VANAF HIER BEVINDT (DENK IK) HET PROBLEEM
$login = 1;
session_register("login");
session_register("memberid");
header("Location: index.php");
}
}
else{

if(!$login){
$a = "<form method=\"POST\" action=\"$PHP_SELF\">
  <input type=\"hidden\" name=\"submit\" value=\"1\">
  Naam:<br>
  <input type=\"text\" name=\"gebruikersnaam\" size=\"20\" value=\"$gebruikersnaam\"><br>
  Wachtwoord:<br>
  <input type=\"password\" name=\"wachtwoord\" size=\"20\"><br>
  <input type=\"submit\" value=\"Login\"> <input type=\"reset\" value=\"Aanmelden\"
  onclick=\"document.location.href=('aanmelden.php')\">
</form>";
}
else{
header("Location: index.php");
}
}
// Op de plaats in je layout waar je het inlogformulier wilt hebben doe je ( echo $a; )
echo $a;
?>
<p><br />
<a href="#"><img src="http://www.humor4life.nl/layout/images/top.png" alt="Naar de top van deze pagina" style="border: none;"></a>
</p>
</div>
<div class="content_down"></div>
<div align="center"><p>&copy; 2007 Copyright Humor 4 Life | <a href="http://blueprojects.humor4life.nl/" class='footer'>Blue Projects</a> <a href="http://dutch-113781953969.spampoison.com"><img src="http://pics3.inxhost.com/images/sticker.gif" border="0" width="80" height="15"/></a> Sliced by <a href="http://mrfix.gohosted.nl" class='footer' title='De layout van Humor 4 Life is gesliced door Mr. Fix'>Mr.Fix</a>
</p>

  <br />
</div></div>
<div class="menu">
<div class="menutitel">Humor</div>
<div class="menucontent">

(hier zou dan de menu content komen)
</div>

<div class="menutitel">Algemeen
</div>
<div class="menucontent">
(hier zou nog wat menu content komen..)
</div>
</div>
</div>
</body>
</html>

Reageren