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

    Warning: Cannot modify header information ...

    Carissimi colleghi!
    Ho un piccolo problema con il mio DB.
    Nel dettaglio ho realizzato un piccolo sito internet che mi consente di eseguire alcune procedure automatizzate grazie a PHP.
    Nel dettaglio ho una sezione chiamata progetti la quale è frutto di una sequenza di JOIN e LEFT JOIN eseguiti su tre tabelle del mio DB che è perfettamente funzionante.

    Quale è il problema: ho provveduto a modificare in un altro DB una delle tre tabelle coinvolte nel JOIN, chiamata GROUP, con dei nuovi campi per renderla maggiormente completa sotto l'aspetto descrittivo.

    es.

    (vecchia tabella) GROUP:
    id
    name
    description


    (nuova tabella sostiutita) GROUP:

    id
    name
    description
    price
    tipo
    ....
    ...


    Ora prendendo di sana pianta questa nuova tabella aggiornata con più campi da questo nuovo DB e copiandola al posto di quella vecchia nel mio DB funzionante, nel momento in cui vado a richiamare la sezione Progetti, ottengo questo errore:

    Codice PHP:
    WarningCannot modify header information headers already sent by (output started at c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\block.inc.php:3in c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\block.inc.php on line 106 

    Premetto che nel codice PHP non ho modificato nulla e questo errore mi viene visualizzato solo nel momento in cui sostituisco la vecchia tabella con la nuova, e che comnque la nuova tabella GROUP ha gli stessi 3 campi iniziali della vecchia tabella, con in più altri:

    Volendo stampare l'esito della query che mi produce il risultato, ottengo appunto come stampa:

    Resource id #18

    Ciò mi fa pensare che c'è qualche incongruenza a seguito di questa sostituzione della tabella!
    Potete dirmi la vostra?

    La query coinvolta nel risultato è la seguente:

    Codice PHP:
    echo $oid=mysql_query("SELECT user.username AS username, group.id AS groupid, 
                                  project.name AS nome_progetto, project.visibility AS visibilita, group_project.status AS STATUS
                                  FROM user
                                  LEFT JOIN user_group ON user.id = user_group.id_user
                                  LEFT JOIN `group` ON group.id = user_group.id_group
                                  LEFT JOIN group_project ON group.id = group_project.id_group
                                  JOIN project ON group_project.id_project = project.id
                                  WHERE user.username = '
    $user_nome'
                                  AND user.id 
                                  NOT IN (SELECT id_user
                                          FROM expel
                                          WHERE user.id = expel.id_user
                                          AND project.id = expel.id_project)
                                  OR (project.visibility = 'public')"
    );
                
                if(
    mysql_affected_rows()==0){
                    
    Header("Location: login.php?action=error",1);
                    exit;
                } 
    Cosa ne dite?
    Grazie mille!!!!!
    moscacieca

  2. #2

  3. #3
    Grazie Filippo!
    Ho già letto questo articolo, ed ho provato anche ad usare ob_start()!
    Elimino sì il problema della visualizzazione del warning, ma ottengo un messaggio, da me preventivamente utilizzato, per comunicare l'impossibilità nell'accesso delle informazioni perchè l'utente non è autorizzato!
    Quanto detto è così impostato nelle seguenti righe di codice:

    Codice PHP:

    if($_REQUEST['action']=='error'){
        
    $body->setContent("message","Errore - Accesso non autorizzato!!!");

    Ovviamente questa è la risposta all'header precedente che genera il messaggio!
    Come ti ripeto ho controllato i vari spazi vuoti e possibili echo all'interno del codice ma non ce ne sono!

    Tutto dipende dalla modifica della tabella GROUP, come specificato nel post precedente perchè senza la sostituzione della tabella stessa, questo messaggio di errore non lo ottengo.
    Difatti ripristinando il tutto con la tabella originale tutto torna a funzionare!

    Cosa ne pensate?
    moscacieca

  4. #4
    Quando si parla di "inviare dell'output", è compres quell'echo $oid=mysql_query(...)

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.