Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    Login che non riconosce la password temporanea

    SAlve ragazzi,
    ecco il quesito. Quando un utente perde la password ho pensato di mandargli via mail una password temporanea che sostituisca, nella tabella ove vengono immagazzinati i dati di registrazione degli utenti, quella usata dall'utente in oggetto in fase di prima registrazione. lo script che uso è questo:

    Codice PHP:
    <?php
    if(!isset($_POST['submit']))
    {
        
    header("Location: [url]http://www.listafacile.com[/url]");
        die;
        exit;
    }
    //varie info per email
    $oggi date("j F Y G:i");
    $sito "http://www.listafacile.com";
    $ip "$_SERVER[REMOTE_ADDR]";
    $browser "$_SERVER[HTTP_USER_AGENT]";
    $soggetto "Modulo da $sito";
    $mail htmlentities(strip_tags($_POST['mail']));


    if(
    trim($_POST['mail']) == "")
    {
    print 
    "La mail è obbligatoria
    <a href=\"formregistraz.php\">indietro</a>
    "
    ;
    }
    else 


    include(
    "config.php"); 
    mysql_connect($db_host,$db_user,$db_password,$db_name) or die ("non riesco a connettermi"); 
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");

    $sql "SELECT * FROM utenti WHERE mail = '$mail'"
    $result mysql_query ($sql) or die (mysql_error()); 
    $n mysql_num_rows($result); 

    if (
    $n != 0

    echo 
    "L'email inserita è corretta
    "


    else 

    header('Refresh: 0; URL=' .'lostpsw.php'); } 


    // Imposto la lunghezza della password a 10 caratteri
    $lung_pass 10;

    // Creo un ciclo for che si ripete per il valore di $lung_pass
    for ($x=1$x<=$lung_pass$x++)
    {
      
    // Se $x è multiplo di 2...
      
    if ($x 2){

        
    // Aggiungo una lettera casuale usando chr() in combinazione
        // con rand() che genera un valore numerico compreso tra 97
        // e 122, numeri che corrispondono alle lettere dell'alfabeto
        // nella tabella dei caratteri ASCII
        
    $mypass $mypass chr(rand(97,122));

      
    // Se $x non è multiplo di 2...
      
    }else{

        
    // Aggiungo alla password un numero compreso tra 0 e 9
        
    $mypass $mypass rand(0,9);

      }
    }

    //imposto la seconda query che aggiorna il database con la password temporanea
    include("config.php"); 
    mysql_connect($db_host,$db_user,$db_password,$db_name) or die ("non riesco a connettermi"); 
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");

    mysql_query("UPDATE utenti SET password = '".$mypass."', confermapassword = MD5('".$mypass."') WHERE mail = '".$mail."'") or die(mysql_error());


                
                                                    
    // settare qui quello che apparirà nel campo from della email
                                    
    $from_mail "info@iso-consulenze.info";
                                    
    // invio della mail contenente la passwd e gli altri dati
                                         
    $To="$mail";
                                         
    $Headers ="From: $from_mail";
                                         
    $Soggetto="[[url]www.iso-consulenze.info[/url]] I tuoi dati di accesso";
                                         
    $Corpo.="Ciao!\n\n";
                                         
    $Corpo.="     Sono il programma Sendmail di [url]http://www.iso-consulenze.info[/url]";
                                         
    $Corpo.="     Questa è la tua nuova password temporanea: $mypass\n\n";
                                         
    $Corpo.="     A presto!\n\n";
                                         
    $Corpo.="--------------------------------------------\n";
                                         
    $Corpo.="$from_mail\n";
                                         
    $Corpo.="http://www.iso-consulenze.info\n";
                                         
    $Corpo.="--------------------------------------------\n";
                                         
    mail($To$Soggetto$Corpo$Headers);

                                        echo 
    "ti è stata inviata una mail all'indirizzo $mail con i tuoi dati";



    mysql_close();
    ?>
    Ora, che succede? Lo script sembra funzionare, perchè la password, all'interno della tabella, viene sostituita con 1 da 10 temporanea generata in random. Ma poi quando vado a fare il login, ecco che mi dice che l'utente non è stato riconosciuto. Perchè?

    ecco il file di controllo sul form del login

    Codice PHP:
    <?
    session_start
    ();
    if (isset(
    $_POST['username']) && isset($_POST['password'])) {
    include(
    "config.php");
    mysql_connect($db_host,$db_user,$db_password,$db_name) or die ("errore nella connessione");
    mysql_select_db("$db_name") or die ("errore nella selezione del database");

      
    $hpw=md5($_POST['password']);
      
    $result=mysql_query("select * from utenti where username='$_POST[username]' and password='$hpw'");
    if (
    mysql_num_rows($result)!=0) {
         
    $_SESSION['username']=true;
         
    $valori = @mysql_fetch_assoc($result); //metti i valori del db in un array associativo
         //passa i valori come parametro richiamando la pagina
         
    $_SESSION['nome'] = $valori['nome'];
         
    $_SESSION['cognome'] = $valori['cognome'];
              
    $_SESSION['utente_id'] = $valori['utente_id'];
         
    header('location: carrello.php?id='.$valori['utente_id'].'');
      } else
        echo 
    "Utente non riconosciuto";
    }
    mysql_close(); 
    ?>
    potreste spiegarmi dove può stare il problema?

  2. #2
    da come ho capito la password criptata la hai nella colonna confermapassword, allora perchè nel login effettui il controllo sulla colonna password?

    consiglio, x una maggiore sicurezza mai salvare la password decriptata nel database

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    No no,
    ho solo tolto la funzione di criptaggio per vedere se, copiando la password dal database e inserendola nel login, andava. Invece nulla! E non capisco dove stia il problema.!!

  4. #4
    quindi il login non funziona nemmeno con una nuova registrazione, ok?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Se faccio una nuova registrazione non c'è problema. Il problema sorge quando l'utente smarrisce la password e ne richiede una nuova, quella generata in automatico. Che poi non viene riconosciuta al momento del login.

  6. #6
    allora è proprio impossibile!!! se tu vedi il database e leggi la nuova combinazione giusta username-password il login te lo dovrebbe fare, sempre se sei sicuro che la prima volta te lo faccia passare

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ti spiego dove stava il problema. Nel file che esegue il controllo sul form del login ho tolto semplicemente una cosa. Da

    $hpw=md5($_POST['password']);
    $result=mysql_query("select * from utenti where username='$_POST[username]' and password='$hpw'");

    ho levato il controllo md5. Che qui non serve proprio. Quindi:

    $hpw=($_POST['password']);
    $result=mysql_query("select * from utenti where username='$_POST[username]' and password='$hpw'");

    Ora funziona.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Come non detto, tolto il controllo MD5 ora non riconosce la password di un nuovo utente registrato. PErchè?!!!!

  9. #9
    ti spiego:

    registrazione utente: digita una password decriptata, applico md5 e la memorizzo nel database.

    login: funzione inversa: digito la password decriptata, applico md5 e la controllo con quella del database.


    quindi la password decriptata non sarà memorizzata nel database, e tutti i controlli si fanno su quella cryptata


    spero di averti schiarito un po le idee


    cmq l'Md5 oramai non è più buono, ulteriore consiglio: fatti un sistema di crittografia tutto tuo!!!

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Si si, esattamente, stavo verificando che è proprio così! Grazie mille

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.