• User Attivo

    include/ require

    Ciao a tutti,
    vengo al dunque:

    Ho una pagina con del codice tipo
    [php]if (a == b) {header ('location:xxx.xx');};[/php]incluso nella pagina "madre" tramite require (include non cambia niente).
    Ora non essendo "a" uguale a "b" non succede nulla però se dentro il codice della pagina madre metto un altra volta il comando header si presenta l'errore
    "Warning: Cannot modify header information - headers already sent by (output started[...]"

    Perchè, visto che l'header non l'ho elaborato? Inserendo il codice direttamente nella pagina "madre" non ci sono problemi.

    Qualcuno conoscce il perchè?

    Ciao
    Valentino


  • ModSenior

    Ciao Lumpi,

    non puoi mandare un header dopo aver inviato un output, o metti il controllo prima di qualsiasi output, oppure attivi il buffering dell'output per evitare questo genere di problemi.


  • User Attivo

    Grazie Thedarkita,
    mi sono letto l'output buffering e siamo d'accordo ma la domanda sorge spontanea.... dove invio l'output?

    Lo stesso codice copiato nella stessa posizione al posto dell'include non da alcun problema.....

    Scusa se continuo ma mi piacerebbe approfondire 😉

    Ciao


  • ModSenior

    Prima dell'header stai inviando un output per quello hai l'errore.


  • User Attivo

    [php]
    session_start();
    if ($_SESSION['liv'] == ''){header('location:index.html'); exit;}
    elseif ($_SESSION['liv'] > $liv_pag){header('location:oops.php'); exit;};
    [/php]

    è tutto qui l'arcano mistero, togliendolo dall'file "incluso" e mettendolo nello script non ci sono piu problemi.

    Mà.... grazie comunque

    Vale


  • User Attivo

    Buongiorno,
    questa notte mi è apparso il signor php in sogno e ho risolto 🙂

    Il problema era dato da uno spazio vuoto dopo la chiusura del php nel file "incluso", evidentemente il server lo considerava un output.... provare per credere...

    Magari può servire a qualcuno

    Ciao