Goedenavond,
Is er iemand die weet wat het probleem is met dit script, waardoor ik de volgende foutmelding krijg?
Ik gebruikt dit script, alleen worden de sessies niet aangemaakt en ik zit een beetje in de knoei met hoe ik er nou mee verder moet!Cannot modify header information - headers already sent
Ik hoop dat iemand me hier mee kan helpen.PHP Code:
<?php
session_start();
include("config.php");
?>
<!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>o</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="header"><div id="login">
<form action="" method="post">
<input type="text" border="0" class="login_input" name="naam" value="Gebruikersnaam" onBlur="if(this.value == '') { this.value='Gebruikersnaam'}"
onfocus="if (this.value == 'Gebruikersnaam'){this.value=''}" />
<input type="password" border="0" class="login_input2" name="pass" value="mijnwachtwoord" onBlur="if(this.value == '') { this.value='mijnwachtwoord'}"
onfocus="if (this.value == 'mijnwachtwoord'){this.value=''}" />
<input type="submit" class="login_submit" border="0" value="." />
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Logingegevens uit de database halen
$qLogin = mysql_query("SELECT id FROM gebruikers WHERE
gebruikersnaam = '".mysql_real_escape_string($_POST['naam'])."' AND
wachtwoord = '".sha1($_POST['pass'])."'");
while($rij = mysql_fetch_array($qLogin))
$qActivatie = mysql_query("SELECT COUNT(id) FROM gebruikers, gebruikers_activaties WHERE
gebruikers.gebruikersnaam = '".mysql_real_escape_string($_POST['naam'])."' AND
gebruikers.id = gebruikers_activaties.gebruikers_id");
if(mysql_result($qActivatie,0) != 0) {
echo 'Het account is nog niet geactiveerd.';
} elseif(mysql_num_rows($qLogin) == 0) {
echo 'De gebruikersnaam/wachtwoord combinatie is niet correct.';
} else {
while($rij = mysql_fetch_array($qLogin)){
$uid = $rij['id'];
}
$_SESSION['uid'] = $uid;
$_SESSION['gebruiker'] = mysql_result($qLogin, 0);
$_SESSION['gebruikersnaam'] = $_POST['gebruikersnaam'];
header("location: controlepaneel.php");
}
}
?>
</div></div>
<div id="menu"> <a href="#">Startpagina</a>
<a href="#">Registreren</a>
<a href="#">Foto's</a>
<a href="#">Leden</a>
<a href="#">Tell-a-friend</a>
<a href="#">Bookmark</a>
<a href="#">Info</a>
<a href="#">Contactformulier</a>
</div>
<div class="container">
<div class="content-top">Foto's van online leden</div>
<div class="content-mid">Foto's</div>
<div class="content-bottom"></div>
<div class="content-top">Random foto's van leden</div>
<div class="content-mid">Foto's</div>
<div class="content-bottom"></div>
<div class="content-top">Foto's van populaire leden</div>
<div class="content-mid">Foto's</div>
<div class="content-bottom"></div>
<div id="copyright">© Copyright 2010-2011 | Alle rechten voorbehouden</div>
</div>
</body>
</html>
Alvast bedankt,
Gr. Jos
- Cannot modify header information - headers already sent
-
10-11-2010, 22:42 #1
- Berichten
- 944
- Lid sinds
- 14 Jaar
Cannot modify header information - headers already sent
-
10-11-2010, 22:44 #2
- Berichten
- 491
- Lid sinds
- 17 Jaar
Re: Cannot modify header information - headers already sent
probeer het eens met dit, helemaal bovenaan de pagina
PHP Code:<? ob_start();?>
-
10-11-2010, 22:47 #3Ondernemer
- Berichten
- 70
- Lid sinds
- 15 Jaar
Re: Cannot modify header information - headers already sent
Je wilt een header toevoegen terwijl er al headers verzonden zijn, bekijk dit artikel eens.
http://www.wmcity.nl/artikelen.php?actie=bekijk&id=147
-
10-11-2010, 22:49 #4Elephant Media GbR
- Berichten
- 1.255
- Lid sinds
- 18 Jaar
Re: Cannot modify header information - headers already sent
check even op spaties voor session_start();
-
10-11-2010, 22:50 #5
- Berichten
- 206
- Lid sinds
- 15 Jaar
Re: Cannot modify header information - headers already sent
ik denk dat je helemaal bovenaan je script, voordat <?php begint, er een witregel of een spatie of tab ofzo staat. Deze wordt dan naar de browser gestuurd voordat je session_start() aanroept, waardoor je die error krijgt.
-
10-11-2010, 22:51 #6
- Berichten
- 171
- Lid sinds
- 18 Jaar
Re: Cannot modify header information - headers already sent
Dat werkt normaal wat robinvb zegt.
Maar , de reden dat deze fout optreed is dat er html code verzonden wordt voordat er een php header verzonden wordt.
Dit ontstaat ook als er een witruimte of IETS dergelijks voor je begin <?php komt.
Zoals het voorbeeld stukje code dat je getoond hebt staat er witruimte voor je <?php vanboven. Maar daar treed de fout niet op. Je toont een deel van je layout en dan komt je login controle die een header verstuurt. Oplossing is dus dat je ob_start gebruikt of zorgt dat je session_start(); en je code die alles controleert en de header verstuurt dus geplaatst wordt voordat er html afgedrukt wordt op het scherm.
Wat deze functie ob_start(); doet is er voor zorgen dat er gewacht wordt met html verzenden tot dat de php code uitgevoerd is als ik me niet vergis
-
10-11-2010, 22:51 #7
- Berichten
- 944
- Lid sinds
- 14 Jaar
Re: Cannot modify header information - headers already sent
Dat zorgt wel dat de foutmelding verdwijnt, alleen de sessie wordt nog niet aangemaakt...
-
10-11-2010, 22:54 #8
- Berichten
- 171
- Lid sinds
- 18 Jaar
Re: Cannot modify header information - headers already sent
Ik zal even kijken naar de rest van de code of daar nog iets foutloopt, maar om je probleem van net te verhelpen dacht ik de code op volgende manier te gebruiken:
http://www.codedump.be/code/1030/
Ben je zeker dat de sessie niet aangemaakt wordt?
(Op iedere pagina waarin je de sessie wil gebruiken moet bovenaan je pagina session_start(); staan, niet alleen in de pagina waarin de sessie gemaakt wordt.)
-
10-11-2010, 22:57 #9
- Berichten
- 944
- Lid sinds
- 14 Jaar
Re: Cannot modify header information - headers already sent
Ik kwam een spatie tegen voor session_start(); op de pagina waar ik controleerde of de sessie werkte, dus even kijken of ie het nu wel doet.
EDIT: M'n webhost ligt er uit volgens mij, moet ik daar even op wachten...
-
10-11-2010, 23:02 #10
- Berichten
- 171
- Lid sinds
- 18 Jaar
Re: Cannot modify header information - headers already sent
Ok, ik was ook even je code aan het bekijken en als je het niet erg vind geef ik je even een paar tips voor het programmeren in php (zoals ik het zelf toepas, ik zeg niet dat dit het beste is):
Ik zie dat je je login controle doet door:PHP Code:while($rij = mysql_fetch_array($qLogin))
PHP Code:} elseif(mysql_num_rows($qLogin) == 0) {
echo 'De gebruikersnaam/wachtwoord combinatie is niet correct.';
}
En als tweede wou ik even zeggen dat als je gegevens uit 1 rij wil halen, dan moet je er niet per se met een while lus door loopen. Dan bedoel ik volgende code van je:
PHP Code:while($rij = mysql_fetch_array($qLogin)){
$uid = $rij['id'];
}
PHP Code:$rij = mysql_fetch_array($qLogin);
$uid = $rij['id'];
-
10-11-2010, 23:28 #11
- Berichten
- 944
- Lid sinds
- 14 Jaar
Re: Cannot modify header information - headers already sent
Oké hartsikke bedankt voor de tips, zo leer ik toch nog wat!
-
10-11-2010, 23:50 #12
- Berichten
- 232
- Lid sinds
- 17 Jaar
Re: Cannot modify header information - headers already sent
Klein SQL tipje:
PHP Code:$qActivatie = mysql_query("SELECT COUNT(id) FROM gebruikers g, gebruikers_activaties ga WHERE
g.gebruikersnaam = '".mysql_real_escape_string($_POST['naam'])."' AND
g.id = ga.gebruikers_id");
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic