Header already sent

  • Beste Allemaal,


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


    Citaat


    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:



    Regel 88:


    PHP
    setcookie('id', $aObject->id, time() + 3600 * 24 * 100, '/');


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


    PHP
    <?php
    ini_set("output_buffering", "1"); 
    ?>


    Maar met nog weinig succes.


    Iemand enig idee?


    Alvast bedankt!

  • 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?

    PHP, JAVA, C#, JAVASCRIPT, HTML(5), CSS(3) developer.
    Vragen?! Stuur me gerust een prive bericht :) !

  • Spaties binnen php tags maken niet uit...


    Citaat

    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.


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


    PHP
    session_start();
    
    
    ob_start();
  • Nillas


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



    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);

  • @Malik ik zei toch al dat spaties binnen PHP tags niets uithalen?


    ob_start() is een hele nette manier ob headers already sent errors te voorkomen door een stuk output op te vangen en op te slaan in een variabele. ob_start() boven aan een script moeten plaatsen om die errors te voorkomen is slecht design. Aangezien criminals games over het algemeen slecht opgebouwd zijn heeft Nillas de volgende keuzes: heel de code base overhoop halen en verbeteren of iets aan het topje van de ijsberg toevoegen.


    Zijn code base beter organiseren is natuurlijk het beste wat hij kan doen, maar aangezien er naar mijn idee een 98% kans is dat hij dat niet doet blijft ob_start() ergens bovenaan het script plaatsen de meest realistische optie.

  • zet ob_start(); bovenin op de 2e regel onder <?php


    (desnoods in config, zolang hij bovenin staat en het werkt)


    [offtopic]Maar het is niet de nette methode![/offtopic]


  • Zo doe ik het goed toch?

  • Zet hem in je config ;)


    Darsstar



    Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called.


    Wil je dit dan aan mij uitleggen? Citaat van PHP.net

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!