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

    interpretazione "warning" session

    mi scrive questo errore dalla sessione...


    Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\foo2.php:6) in c:\programmi\easyphp1-8\www\foo2.php on line 7

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\programmi\easyphp1-8\www\foo2.php:6) in c:\programmi\easyphp1-8\www\foo2.php on line 13
    Ciao




    questo è il php:


    <?php
    Header( "Location: http://localhost/test2.html" );
    ?>

    <?
    //Recupero username e password dal form
    $user = $_POST['user'];


    //Apro la sessione e...
    session_start();

    //Salvo i dati...
    $_SESSION['username'] = $user;

    ?>

    <?php
    $connessione=mysql_connect("localhost", );
    $selezione_db=mysql_select_db("guest_book", $connessione);
    ?>
    <?php
    $inserimento=mysql_query( "insert into messaggi (user, gender, date_of_birth,country, data_ora) values ( '" . $_POST['user'] . "','" . $_POST['gender'] . "','" . $_POST['year'] . "-" . $_POST['month'] . "-" . $_POST['day'] . "', '" . $_POST['country'] . "', now())" );
    ?>

  2. #2
    Perchè fai un header location all'inizio dello script?

  3. #3
    l'header location nn va fatto sempre all'inizio dello script?

  4. #4
    Se metti un header location incondizionale come quello, il resto dello script è totalmente inutile e puoi eliminarlo del tutto.

  5. #5
    è che ho bisogno di trasferire la pagina direttamente ad un'altra.
    non posso farne a meno..
    come posso cambiarlo?

  6. #6
    Ti suggerisco di ricominciare dalle basi, a partire dal protocollo HTTP, dagli header, dai problemi di sicurezza (es. SQL Injection) e cosi' via.

    Quello che segue è il tuo codice modificato SOLO per dal punto di vista logico, NON ho fatto alcuna modifica per migliorarne la qualità in termini di sicurezza etc.

    <?php
    //Recupero username e password dal form
    $user = $_POST['user'];

    //Apro la sessione e...
    session_start();

    //Salvo i dati...
    $_SESSION['username'] = $user;

    $connessione=mysql_connect("localhost");
    $selezione_db=mysql_select_db("guest_book", $connessione);
    $inserimento=mysql_query( "insert into messaggi (user, gender, date_of_birth,country, data_ora) values ( '" . $_POST['user'] . "','" . $_POST['gender'] . "','" . $_POST['year'] . "-" . $_POST['month'] . "-" . $_POST['day'] . "', '" . $_POST['country'] . "', now())" );

    $sid = session_name() . '=' . session_id();

    session_write_close();

    header("Location: http://localhost/test2.html?$sid");
    ?>

  7. #7
    ho riscritto il codice come hai detto tu,

    <?
    //Recupero username e password dal form
    $user = $_POST['user'];


    //Apro la sessione e...
    session_start();

    //Salvo i dati...
    $_SESSION['id_user'] = $id_user;

    ?>
    <!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>Documento senza titolo</title>
    </head>

    <body>

    <?php
    $connessione=mysql_connect("localhost", "");
    $selezione_db=mysql_select_db("guest_book", $connessione);
    ?>

    <?php
    $inserimento=mysql_query( "insert into messaggi (user, gender, date_of_birth,country, data_ora) values ( '" . $_POST['user'] . "','" . $_POST['gender'] . "','" . $_POST['year'] . "-" . $_POST['month'] . "-" . $_POST['day'] . "', '" . $_POST['country'] . "', now())" );
    ?>

    <?php
    $sid = session_name() . '=' . session_id();

    session_write_close();

    header("Location: <a href="http://localhost/test2.html?" target="_blank"http://localhost/test2.html?</a>$sid");
    ?>

    </body>
    </html>




    pero' adesso mi da questo errore:


    Parse error: parse error in c:\programmi\easyphp1-8\www\elabora_guest2.php on line 36




    LINEA 36:

    header("Location: <a href="http://localhost/test2.html?" target="_blank"http://localhost/test2.html?</a>$sid");
    ?>

  8. #8
    Prova ad utilizzare il codice ESATTAMENTE come è stato postato. NON cercare di adattarlo inserendo codice HTML, tanto NON vuoi che venga visualizzato visto che vuoi effettuare un redirect verso un'altra pagina.

  9. #9
    perfetto.ora questo è ok.


    Questa è la seconda pagina php: è giusta per continuare la sessione?


    <?php
    Header( "Location: http://localhost/moduloguest2.html" );
    ?>
    <?
    //Apro la sessione e...
    session_start();

    //Recupero i dati...
    $id_user = $_SESSION['id_user'];
    //stampata a video!
    echo "Ciao " . $user;
    ?>
    <!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>Documento senza titolo</title>
    </head>
    <body>
    <?php
    $connessione=mysql_connect("localhost",");
    $selezione_db=mysql_select_db("guest_book", $connessione);
    ?>
    <?php
    $inserimento=mysql_query( "insert into messaggi (activacione1, data_ora) values ( '" . $_POST['activacione1'] . "', now())" );
    ?>
    </body>
    </html>

    tutto bene, solo che non invia allo stesso id i record, questo perche', come avevi detto, devo impostare la seconda tabella..come assegno i campi per poi richiamare sempre lo stesso id?

    se l'utente non inserisce nessun tipo di record manualmente, cioè sono tutti già fatti tramite form, l'utente deve solo selezionare quello che vuole, come puo' interferire nel mio caso l'SQL injection?

  10. #10
    salve, buongiorno.
    ora questo è ok.


    Questa è la seconda pagina php: è giusta per continuare la sessione?


    <?php
    Header( "Location: http://localhost/moduloguest2.html" );
    ?>
    <?
    //Apro la sessione e...
    session_start();

    //Recupero i dati...
    $id_user = $_SESSION['id_user'];
    //stampata a video!
    echo "Ciao " . $user;
    ?>
    <!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>Documento senza titolo</title>
    </head>
    <body>
    <?php
    $connessione=mysql_connect("localhost",");
    $selezione_db=mysql_select_db("guest_book", $connessione);
    ?>
    <?php
    $inserimento=mysql_query( "insert into messaggi (activacione1, data_ora) values ( '" . $_POST['activacione1'] . "', now())" );
    ?>
    </body>
    </html>

    tutto bene, solo che non invia allo stesso id i record, questo perche', come avevi detto, devo impostare la seconda tabella..come assegno i campi per poi richiamare sempre lo stesso id?

    se l'utente non inserisce nessun tipo di record manualmente, cioè sono tutti già fatti tramite form, l'utente deve solo selezionare quello che vuole, come puo' interferire nel mio caso l'SQL injection?

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.