Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125

    Cannot modify header information - headers already sent by

    ciao a tutti
    Ho questo problemone che secondo me dipende da qualche settaggio del server perche non ha assolutamente senso.

    L'errore : Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/web/Management.class.php:3) in /var/www/html/web/getLogin.php on line 4



    Ecco la situazione :
    3 pagine in gioco :
    login.php
    getLogin.php
    Management.class.php


    Ho ripulito il codice di tutto fino ad arrivare a questa situazione assurda :
    Vi illustro il contenuto dei 3 file

    login.php
    Codice PHP:
    <html>
    <
    head>
    </
    head>
    <
    body>
    <
    form action="getLogin.php" method="POST">
    <
    input type="submit" value="vai">
    </
    form>

    </
    body>
    </
    html

    getLogin.php
    Codice PHP:
    include_once('Management.class.php');
    header("Location: login.php"); 
    Management.class.php
    Codice PHP:

    echo "ciao"


    vi rendete conto ? tutto qui....
    Ho cancellato tutto dalle pagine per cercare di arrivare al problema....ma niente...
    File di login è solamente un pulsante che invia a getLogin.php
    Quest'ultimo, include un file vuoto...con solo un echo e dopo fa un redirect con header("Location");

    E' ovvio che se tolgo questo header non da piu l'errore....ma come cavolo faccio con php un redirect?

  2. #2
    molto semplice l'errore è in getlogin.

    dal manuale di php:

    Bisogna ricordare che la funzioneheader() va chiamata prima di qualsiasi output HTML o PHP (anche righe o spazi vuoti). E' un errore comune leggere files con funzioni include(), o require() (o altre funzioni capaci di accedere a files), che possano emettere in output spazi o linee vuote prima di una chiamata della funzione header(). Lo stesso problema esiste nell'utilizzare file PHP/HTML.
    Disegnatori e romanzieri d'Italia, visitate il mio sito, cerchiamo favolieri dark ed illustratori dark fantasy... http://www.neilgaimania.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    m'hai detto tutto e niente....puoi essere piu preciso?
    io errori non li vedo...anche perche e' sempre andato...e invece ora ho messo il tutto su un server con php 4 e non funzia piu niente....

    E poi il la funzione header('Location: blablalblabla') ; l'ho sempre usata ovunque nelle pagine , sempre dopo include ecc ecc per avere un redirect.

    Perche e' sempre andata? cosa cambia?

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    53
    il problema e' che quel echo "ciao" va a scrivere sull'output e POI fai un redirect.

    Quindi:

    1 - non ha nessun senso che vai scrivere quacosa(anche uno spazio per dire) se poi fai un redirect
    2 - mettendo qualcosa in output questo manda in autmatico gli header http, quindi non puoi modificarli da li in poi.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    ok....sarei qui per trovare anche una soluzione....non viene in mente niente?

    il problema sta che nel file che includo prima dell'header ....per forza avro' nel codice qualche echo.
    Perche? ho dentro funzioni che a volte stampano....
    Soluzioni? idee?
    e poi perche è sempre andato e tira skazzi solo adesso ? conta la versione di php ?
    Ti giuro che ho usato gli stessi file che usavo, non ho cambiato neinte...ma su sto server non va.
    Che faccio ?
    sara' Apache anziche Apache2 che usavo ? php4 anziche il php5 ?

  6. #6
    Ciao suggerimento da ignorante che ti posso dare... nel file che nel quale fai il redirect prova ad usare il buffer di output cioè
    GetLogin.php
    Codice PHP:
    ob_start();
    include_once(
    'Management.class.php');
    header("Location: login.php");
    ob_end_flush(); 
    Io ho risolto così con molti headers_already_sent...
    .:Se sei uno scrittore o un giornalista:.
    oppure anche solo per hobby
    www.adaltavoce.com facci sentire la tua.
    Il mio blog tonylog.altervista.org

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    53
    Che ci sia del codice (immagino controlli il login) posso capirlo ma gli echo?

    Cmq la soluzione suggerita da anto funziona, oppure puoi abilitare direttament l'output buffering dal php.ini

    Anche se non e' che sia il massimo dell'eleganza...

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    vedi...sono queste le risposte che mi piacciono...

    Grazie mille....funziona!!!

  9. #9
    Ah Ah Ah .... Fra tre abbiamo accucchiato un cervello!!!
    .:Se sei uno scrittore o un giornalista:.
    oppure anche solo per hobby
    www.adaltavoce.com facci sentire la tua.
    Il mio blog tonylog.altervista.org

  10. #10
    Scusate, ma al momento ho lo stesso problema
    [Warning: Cannot modify header information - headers already sent by (output started at /home/draxent1/public_html/login.php:10) in /home/draxent1/public_html/login.php on line 58]

    ma non ho capito la soluzione!

    Codice PHP:
    ob_start();
    $corrente $_SERVER['PHP_SELF'];
    header("location: $corrente");
    ob_end_flush(); 
    Io seguendo le vostre risposte ho messo in questo modo, senza manco capire il perchè :P, ma non funziona cmq.
    Vi prego aiutatemi.

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.