• User

    Warning: Cannot modify header information

    ciao a tutti,
    accantonando l'idea dei cookies e passando alle sessioni...ho avuto qualche problemino con l'header per rinviare, non appena loggati correttamente alla pagina index.php.
    infatti il seguente codice mi restituisce:
    Warning: Cannot modify header information - headers already sent by (output started at /home/bello/public_html/sessioni/log-in.php:21) in /home/bello/public_html/sessioni/log-in.php on line 26

    sapreste dirmi qual'è il problema?? vi do la parte di codice in questione....

    if ($_SESSION['verified_user'] != "") {
    header("location:index.php"); <----RIGO 26-----
    } else {
    if ($_REQUEST['action'] == "login" && $_SESSION['verified_user'] == '') {
    echo"<font color="red">Login error!</font><br><br>";
    }


  • User

    Dovresti inserire anche la parte di codice che precedere la funzione header.
    Solitamente accade quando a video è stato visualizzato qualcosa.
    Hai fatto prima qualche echo?

    Nené


  • User

    ciao!

    <? session start(); ?>
    deve essere la primissima cosa che c'è nel codice all'inizio della pagina
    anche uno spazio può farti incappare i quel problema.


  • User

    questo è quello che ho all'inizio della pagina...
    <?php
    session_start();
    dbconnect();

    if ($_REQUEST['action'] == "login") {
    $_SESSION['verified_user'] = "";
    $result = mysql_query("SELECT * FROM users WHERE username='".$_REQUEST['username']."' AND password='".$_REQUEST['psw']."'");
    if (mysql_num_rows($result) > 0) list($_SESSION['verified_user']) = mysql_fetch_row($result);
    }

    ?>

    e alla fine i dati di conn

    <?php
    }
    function dbconnect() {
    mysql_connect("localhost", "user", "pass");
    @mysql_select_db("nomedb") or die ("Unable to select database");
    }
    ?>


  • User

    @shira said:

    questo è quello che ho all'inizio della pagina...
    <?php
    session_start();
    dbconnect();

    if ($_REQUEST['action'] == "login") {
    $_SESSION['verified_user'] = "";
    $result = mysql_query("SELECT * FROM users WHERE username='".$_REQUEST['username']."' AND password='".$_REQUEST['psw']."'");
    if (mysql_num_rows($result) > 0) list($_SESSION['verified_user']) = mysql_fetch_row($result);
    }

    ?>

    e alla fine i dati di conn

    <?php
    }
    function dbconnect() {
    mysql_connect("localhost", "user", "pass");
    @mysql_select_db("nomedb") or die ("Unable to select database");
    }
    ?>

    hai un parentesi di troppo, a parte questo non mi dà errore!


  • User

    @ramon said:

    hai un parentesi di troppo, a parte questo non mi dà errore!

    Se monti tutto il codice che ti ha dato, la parentesi non è di troppo.
    L'unica cosa che potrebbe stampare qualcosa a video è dbconnect(); che ha un "or die". Prova a togliere la chiocciolina davanti a mysql_select_db, e magari dovresti vedere nell'html sorgente generato dalla pagina se c'è anche solo uno spazio prima dell'errore. Casomai postaci il link.

    Nené


  • User Attivo

    Il problema è che non puoi usare session_start e poi header.


  • User

    finalmente un forum dove non si viene abbandonati a se stessi!!
    grazie!!
    ritornando al problema....penso che la soluzione di senamion sia giusta, infatti togliendo l'header e mettendo questo redirect

    <meta http-equiv="refresh" content="1;url=pa3.php">

    vengo reindirizzato dopo il login a questa pagina, ma non a quella dell'id_utente corrispondente alla USER.
    Ho provato ad inserire dopo il .php questo codice

    ?id_utente=<?=$rigo['id_utente']?> ma non va!!

    soluzioni?


  • User

    @shira said:

    ?id_utente=<?=$rigo['id_utente']?>

    Manca un ; dopo ] ...
    Sarà questo? :mmm:

    Nené


  • User Attivo

    Devi mettere un valore devi fare un echo in php, in pratica devi fare così:

    ?id_utente=<? echo $rigo['id_utente']; ?>
    

  • Moderatore

    Il problema è che non puoi usare session_start e poi header.
    E perché mai?

    Puoi, stando attento a non far stampare nulla in mezzo.
    O senza troppe rotture usando le gz_* 🙂


  • User Attivo

    In realtà ho semplificato, ma se guardi i commenti della funzione header php (http://it2.php.net/manual/it/function.header.php) scopri che può avere problemi con la cache. Se si vuole usare session_start() e header() bisogna fare attenzione.


  • User

    sto impazzendo!!!
    premesso che ho deciso di non utilizzare il metodo header, ma METa....
    compongo il codice che vi ho descritto:

    if ($_SESSION['verified_user'] != "") {
    echo "<meta http-equiv="refresh" content="1;url=pa3.php?id_utente=">";

    adesso...mi porta alla pagina pa3.php?id_utente= correttamente.

    ovviamente ho inserito il codice di seniamon dopo l'uguale

    <? echo $rigo['id_utente']; ?>

    ma la linea mi da errore!!!

    io il rigo lo richiamo con

    if ($_REQUEST['action'] == "login") {
    $_SESSION['verified_user'] = "";
    $result = mysql_query("SELECT * FROM users WHERE username='".$_REQUEST['username']."' AND password='".$_REQUEST['psw']."'");

    $rigo=mysql_fetch_array($result);

    if (mysql_num_rows($result) > 0) list($_SESSION['verified_user']) = mysql_fetch_row($result);
    }

    MA SARA' GIUSTO???