• User Newbie

    Errore incompreso

    Allora ragazzi tra un pò avrò l'esame orale...2 settimane và...e devo ancora mettere a punto un'esercitazione che porto come argomento d'informatica...allora, in una pagina php a video mi esce un errore del genere :

    "Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\programmi\easyphp1-8\www\biblioteca\sceglilibro.php:2) in c:\programmi\easyphp1-8\www\biblioteca\sceglilibro.php on line 3 "

    Ecco il mio file PHP :

    <html>
    <?php
    session_start();
    include "connetti2.php";
    $seleziona='select codlibro,titolo
    from libri;';
    $esegui=mysql_query($seleziona);
    print("<table border>");
    print("<tr style=font-weight:bold>");
    print("<td><h3>scegli un libro</h3></td></tr>");
    while($dati=mysql_fetch_object($esegui))
    {$p=$dati->codlibro;
    print("<tr><td><a href=richiesta.php?codice=$p><'$p'></td>");
    print("<td>'$dati->titolo'</td></tr></a>");
    }
    print("</table>");
    ?>
    </html>.

    Io penso che l'errore sia in quel punto interrogativo prima di codice 5 righe prima della chiusura del file...voi che en dite ???
    Aiutatemi vi prego ...non vorrei fare brutta figura all'esame, sono un candidato ad avere un buon voto!


  • ModSenior

    Se non sbaglio è perchè l'istruzione session_start(); va come prima riga di tutto in testa al codice.
    Ma è da un po che non tocco Php


  • User Newbie

    Possibile che eliminando la riga si sia risolto il problema ?


  • Super User

    Il problema risiede nel <html> prima del <?

    L'inizializzazione di una sessione ( in quanto facente parte degli header di una richiesta ) richiede che ancora l'invio dei dati ( di qualunque tipo ) non sia iniziata.

    qual semplice <html> interrompe l'invio degli header, e comincia ad inviare il codice html... Quindi la soluzione sarebbe spostare tale pezzetto di html dopo l'inizializzazione della sessione.

    PS: questo vale non solo per il tag <html> ma qualunque cosa, anche un singolo spazio sarebbe responsabile dello stesso errore!


  • ModSenior

    Allora ci avevo azzeccato. 😄