Visualizzazione risultati 1 fino 20 di 20

Discussione: Metodo corretto per usare gli include di stili ed header per non avere errori

  1. #1
    Guest

    Predefinito Metodo corretto per usare gli include di stili ed header per non avere errori

    ciao a tutti.
    ho cercato di sintetizzare il mio discorso.
    sto restaurando il sito e vorrei migliorare anche il codice che lo caratterizza.
    (che senso ha non cercare l'autoperfezionamento? ;) )

    il problema che mi si era posto in passato era questo:

    ogni pagina aveva 4 include:
    gestore della sessione,
    header,
    un gestore delle immagini per il menu di navigazione,
    gestore della connessione al db.

    nella pagina header.php c'erano inseriti anche i fogli di stile.
    il fatto è che non so dove, perchè non ho capito di che "header" php parli, in una di queste pagine dovevano proprio esserci degli header che andavano in conflitto con il codice quando per vari motivi, venisse richiesto di caricare una nuova pagina con il classico header("Location: www.pippo.com").

    l'unica soluzione che trovai all'epoca fu di commentare header("Location: www.pippo.com") e di inserire un link manuale.
    ma oggi che son in fase di rebuild totale e che quelle pagine sono state cancellate e rimangono solo il gestore delle sessioni e delle connessioni e che, quindi, non ho più quel problema, vorrei capire come scrivere gli header ed i fogli di stile in modo che generino il classico errore
    header already sent at line XX etc...

    spero di essermi speigato.

    grazie a tutti :)

  2. #2
    Guest

    Predefinito

    Se ho capito il tuo problema, per non avere quell'errore, devi evitare di mandare al browser altri dati prima di chiamare la funzione header().
    In alternativa puoi usare le funzioni di controllo dell'output in particolare ob_start() e ob_end_flush()

  3. #3
    Guest

    Predefinito

    il fatto è che in una pagina in cui sono stati caricati i fogli di stile, i tag <html> ed <head> magari al suo interno contiene un header("location: www.www.ww");
    e non so come mai riceva quell'errore.
    non capisco come fare per evitarlo.

  4. #4
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Quegli header servono per fare da redirect. Se non ti servono, cancellali.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  5. #5
    Guest

    Predefinito

    non mi sono spiegato: a ME quei redirect SERVONO, sono gli altri che non metto io che e che generano errore a non essere desiderati :D
    ma non ho capito dove sono :)

  6. #6
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Quindi noi dovremmo dirti dove stanno quegli header senza aver visto neanche un pezzo di codice?
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  7. #7
    Guest

    Predefinito

    uhmm...gli header vengono inviati automaticamente dal server quando un utente richeide una pagina, e vengono inviati subito prima (MAI dopo) del contenuto html della pagina, la funzione header() consente di inviare altri header o di modificare quelli di "default", ma se gli header sono già stati inviati non ci puoi fare nulla.

  8. #8
    Guest

    Predefinito

    ok, ma la cosa che mi lascia di stucco è questa.
    sto testando il sito quindi non ha un minimo di grafica è tutto default.

    ora, ecco il codice completo di una pagina in cui si verifica l'errore: la mostro nella versione in cui NON da errore:

    NON DA ERRORE
    Codice PHP:
    <?
    include_once("include/check_login.inc");
    include(
    "include/conn.inc");
    //include("include/header.inc"); LINEA INCRIMINATA

    ?>




    In questa sezione potrai visualizzare i libri che sono stati recensiti, leggere le recensioni, eventualmente lasciarne una tua,
    o sempicemente lasciare un commento ad una recensione già pubblicata.
    E' inoltre possibile emettere un voto sul libro in questione.

    Seleziona il genere letterario che vuoi visualizzare.
    <div id="seleziona" style="position:absolute; border:thin; width: 206px; left: 15px; top: 506px; height: 162px;">
    <form id="form1" name="form1" method="POST" action="libri.php">
    <table width="200">
    <tr>
    <td><label>
    <input type="radio" name="genere_libri" value="1" />
    Horror</label></td>
    </tr>
    <tr>
    <td><label>
    <input type="radio" name="genere_libri" value="2" />
    Fantasy</label></td>
    </tr>
    <tr>
    <td><label>
    <input type="radio" name="genere_libri" value="3" />
    Fantascienza</label></td>
    </tr>
    <tr>
    <td><label>
    <input type="radio" name="genere_libri" value="4" />
    Narrativa</label></td>
    </tr>
    <tr>
    <td><label>
    <input type="radio" name="genere_libri" value="5" />
    Altro</label></td>
    </tr>
    </table>
    <input name="invia" type="submit" />
    </form>
    </div>
    <div id="inserisci" style="position:absolute; border:thin; width: 559px; left: 9px; top: 74px; height: 160px;">
    <table width="566">
    <form id="form1" name="form1" method="post" action="./script/Slibri.php">
    <tr><td width="72"><label>Titolo: </label></td>
    <td width="144"><input name="titolo" type="text" tabindex="1" /></td>
    <td width="51">Genere: </td>
    <td width="127"><select name="genere" tabindex="2">
    <option value="-1" selected="selected">Genere...</option>
    <option value="1">Horror</option>
    <option value="2">Fantasy</option>
    <option value="3">Fantascienza</option>
    <option value="4">Narrativa</option>
    <option value="5">Altro</option>
    </select></td>
    <input type="hidden" name="hid_genere" value="<?=$_POST['$genere']?>" />
    <td width="43"><label>Voto: </label>
    <td width="76"><select name="voto" tabindex="3">
    <option value="-1">Voto...</option>
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    </select> </tr>
    <tr><td height="24" valign="top"><p>Recensione:</p>
    </td>
    <td colspan="5" valign="top">&nbsp;</td>

    </tr>

    <tr>
    <td height="101" colspan="6" valign="top"><textarea name="recensione" cols="89" rows="10" tabindex="4"></textarea></td>
    </tr>
    <tr>
    <td height="26" colspan="6" valign="top"><input type="submit" name="invia" value="|| Invia Recensione" /></td>
    </tr>
    </form>
    </table>
    </div>




    <?
    if(isset($_POST['genere_libri'])){
    $genere = $_POST['genere_libri'];
    $path = "lista_libri.php?gen=$genere";
    header("Location: $path");
    }
    ?>



    <?
    ?>
    se decommento la LINEA INCRIMINATA, e provo a cliccare sul menu in fondo mi dice:
    Warning: Cannot modify header information - headers already sent by (output started at C:\WM\www\lsdblogs\libri.php:52) in C:\WM\www\lsdblogs\libri.php on line 101

    perchè??

    tieni conto che headers.inc è solo una serie di stili:

    Codice HTML:
    <style type="text/css">
    body{
    background: White;
    font-family: Verdana;
    font-size: 8pt;
    }
    
    a:link{
    text-decoration: none;
    color: #929292;
    }
    a:visited{
    text-decoration: none;
    color: #666666;
    }
    
    a:hover{
    text-decoration: underline;
    color: #c2c2c2;
    }
    
    h1{
    text-align: center;
    font-family: Verdana;
    font-size: 10pt;
    font-weight: Bold;
    }
    /************
    GESTIONE FORM
    /************/
    fieldset.moduli{
    border: 1px solid Black;
    width: 60%;
    margin-left: 20%;
    }
    
    fieldset.blog{
    border: 1px solid Black;
    width: 90%;
    }
    
    legend{
    color: #fff;
    background: #c2c2c2;
    border: 1px solid Black;
    padding: 2px 6px;
    }
    
    label{
    padding-left: 1em;
    }
    
    /*input{
    color: #666666;
    border: 1px solid #C2C2C2;
    padding-left: 5px;
    font-family: Verdana;
    font-size: 10pt;
    }*/
    
    checkbox{
    color: #666666;
    border: 1px solid #C2C2C2;
    padding-left: 5px;
    font-family: Verdana;
    font-size: 10pt;
    }
    
    select{
    color: #666666;
    border: 1px solid #C2C2C2;
    padding-left: 5px;
    font-family: Verdana;
    font-size: 10pt;
    }
    
    textarea{
    color: #666666;
    border: 1px solid #C2C2C2;
    padding-left: 5px;
    font-family: Verdana;
    font-size: 10pt;
    }
    
    file{
    color: #666666;
    border: 1px solid #C2C2C2;
    padding-left: 5px;
    font-family: Verdana;
    font-size: 10pt;
    }
    
    div.commenti{
    border: 2px dashed White; 
    background: #666666; 
    color: white; 
    width:60%; 
    margin-left: 20px; 
    padding: 10px 10px 10px 10px;
    }
    
    /******************
    FINE GESTIONE FORM
    /*****************/
    
    div.angolo {
        position:relative;
        width: 734px;
        background-color: #E6E6E6;
        margin: 13px;
    /*	margin-left: 256px;
    	margin-top: 90px;
    	padding-top: 50px*/
    }
    
    /*********************
    GLOBAL ATTRIBUTES
    *********************/
    div.top-left-corner, div.bottom-left-corner, div.top-right-corner, div.bottom-right-corner
    {position:absolute; width:20px; height:20px; background-color:#FFF; overflow:hidden;}
    
    div.top-left-inside, div.bottom-left-inside, div.top-right-inside, div.bottom-right-inside {
    position:relative; font-size:150px; font-family:arial; color:#E6E6E6; line-height: 40px;}
    
    /*********************
    SPECIFIC ATTRIBUTES
    *********************/
    
    div.top-left-corner { top:0px; left:0px; }
    div.bottom-left-corner {bottom:0px; left:0px;}
    div.top-right-corner {top:0px; right:0px;}
    div.bottom-right-corner {bottom: 0px; right:0px;}
    
    div.top-left-inside {left:-8px;}
    div.bottom-left-inside {left:-8px; top:-17px;}
    div.top-right-inside {left:-25px;}
    div.bottom-right-inside {left:-25px; top:-17px;}
    
    div.box-contents {
    	position: relative; padding: 15px; color:#000;
    }
    </style>
    
    
    grazie mille per l'aiuto :)
    Ultima modifica di lsdforum : 14-02-2007 alle ore 18.42.24

  9. #9
    Guest

    Predefinito

    l'errore dovrebbe dartelo anche con la linea commentata...prova così:
    Codice PHP:
    <?
    include_once("include/check_login.inc");
    include(
    "include/conn.inc");
    if(isset(
    $_POST['genere_libri'])){
    $genere = $_POST['genere_libri'];
    $path = "lista_libri.php?gen=$genere";
    header("Location: $path");
    exit;
    }
    include(
    "include/header.inc");

    ?>




    In questa sezione potrai visualizzare i libri che sono stati recensiti, leggere le recensioni, eventualmente lasciarne una tua,
    o sempicemente lasciare un commento ad una recensione già pubblicata.
    E' inoltre possibile emettere un voto sul libro in questione.

    Seleziona il genere letterario che vuoi visualizzare.
    <div id="seleziona" style="position:absolute; border:thin; width: 206px; left: 15px; top: 506px; height: 162px;">
    <form id="form1" name="form1" method="POST" action="libri.php">
    <table width="200">
    <tr>
    <td><label>
    <input type="radio" name="genere_libri" value="1" />
    Horror</label></td>
    </tr>
    <tr>
    <td><label>
    <input type="radio" name="genere_libri" value="2" />
    Fantasy</label></td>
    </tr>
    <tr>
    <td><label>
    <input type="radio" name="genere_libri" value="3" />
    Fantascienza</label></td>
    </tr>
    <tr>
    <td><label>
    <input type="radio" name="genere_libri" value="4" />
    Narrativa</label></td>
    </tr>
    <tr>
    <td><label>
    <input type="radio" name="genere_libri" value="5" />
    Altro</label></td>
    </tr>
    </table>
    <input name="invia" type="submit" />
    </form>
    </div>
    <div id="inserisci" style="position:absolute; border:thin; width: 559px; left: 9px; top: 74px; height: 160px;">
    <table width="566">
    <form id="form1" name="form1" method="post" action="./script/Slibri.php">
    <tr><td width="72"><label>Titolo: </label></td>
    <td width="144"><input name="titolo" type="text" tabindex="1" /></td>
    <td width="51">Genere: </td>
    <td width="127"><select name="genere" tabindex="2">
    <option value="-1" selected="selected">Genere...</option>
    <option value="1">Horror</option>
    <option value="2">Fantasy</option>
    <option value="3">Fantascienza</option>
    <option value="4">Narrativa</option>
    <option value="5">Altro</option>
    </select></td>
    <input type="hidden" name="hid_genere" value="<?=$_POST['$genere']?>" />
    <td width="43"><label>Voto: </label>
    <td width="76"><select name="voto" tabindex="3">
    <option value="-1">Voto...</option>
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    </select> </tr>
    <tr><td height="24" valign="top"><p>Recensione:</p>
    </td>
    <td colspan="5" valign="top">&nbsp;</td>

    </tr>

    <tr>
    <td height="101" colspan="6" valign="top"><textarea name="recensione" cols="89" rows="10" tabindex="4"></textarea></td>
    </tr>
    <tr>
    <td height="26" colspan="6" valign="top"><input type="submit" name="invia" value="|| Invia Recensione" /></td>
    </tr>
    </form>
    </table>
    </div>

  10. #10
    Guest

    Predefinito

    perchè mi hai suggerito quel cambiamento?

    vorrei saperlo perchè nel frattempo ho risolto in un altro modo, ma vorrei capire bene il discorso, altrimenti se si dovesse ripresentare non sarei in grado di gestirlo.

    io ho risolto creando una pagina
    header.php
    Codice HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>|| lsd Blogs ||</title>
    <link rel="stylesheet" type="text/css" href="include/testata.css">
    </head>
    
    <body>
    in cui testata.css è il foglio di stile.
    questo header apre i tag e poi un footer in calce li chiuderà.
    llinkando il foglio di stile, non ho più riscontrato l'errore.

    ma non ho capito il perchè
    e cmq non ho una completa reattività dei CSS.
    infatti non capsico perchè modificando il foglio di stile non cambiano le cose nella pagina.
    cambiano solo alcune....
    Ultima modifica di lsdforum : 14-02-2007 alle ore 19.16.06

  11. #11
    Guest

    Predefinito

    se devo essere sincero non ho capito bene quello che hai fatto
    comunque il succo della questione è che la funzione header la devi chiamare SEMPRE prima di inviare qualuque tipo di informazione al browser

    edit
    per il problema dei css prova a riaggironare la pagina...dovrebbe funzionare nello stesso modo
    Ultima modifica di SoulHome : 14-02-2007 alle ore 19.24.59

  12. #12
    Guest

    Predefinito

    scusa se ti sto facendo perder tempo.
    intanto grazie mille per il supporto passo-passo.
    in effetti sono tornato al tuo metodo, poichè così facendo
    1) non ho il problema del warning php
    2) i css funzionano come dio comanda

    grazie per l'aiuto.

    la cosa che vorrei capire è: come capisco quando sto mandando un header?
    cioè, come faccio a sapere dove disporre i vari header per non avere quell'errore?

    se per esempio faccio un login e ci metto un redirect con il comando header() per non avere problemi l'include con il foglio di stile deve stare DOPO il redirect?

  13. #13
    Guest

    Predefinito

    allora qunaod tu mandi qualcosa al browser il server manda gli header, quindi la funzione header la devi mettere DOPO tutti gli echo, print e varie scritte messe fuori dai tag <?php ?>

  14. #14
    Guest

    Predefinito

    cioè un eventuale redirect a seguito di un login andrebbe in fondo alla pagina, anche sotto ad un eventuale footer?

  15. #15
    Guest

    Predefinito

    nono scusa...mi sono rimbambito...volevo dire prima non dopo

  16. #16
    Guest

    Predefinito

    cioè in pratica ogni header() deve andare praticamente all'inizio della pagina?
    al massimo dopo l'include che avvia la sessione?

  17. #17
    Guest

    Predefinito

    praticamente si

  18. #18
    Guest

    Predefinito

    ok grazie mille per l'aiuto!
    :)

  19. #19
    Guest

    Predefinito

    Prego

  20. #20
    Guest

    Predefinito

    lol, complimenti, tozzo, duro e resistente!

    ciao ciao.
    a presto.
    (spero di no, senza offesa ;) spero di riuscire a fare qualcosa da solo! )

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •