Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Problema login form

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    118

    Problema login form

    Salve a tutti,

    avendo la necessita di creare una pagina di login (USERNAME e PASSWORD) con effetto Jquery, sul web ho trovato uno script che fa al caso mio.

    FORM HTML
    codice:
    <form method="post" id="modulo_login" />
    <table border="0">
    <tr><td>Username:</td><td><input name="username" type="text" id="username" maxlength="10" style="width: 250px"/></td></tr>
    <tr><td>Password:</td><td><input name="password" type="password" id="password" maxlength="10" style="width: 250px"/></td></tr>
    <tr><td><input type="submit" id="submit" value="Entra" /></td><td><div id="messaggio"></div></td></tr>
    </table>
    </form>

    CSS
    codice:
    .corretto,
    .errore {
      padding: 3px;
      text-align: center;
    }
    .corretto,
    .errore {
      width: auto;
      font-weight: bold;
      border: 1px solid #349534;
      background: #C9FFCA;
      color: #008000;
    }
    .errore {
      border: 1px solid #CC0000;
      background: #F7CBCA;
      color: #CC0000;
    }

    Javascript
    codice:
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    $("#modulo_login").submit(function() {
      // passo i dati (via POST) al file PHP che effettua le verifiche 
      $.post("login.php", { username: $('#username').val(), password: $('#password').val(), rand: Math.random() }, function(risposta) {
        // se i dati sono corretti...
        if (risposta == 1) {
          // applico l'effetto allo span con id "messaggio"
          $("#messaggio").fadeTo(200, 0.1, function() {
            // per prima cosa mostro, con effetto fade, un messaggio di attesa
            $(this).removeClass().addClass('corretto').text('Login in corso...').fadeTo(900, 1, function() {
              // al termine effettuo il redirect alla pagina privata
              document.location = 'area-privata.php';
            });
          });
        // se, invece, i dati non sono corretti...
        }else{
          // stampo un messaggio di errore
          $("#messaggio").fadeTo(200, 0.1, function() {
            $(this).removeClass().addClass('errore').text('Dati di login non corretti!').fadeTo(900,1);
          });
        }
      });
      // evito il submit del form (che deve essere gestito solo dalla funzione Javascript)
      return false;
    });
    </script>

    PHP
    Codice PHP:
    <?php
    // recupero i valori passati via POST
    $username htmlspecialchars($_POST['username'],ENT_QUOTES);
    $password md5($_POST['password']);

    // mi connetto al MySQL
    define ('DB_USER''root');
    define ('DB_PASS'' ');
    define ('DB_HOST''localhost');
    define ('DB_NAME''prova');
    $dbconn mysql_connect(DB_HOSTDB_USERDB_PASS);
    mysql_select_db(DB_NAME$dbconn);

    // effettuo la query per verificare la correttezza del login
    $result mysql_query("SELECT * FROM utenti WHERE username = '" $username "'");

    // verifico che ci siano dei risltati...
    if (mysql_num_rows($result) > 0)
    {
      
    $row mysql_fetch_assoc($result);
      
    // effettuo la comparazione della password digitata con quella salvata nel DB
      
    if (strcmp($row['password'], $password) == 0) {
        
    // in caso di successo creo la sesione
        
    $_SESSION['userid'] = $row['id'];
        
    // e stampo 1 (che identifica il successo)
        
    echo 1;
      }else{
        
    // in caso di comparazione non riuscita stampo zero
        
    else echo 0;
      }
    }else{
      
    // se non ci sono risultati stampo zero
      
    echo 0;
    }
    ?>

    Poi ho creato un database, una tabella al suo interno


    id - int(20), primary key, auto increment
    username - varchar(100)
    password - varchar(100)


    e ho inserito un valore a ID, username e password.
    (1, demo, demo)

    Il tutto con PHPMyadmin.

    Infine ho modificato lo script PHP, inserendo i miei dati.

    Ora, provando ad effettuare il login digitando i dati appena inseriti nella tabella nei campi del form, ricevo sempre il messaggio:

    Dati di login non corretti.

    Sbaglio qualcosa?
    Spero in un vostro aiuto.

    Grazie.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Cambia i nomi username e password sia nel form che nella tabella utenti (sono parole riservate meglio non usarle) vedo che cripti md5 la password lo fai anche nella tabella?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    io ti consiglio di cambiare anche
    Codice PHP:
      $row mysql_fetch_assoc($result); 
    con
    Codice PHP:
      $row mysql_fetch_array($result); 
    poi qui hai un else di troppo
    Codice PHP:
      }else{     // in caso di comparazione non riuscita stampo zero     else echo 0;   } 

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    118
    Ciao ragazzi,
    vi ringrazio per le risposte.

    Ho apportato le modifiche da voi consigliatomi, ma purtroppo ricevo ancora il messaggio di errore quando cerco di effettuare il login.

    HTML FORM
    codice:
    <form method="post" id="modulo_login" />
    <table border="0">
    <tr><td>Username:</td><td><input name="usr" type="text" id="usr" maxlength="10" style="width: 250px"/></td></tr>
    <tr><td>Password:</td><td><input name="psw" type="password" id="psw" maxlength="10" style="width: 250px"/></td></tr>
    <tr><td><input type="submit" id="submit" value="Entra" /></td><td><div id="messaggio"></div></td></tr>
    </table>
    </form>
    Javascript
    codice:
    <script type="text/javascript">
    $("#modulo_login").submit(function() {
    // passo i dati (via POST) al file PHP che effettua le verifiche 
    $.post("login.php", { usr: $('#usr').val(), psw: $('#psw').val(), rand: Math.random() }, function(risposta) {
    // se i dati sono corretti...
    if (risposta == 1) {
    // applico l'effetto allo span con id "messaggio"
    $("#messaggio").fadeTo(200, 0.1, function() {
    // per prima cosa mostro, con effetto fade, un messaggio di attesa
    $(this).removeClass().addClass('corretto').text('Login in corso...').fadeTo(900, 1, function() {
    // al termine effettuo il redirect alla pagina privata
    document.location = 'area-privata.php';
    });
    });
    // se, invece, i dati non sono corretti...
    }else{
    // stampo un messaggio di errore
    $("#messaggio").fadeTo(200, 0.1, function() {
    $(this).removeClass().addClass('errore').text('Dati di login non corretti!').fadeTo(900,1);
    });
    }
    });
    // evito il submit del form (che deve essere gestito solo dalla funzione Javascript)
    return false;
    });
    </script>
    PHP
    Codice PHP:
    <?php
    // recupero i valori passati via POST
    $usr $_POST['usr'];
    $psw $_POST['psw'];

    // mi connetto al MySQL
    define ('DB_USER''root');
    define ('DB_PASS''');
    define ('DB_HOST''localhost');
    define ('DB_NAME''prova');
    $dbconn mysql_connect(DB_HOSTDB_USERDB_PASS);
    mysql_select_db(DB_NAME$dbconn);

    // effettuo la query per verificare la correttezza del login
    $result mysql_query("SELECT * FROM utenti WHERE user = '" $usr "'");

    // verifico che ci siano dei risltati...
    if (mysql_num_rows($result) > 0)
    {
    $row mysql_fetch_array($result);
    // effettuo la comparazione della password digitata con quella salvata nel DB
    if (strcmp($row['pass'], $psw) == 0) {
    // in caso di successo creo la sesione
    $_SESSION['userid'] = $row['id'];
    // e stampo 1 (che identifica il successo)
    echo 1;
    // in caso di comparazione non riuscita stampo zero
    else echo 0;
    }
    }else{
    // se non ci sono risultati stampo zero
    echo 0;
    }
    ?>

    Db: prova

    Tabella utenti:

    id - int(20), primary key, auto increment
    user - varchar(100)
    pass - varchar(100)


    id=1
    user=demo
    pass=demo


    Altre idee/soluzioni?

    Grazie ancora!

  5. #5
    Magari mettendo il numero ed al posto giusto le graffe aperte e chiuse che delimitano gli if e gli else potrebbe funzionare meglio!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    118
    Originariamente inviato da satifal
    Magari mettendo il numero ed al posto giusto le graffe aperte e chiuse che delimitano gli if e gli else potrebbe funzionare meglio!
    Ciao satifal,

    le graffe mi sembrano al posto giusto.
    A quale numero ti riferisci?

    Grazie per la risposta.

  7. #7
    Originariamente inviato da gahan
    Ciao satifal,

    le graffe mi sembrano al posto giusto.

    A me non sembra proprio:

    Codice PHP:
    // verifico che ci siano dei risltati...
    if (mysql_num_rows($result) > 0) {
        
    $row mysql_fetch_array($result);
        
    // effettuo la comparazione della password digitata con quella salvata nel DB
        
    if (strcmp($row['pass'], $psw) == 0) {
            
    // in caso di successo creo la sesione
            
    $_SESSION['userid'] = $row['id'];
            
    // e stampo 1 (che identifica il successo)
            
    echo 1;
            
    // in caso di comparazione non riuscita stampo zero

            
    else echo 0;

        }
    } else {
        
    // se non ci sono risultati stampo zero
        
    echo 0;

    basterebbe banalmente osservare il colore del codice per vedere che c'è qualcosa che non va.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    118
    Originariamente inviato da satifal
    A me non sembra proprio:
    Codice PHP:
    }else{ echo 0

    Hai ragione.
    C'era questo "else" sensa graffe.

    Adesso il login viene effettuato con successo, ma quando vengo reindirizzato alla pagina "area-privata.php", non mi visualizza il contenuto della pagina.

    Ricevo il messaggio di errore: "Non hai il permesso di accedere all'area privata"

    E' come se non riconoscesse la sessione utente creata precedentemente.

    Codice PHP:
    <?php
    // verifico che esista la sessione di autenticazione
    if (empty($_SESSION['userid'])) {
      echo 
    "Non hai il permesso di accedere all'area privata";
      exit;
    }

    // gestisco la richiesta di logout
    if (isset($_GET['logout'])) {
      
    session_destroy();
      echo 
    "Sei uscito con successo";
      exit;
    }
    ?>
    <html>
    <head>
    <title>Area privata</title>
    </head>
    <body>



    [url="area-privata.php?logout"]Effettua il Logout[/url]</p>


    Bla bla bla...</p>
    </body>
    </html>
    Grazie mille ancora.

  9. #9
    Ho provato il codice da te postato aggiungendo solamente la graffa mancante nell'else e funziona perfettamente.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  10. #10
    Devi mettere session_start() come prima istruzione nelle pagine PHP se vuoi utilizzare la sessione.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.