Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    28

    Autenticazione Dove sbaglio?

    Salve a tutti sto facendo un appello di Università per studio e non riesco a capire dove sbaglio e perchè quando accedo con il nick e la pass giusti mi da che l'accesso è stato effettuato e quando metto i valore non corretti mi da pagina bianca.Ciao Grazie anticipatamente
    Codice PHP:
    <?
    $login
    =$_POST['Login'];
    $pass=$_POST['pass'];
    $con=mysql_connect("localhost","root","xxxxx")or die("Connessione al database non Riuscita");
    mysql_select_db("Registrazione",$con)or die ("Selezione non riuscita");
    $query="SELECT login FROM utente WHERE login='$login'" or die ("Query non riuscita");
    $ris=mysql_query($query,$con);
    while(
    $log=mysql_fetch_array($ris)){
    $registrato=$log['login'];
    if(
    $login==$registrato){
        
    $query2="SELECT password FROM utente WHERE password='$pass'";
        
    $ris2=mysql_query($query2,$con);
        while (
    $password=mysql_fetch_array($ris2)){
        
    $p=$password['password'];
        if(
    $pass==$p){
        echo 
    "Accesso Effettuato";
        }
        else
        {
        echo 
    "Hai Sbagliato la password";
        
        }
        

    }}

    else
    {
        echo 
    "Non esiste nessun login come quello digitato";
    }
    }
    ?>

  2. #2
    Allora ci sono diversi problemi.

    Prima di tutto hai scritto 'or die ("Query non riuscita")' sulla riga sbagliata (quella in cui assegni la query ad una variabile e non quella in cui la esegui).

    Poi la logica e' abbastanza incomprensibile. Quello script controlla che esistano login e password, ma non che siano abbinati. Una volta trovato un utente cerca per tutta la tabella la password, e la trova anche se e' assegnata ad un altro utente. Inoltre il nome utente e' unico, ma le password no, quindi potrebbero esserci piu' utenti con la stessa password. Non ha neanche senso usare un ciclo sul risultato della query: di utente "xxxx" ce n'e' uno solo, quindi la query ritornera' al massimo un risultato, non serve un while.

    La query corretta e' "SELECT * FROM utente WHERE login = '$login' AND password = '$password'". Dopo questa query ti e' sufficiente controllare quanti risultati hai ottenuto (0 login fallito, 1 login corretto) con mysql_num_rows().

    Il tutto tralasciando questioni di sicurezza come utilizzo di dati ricevuti in POST senza averli filtrati, e password salvate in chiaro.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    28
    ok spero di aver capito.Grazie della risposta.Potresti abbozzarmi un codice che vada bene?te ne sarei gratissimo.Dato che non ho potuto seguire il corso sono autodidatta quindi non ho quasi nessuno che mi possa aiutare a parte questo Forum.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.