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

    problema con sessione di login

    Ciao, non avevo mai usato le sessioni, e non avevo mai fatto un semplice sistema di login. Adesso ho un problema quando inserisco il mio codice che mi controlla la sessione di un determinato utente, e in caso contrario reindirizza alla pagina di login. Ok, lo script funziona, ma mi da un messaggio di errore prima del mio contenuto della pagina. Posto il codice, e poi il messaggio di errore.

    qui creo la sessione dell'utente:
    Codice PHP:
    session_register("username");
    session_register("password");
    header("location:login_success.php"); 
    e in login_success.php:
    Codice PHP:
    <?php
      session_start
    ();
      if(!
    session_is_registered(username)){
        
    header("location:main_login.php");
      }else
        echo 
    "la sessione è iniziata";
    ?>
    ...
    ...
    <div>Loggato</div>
    quando faccio il login, la pagina restituitami è così:

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/carrello/login_success.php:3) in /var/www/carrello/login_success.php on line 4
    la sessione è iniziata Loggato!!

    Che vuol dire questo errore? Come faccio ad eliminarlo?

    Altra domanda, come faccio a tirarmi fuori l'username del login? Ad esempio per dire Benvenuto ***.

  2. #2
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    leggendo le tue righe di codice io ti consiglio vivamente di seguire una guida partendo da zero.

    Parlando degli errori che lo script restituisce, prova ad eliminare gli spazi prima del tag di apertura del codice php.

    Per ottenere i valori dalla sessione devi prima inserirli.
    Ciao


    edit:

    tempo fa scrissi un articolo sulle sessioni, se hai piacere di leggerlo clicca qui

  3. #3
    Ok, allora è meglio che posto tutto il codice, probabilmente non sono stato chiaro, o comunque sono stato frainteso (probabilmente ha frainteso la riga di codice dell'else echo "sessione iniziata", giusto?)

    login.php
    Codice PHP:
    <form name="form1" method="post" action="checklogin.php">
    ...
    <
    td>Username</td>
    <
    td><input name="username" type="text"></td>
    ...
    <
    td>Password</td>
    <
    td><input name="password" type="text"></td>
    ...
    </
    form
    checklogin.php
    Codice PHP:
    <?php
      $db_host 
    "***";
      
    $db_user "***";
      
    $db_passw "***";
      
    $db_database "***";

      
    mysql_connect("$db_host","$db_user","$db_passw") or die("Connessione fallita");
      
    mysql_select_db("$db_database") or die("Database non trovato");

      
    $username $_POST['username'];
      
    $password $_POST['password'];

      
    $q "SELECT * FROM utente WHERE utente.username='$username' AND utente.password='$password'";
      
    $recset mysql_query($q);
      
    $count mysql_num_rows($recset);

      if(
    $count==1){
        
    session_register("username");
        
    session_register("password");
        
    header("location:login_success.php");
      }else echo 
    "Attenzione! Nome utente o password errati! [url='main_login.php']Torna al login[/url]";
    ?>
    login_success.php

    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <?php
      session_start
    ();
      if(!
    session_is_registered(username)){
        
    header("location:main_login.php");
      }
    ?>

    <html>

    <head>
      <title>HOME</title>
      <meta name="GENERATOR" content="Quanta Plus">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
      Loggato
    </body>
    </html>
    @Razorblade
    leggerò il tuo articolo sulle sessioni, ma se intanto c'è qualcuno che può dirmi o capisce dove sta l'errore, gliene sarei molto grato, anche perchè ho un progetto da presentare entro la settimana prossima, e volevo inserire anche la parte con utenti e login...
    Quali sono questi spazi che dovrei eliminare? E in che modo dovrei inserirli?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    37
    Il problema è che header deve essere posto prima di qualsiasi output, e nel tuo caso nel file login_success.php prima del codice tu hai messo la dichiarazione del DOCTYPE il che è di per se un output. Prima dell'istruzione header non deve venir stampato neanche uno spazio! Quindi riscrivi così il tuo file:
    Codice PHP:
    <?php
      session_start
    ();
      if(!
    session_is_registered(username)){
        
    header("location:main_login.php");
      }
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
      <head>
        <title>HOME</title>
        <meta name="GENERATOR" content="Quanta >
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      </head>
      <body>     Loggato   </body>
    </html>
    In questo modo non dovresti avere problemi.

  5. #5
    Perfetto, grazie mille, sei stato chiarissimo.

  6. #6
    Un'ultima cosa: per ottenere il valore della sessione (in questo caso username)? Non capisco che vuol dire che devo inserire prima i valori per poterli ottenere....

  7. #7
    Come non detto...risolto, ho fatto una echo di $_SESSION['username'].
    Grazie per l'aiuto, ciao!

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.