Forum » Server-Side scripting » Header already sent
NJMedia
Berichten: 1146
avatar
Offline Stuur privebericht
Beste Allemaal,

Ik heb een probleempje in mijn script. Ik krijg namelijk deze fout te zien:

Quote


Warning: Cannot modify header information - headers already sent by (output started at /home/proaja1b/public_html/header.php:5) in /home/proaja1b/public_html/header.php on line 88



Hier bevind zich de fout:

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
            
if (isset($_POST['knop'])) {
                
$sQuery 'SELECT id FROM leden WHERE gebruikersnaam = "' mysql_escape_string($_POST['gebruikersnaam']) . '" AND wachtwoord = "' md5($_POST['wachtwoord']) . '"';
                
$iResult mysql_query($sQuery);
                if (
mysql_num_rows($iResult) > 0) {
                    
$aObject mysql_fetch_object($iResult);
                    
$_SESSION['id'] = $aObject->id;
                    
setcookie('id'$aObject->idtime() + 3600 24 100'/');
                }else{
                    echo 
'<p>Gebruikersnaam/wachtwoord verkeerd.</p>';
                }
            }
            
?>


Regel 88:

Code | Selecteer Alles
minimaliseren
1
setcookie('id'$aObject->idtime() + 3600 24 100'/');


Nu heb ik al geprobeerd om dit aan de bovenkant van de pagina toe te voegen:

Code | Selecteer Alles
minimaliseren
1
2
3
<?php
ini_set
("output_buffering""1"); 
?>


Maar met nog weinig succes.

Iemand enig idee?

Alvast bedankt!
05-01-2012 18:51
Dit topic is 327 keer bekeken door 47 verschillende leden
Reacties op: "Header already sent"
1 | 2 | 3 Volgende pagina
Berichten: 868
avatar
Online Stuur privébericht
Je hebt een spatie na je <? haal die is weg...
05-01-2012 19:13
Leert scripten!
Berichten: 236
avatar
Offline Stuur privébericht
Bij de sluit tag maakt het niet uit, bij begin tag wel, header already sent is dat er html staat voordat de sessie gestart word. Dus kijk of er html voorstaat?
05-01-2012 19:16
Vreemd
Berichten: 1246
avatar
Offline Stuur privébericht
Spaties binnen php tags maken niet uit...

Quote

output started at /home/proaja1b/public_html/header.php:5


Aan regel 5 hadden we blijkbaar meer gehad.

output_buffering kan niet via ini_set() veranderd worden, wel via de ini files of .htaccess. Binnen php kan je ob_start() gebruiken.
05-01-2012 19:18
NJMedia
Berichten: 1146
avatar
Offline Stuur privébericht
Code | Selecteer Alles
minimaliseren
1
2
3
<?php
include 'config.php';
?>


Dat is regel 5 van de header.php.

@Darsstar;

Kun je misschien uitleggen hoe ik de ob_start() en ob_flush() functie kan toepassen?
05-01-2012 19:25
Berichten: 411
avatar
Online Stuur privébericht
Quote: Nillas

Code | Selecteer Alles
minimaliseren
1
2
3
<?php
include 'config.php';
?>


Dat is regel 5 van de header.php.

@Darsstar;

Kun je misschien uitleggen hoe ik de ob_start() en ob_flush() functie kan toepassen?



Waar je je session start hebt staan, zet de ob start daar onder, zo dus:

Code | Selecteer Alles
minimaliseren
1
2
3
session_start();

ob_start();
05-01-2012 19:39
Berichten: 868
avatar
Online Stuur privébericht
@Sukel dat noem je niet oplossen maar verstoppen!
05-01-2012 19:40
Vreemd
Berichten: 1246
avatar
Offline Stuur privébericht
Liever zet je ob_start() helemaal boven aan in het script.
05-01-2012 19:41
Berichten: 411
avatar
Online Stuur privébericht
Quote: Malik

@Sukel dat noem je niet oplossen maar verstoppen!



Bij mij staat hij ook onderaan en hij werkt gewoon?
05-01-2012 19:42
NJMedia
Berichten: 1146
avatar
Offline Stuur privébericht
En dan geen ob_flush()
05-01-2012 20:52
Berichten: 868
avatar
Online Stuur privébericht
@Nillas

Na je <? heb je een spatie staan, die voor problemen kan opleveren. Probeer het is zo:

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
            
if (isset($_POST['knop'])) { 
                
$sQuery 'SELECT id FROM leden WHERE gebruikersnaam = "' mysql_escape_string($_POST['gebruikersnaam']) . '" AND wachtwoord = "' md5($_POST['wachtwoord']) . '"'
                
$iResult mysql_query($sQuery); 
                if (
mysql_num_rows($iResult) > 0) { 
                    
$aObject mysql_fetch_object($iResult); 
                    
$_SESSION['id'] = $aObject->id
                    
setcookie('id'$aObject->idtime() + 3600 24 100'/'); 
                }else{ 
                    echo 
'<p>Gebruikersnaam/wachtwoord verkeerd.</p>'
                } 
            } 
            
?>


ob_start() zorgt er wel voor dat het werkt, maar niet op de nette manier .... Verstop het of los het op.

error_reporting('0';
error_reporting(E_ALL);
05-01-2012 21:25
Reageer op: "Header already sent"
1 | 2 | 3 Volgende pagina
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden