• User

    Login e Sessioni

    Salve,
    ho creato una pagina per effettuare il login e verifica di user e password nel database.

    Se tutto è ok, dovrei creare una sessione in maniera tale che a determinate pagine ci si può accedere solo una volta loggati.

    Il blocco di codice d' interesse è il seguente:

    if ( $pass == $pass_db ) {

                       session_start();
                       $_SESSION['circuito']= $user_db;
                       
                       $url_redirect = "members.php";
                       header("location: $url_redirect");
                     }
    

    Perchè mi da errore sulle righe

    1. session_start();

    ( session_start() [function.session-start]: Cannot send session cookie - headers already sent by
    Cannot send session cache limiter - headers already sent
    )

    e su

    1. header("location: $url_redirect");

    ( Cannot modify header information - headers already sent by )


  • User Attivo

    se ne è già parlato più volte... il problema è che probabilmente mandi già qualcosa in output buffer. metti questo codice prima di qualsiasi altro comando echo, ecc... oppure tricka il tutto aggiungendo ob_start(); come prima riga nel codice. dovrebbe funzionare..
    in ogni caso, verifica che non ci siano spazi bianchi prima dell'inizio del codice... è un errore molto comune


  • User

    Come... non ho capito..

    In output, prima della condizione if sotto, mando eventuali errori di non corrispondenza tra username e password digitati dall' utente.

    Se è tutto ok, verifico l' ultima condizione di cui sotto, ossia che la password inserita dall' utente sia uguale a quella presente nel database.

    Se lo è, allora dovrebbe essere svolte le operazioni

    session_start();
    $_SESSION['circuito']= $user_db;

    $url_redirect = "members.php";
    header("location: $url_redirect");

    Che significa ob_start(); ??

    Dove lo devo mettere?

    Comunque tutto il codice è questo:

    !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>Circuito</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <meta name="title" content="">
    <meta name="author" content="">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="Content-Language" content="it">
    <meta name="robots" content="index, follow">
    <meta name="revisit-after" content="7 days">
    <meta http-equiv="imagetoolbar" content="no">
    <link href="style/style.css" rel="stylesheet" type="text/css">
    </head>

    <body bgcolor="#CCCCCC">

    <div align="center">
    <center>
    <table border="0" cellpadding="0" cellspacing="0" width="765" bgcolor="#FFFFFF" height="519">
    <tr>
    <td width="765" height="105" colspan="3">
    </td>
    </tr>
    <tr>
    <td width="180" height="399" valign="top" bgcolor="#FF0000" background="images/bk_sx.jpg" rowspan="2">
    </td>
    <td width="580" height="361" valign="top" class="tdcorpo">
    <?
    if ( $_GET["act"] == "" )
    $_GET["act"] = "main";

       if ( $_GET["act"] == "main" ) {
      ?>
      <p class="titoli"><img border="0" src="images/arrow.jpg" width="6" height="12"> Login</p>
      <br>
      Inserisci il tuo Username e Password per accedere al pannello
      <br><br><br>
         <form action="login.php?act=check" method="post">
         <center>
         <table border="0" cellpadding="0" cellspacing="0" width="53%">
           <tr>
             <td width="100%" colspan="2" height="25" bgcolor="#CCCCCC">
             <p align="center"><b><font size="2" face="Arial">Login _</font></b>
             </td>
           </tr>
           <tr>
             <td width="48%" height="35" class="tdform" bgcolor="#F0F0F0">Username:</td>
             <td width="52%" height="35" bgcolor="#F0F0F0"><input class="stylecampiform" type="text" name="user" size="15" maxlength="15"></td>
           </tr>
           <tr>
             <td width="48%" height="35" class="tdform" bgcolor="#FBFBFB">Password:</td>
             <td width="52%" height="35" bgcolor="#FBFBFB"><input class="stylecampiform" type="text" name="pass" size="15" maxlength="15"></td>
           </tr>
           <tr>
             <td width="100%" colspan="2" height="35" bgcolor="#CCCCCC">
             <center>
             <input class="stylebottoniform" type="submit" value="Login" name="Login"> <input class="stylebottoniform" type="reset" value="Reimposta" name="Reimposta">
             </center>
             </td>
           </tr>
           </table>
         </center>
         </form>
         <br>
         <p align="center">Hai dimenticato i tuoi dati? <a href="forget.php">Clicca qui</a> per recuperarli</p>
         <br><br>
         <p align="center">Non sei ancora iscritto? <a href="signup.php">Iscriviti subito</a> !</p>
         <?
         }
         if ( $_GET["act"] == "check" ) {
          
             $user = $_POST['user'];
             $pass = $_POST['pass'];
             
             if ( $user == "" && $pass == "" )
                 echo "<br>\n<br>\n<p align=\"center\"><font size=\"4\" color=\"#FF0000\">Devi inserire Username e Password per effettuare il login</font></p>\n<p align=\"center\"><a href=\"javascript:history.back(1)\">Torna Indietro</a></p>\n";
             else if ( $user == "" )
                 echo "<br>\n<br>\n<p align=\"center\"><font size=\"4\" color=\"#FF0000\">Non hai inserito il tuo Username</font></p>\n<p align=\"center\"><a href=\"javascript:history.back(1)\">Torna Indietro</a></p>\n";
             else if ( $pass == "" )
                 echo "<br>\n<br>\n<p align=\"center\"><font size=\"4\" color=\"#FF0000\">Non hai inserito la tua Password</font></p>\n<p align=\"center\"><a href=\"javascript:history.back(1)\">Torna Indietro</a></p>\n";
             else {
    
                 include("include/connessione.php");
                 
                 $result = mysql_query("SELECT username, password FROM members WHERE username='$user'");
                 $array_dati = mysql_fetch_row($result);
    
                 $user_db = $array_dati[0];
                 $pass_db = $array_dati[1];
    
                 if ( $user_db != "" ) {
    
                     if ( $pass == $pass_db ) {
    
                       session_start();
                       $_SESSION['circuito']= $user_db;
                       
                       $url_redirect = "members.php";
                       header("location: $url_redirect");
                     }
                     else {
                        echo "<br>\n<br>\n<p align=\"center\"><font size=\"4\" color=\"#FF0000\">La Password inserita non è corretta</font></p>\n<p align=\"center\"><a href=\"javascript:history.back(1)\">Torna Indietro</a></p>\n";
                     }
                 
                 }
                 
                 else {
                        echo "<br>\n<br>\n<p align=\"center\"><font size=\"4\" color=\"#FF0000\">Lo Username inserito non è corretto</font></p>\n<p align=\"center\"><a href=\"javascript:history.back(1)\">Torna Indietro</a></p>\n";
                 }
    
             }
    
         }
         ?>
      </td>
      <td width="5" height="399" bgcolor="#FF0000" rowspan="2"></td>
    </tr>
    <tr>
      <td width="580" height="38" valign="top" class="tdcorpo">
      <p align="right"><a href="index.php">Home Page</a></td>
    </tr>
    <tr>
      <td width="765" height="15" colspan="3" bgcolor="#FF0000" class="tdfooter" background="images/bk_footer.jpg">
      
      </td>
    </tr>
    </table>
    

    </center>
    </div>

    </body>

    </html>


  • Super User

    come già detto sopra, l'istruzione session_start() deve essere la prima del codice e l'impostazion delle variabili di sessione deve avvenire senza aver fatto un output prima.

    di questo argomento negli utlimi 3 giorni ne abbiamo già parlato. le sessioni vengono impostate nell'header del file. se ha un output gli header sono già chiusi e quindi non puoi più agire sulle sessioni.

    per capire meglio quanto detto dai una lettura alle discussioni più recenti di questa sezione. :ciauz:


  • User

    Ok grazie, credo di aver capito 😉