Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Warning: Cannot modify header information

    Per cominciare un "GRAZIE" a tutti per i preziosi aiuti: è molto tempo che giro su questo forum. Non ho mai postato nulla perchè ho sempre trovato le risposte nei topic già presenti.

    Ma ora ho un problema che riscontro solo mettendo gli script on-line (in locale funziona perfettamente).

    Una pagina contiene codice php e html: a seconda della scelta dell'utente la stessa pagina ne include un'altra (per il login, per la visualizzazione di un pannello di controllo ecc.).

    Nel momento in cui eseguo il login ed invio il form appare il messaggio:
    • Warning: Cannot modify header information - headers already sent by (output started at /sito/include/menu/classi_menu.php:1) in /sito/admin/login.php on line 24



    La linea 24 di login.php contiene il seguente codice:
    Codice PHP:
    header ("Location:{$_SERVER['PHP_SELF']}?sid=".$_SESSION['sid']); 
    Non ho capito che tipo di errore sia e poi perchè in locale (usando easy php), funziona ??

  2. #2
    non puoi avere ouput prima di usare header() [nel momento in cui mandi dell'output automaticamente il server manda gli headers].
    Pr "output" intendo qualsiasi cosa possa essere inviata al browser: output di php, codice html, semplici caratteri di spazio.

    Devi cercare di non mettere nessun output prima della funzione header, altrimenti puoi usare ob_start() ad inizio pagina per bufferizzare l'output

    In locale o c'è un diverso comportameno della pagina, che così non ha output prima di header(), oppure semplicemente hai l'error_reporting disattivato... rischio che si corre ad usare easyphp :P

    vedi pillola su error reporting


  3. #3
    grazie }gu|do[z]{®© (meno male che esiste copia-incolla: non sarei mai riuscito a scrivere il tuo nome ), ma ti chiedo un pò di pazienza ... non ho capito esattamente quello che mi dici.

    Nel senso che la linea 24 di codice che contiene header() è all'interno di una funzione che viene richiamata per fare il log-out.

    Se ho appena fatto il login quella funzione non viene chiamata ...

    per l'uso di ob_start() aspetterò che ritorni a funzionare la ricerca sul forum (attualmente disabilitata).

  4. #4
    un'altra domanda:
    header() lo uso per inviare il form ... il form è considerato un output ?

  5. #5
    [supersaibal]Originariamente inviato da roc
    header() lo uso per inviare il form ... il form è considerato un output ? [/supersaibal]


    che vuol dire che lo usi per inviare il form?


    output è qualsiasi cosa venga inviato dal server al browser... siccome gli header HTTP vanno inviati come prima cosa... se hai incviato anche solo uno spazio, gli headers sono belli che andati..

    uso di ob_start?


    <?php
    ob_start();

    //resto della pagina
    ?>



    c'è un articolo su ob_start() su freephp.it, nonchè il manuale di php.net


  6. #6
    [supersaibal]Originariamente inviato da }gu|do[z]{®©


    che vuol dire che lo usi per inviare il form?
    [/supersaibal]
    Scusa stavo farneticando
    Intendevo dire che la funzione che contiene header non fa altro che verificare se i dati di login sono presenti nel database e reindirizza alla stessa pagina passando l'utente logato ... nn mi sembra che in questi passaggi ci sia alcun output


    [supersaibal]Originariamente inviato da }gu|do[z]{®©

    <?php
    ob_start();

    //resto della pagina
    ?>

    [/supersaibal]
    Adesso funziona: GRAZIE !!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.