Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Login utente

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    3

    Login utente

    Salve a tutti. Ho un problema che non riesco a risolvere. Ho dato un'occhiata nel forum, comprese le pillole, ma non riesco a capire dove sta il mio errore.

    nella pagina login.php ho questo codice

    Codice PHP:
    <form name="login" action="check_user.php" method="post">
                        
    Username:
                        <
    INPUT name="nickname" type="text">
                        

                        

                        
    Password:
                        <
    INPUT name="password" type="password">
                        

                        <
    INPUT type="submit" value="Login">
                    </
    form
    nella check_user.php invece ho:
    Codice PHP:
    <?php

    function login_user($username$pass) {

        
    // To protect MySQL injection
        
    $utente stripslashes($username);
        
    $password stripslashes($pass);
        
    $utente mysql_real_escape_string($username);
        
    $password mysql_real_escape_string($pass);

        
    $conn = @mysqli_connect("localhost""root""""shop_db");
        if(
    mysqli_connect_errno()) {
            
    $msg sprintf("Errore nella connessione al db:
    errno: %s
    err: %s
    "
    mysqli_connect_errno(), mysql_error());
            die(
    $msg);
        }

        
    $sql sprintf("SELECT `password` FROM `users` WHERE nickname='%s'"$utente );
        
    $risposta mysqli_query($sql$conn);
        
        if(!
    $risposta) {
            
    $message 'Errore nella query: ' mysql_error() . "
    "
    ;
            
    $message .= 'La query &egrave: ' $sql;
            die(
    $message);        
        }
        
        
    $riga mysql_fetch_array($risposta);
        
        if(
    $riga[0] != md5($password)) {
            echo 
    "Wrong Password
    "
    ;
            echo 
    " query:  " $sql "
    "
    ;
            echo 
    "->" $riga[0] . "<-";

        } else {
            echo 
    "Utente e password corrette";
            
    session_register("utente");
            
    session_register("password");
            
    header("location:login_success.php");
        }
        
        
    mysqli_close($conn);
        @
    mysql_free_result($risposta);
    }

    login_user($_POST["nickname"], $_POST["password"]);
        
    ?>
    nel database shop_db, ho una tabella "users" con 2 campi nickname e password. l'errore che ottengo è:

    codice:
    Warning: mysqli_query() expects parameter 1 to be mysqli, string given in D:\xampp\htdocs\sito_progetto\check_user.php on line 18
     Errore nella query: 
    La query è: SELECT `password` FROM `users` WHERE nickname='admin'
    credo il problema stia in $risposta = mysqli_query($sql, $conn);.
    cosa ha di sbagliato la query? eseguita da phpMyadmin invece restituisce correttamente il risultato.

  2. #2

    Re: Login utente

    Originariamente inviato da realphp
    credo il problema stia in $risposta = mysqli_query($sql, $conn);.
    cosa ha di sbagliato la query? eseguita da phpMyadmin invece restituisce correttamente il risultato.
    Devi invertire i due parametri passati a mysqli_query: PRIMA il link POI la query.

    Il messaggio di errore e' chiarissimo

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    3
    grazie mille! (la mia figura di m***a l'ho fatta per oggi)

    un ulteriore domanda:
    dopo aver corretto leggermente il codice

    Codice PHP:
    $riga mysql[B]i[/B]_fetch_array($risposta);
        
        if(
    $riga[0] != md5($password)) {
            echo 
    "Wrong Password
    "
    ;
            echo 
    "riga[0]->" $riga[0] . "<-
    "
    ;
            echo 
    "md5() ->" md5($password) . "<-";

        } else {
            echo 
    "Utente e password corrette";
            
    session_register("utente");
            
    session_register("password");
            
    header("location:login_success.php");
        } 
    ottengo uno strano risultato:

    codice:
    Wrong Password
    riga[0]->21232f297a57a5a743894a0e4a801f<-
    md5() ->21232f297a57a5a743894a0e4a801fc3<-
    perchè manca la "c3" alla fine della stringa?

  4. #4
    Evidentemente il campo nel database non e' abbastanza lungo, forse e' un VARCHAR(30)?
    Per un hash md5 servono 32 caratteri.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    3
    sono proprio niubbo!
    grazie per il tuo aiuto

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.