Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Password dimenticata

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    178

    Password dimenticata

    Ho creato un procedimento di recupero password per gli utenti di un sito.

    La meccanica è molto semplice e ho dovuto utilizzare parti di codice da alcuni articoli e post di questo forum.
    L'utente inserisce l'indirizzo email con cui si è registrato al sito e gli viene mandata una nuova password.

    Tuttavia ovviamente non è il massimo che qualsiasi utente possa
    cambiarti la password inserendo solo il tuo indirizzo di posta
    Sulla falsa riga di questo forum volevo implementare una costrutto che mandasse una mail "volatile" all'utente
    dicendogli che la sua password può essere cambiata semplicemente clikkando su un link aposito entro tot ore dal ricevimento della stessa, altrimenti la sua richiestà verrà ignorata.

    Ovviamente non so proprio da che parte iniziare.
    Vi va di darmi una mano?

    Ecco il codice che ho implementato per la funzione originale (Thx agli autori dei post da cui ho tratto il codice):

    Codice PHP:
    $ricerca_mail check_mail_lost($pass_lost);
                
    $status = ($ricerca_mail === true) ? newpass($pass_lost) : REG_ERRORS;


    switch(
    $status){
            case 
    REG_ERRORS:
              echo 
    "$ricerca_mail";
               break;
    .... 
    Funzioni nelle librerie:

    Codice PHP:
    function check_mail_lost($pass_lost) {
        global 
    $_CONFIG;
          
    $pass_lost = isset($pass_lost) ? $pass_lost null;
          
    $pass_lost trim($pass_lost);
         if(
    $pass_lost == "") {
            return 
    "Indirizzo non valido";
                      }
        
    $query mysql_query("
        SELECT id
        FROM "
    .$_CONFIG['table_utenti']."
        WHERE mail='"
    .$pass_lost."'");
        if(
    mysql_num_rows($query) == 0) {
            return 
    "L'email non risulta tra quelle registrate";
                      }
    return 
    true;
    }

    function 
    newpass($pass_lost) {
    $pass_lost = isset($pass_lost) ? $pass_lost null;
    global 
    $_CONFIG;
    $pass generatepass();
    $temp md5($pass);
             
    $replace="UPDATE ".$_CONFIG['table_utenti'].
             SET password='
    $temp' WHERE mail='$pass_lost'";
             
    $risultato=mysql_query ($replace) or die ("Impossibile aggiornamento"); 
    $testo "Hai richiesto l'assegnazione di una nuova password:\n La seguente password sarà attiva con effetto immediato: {$pass}\n [url]http://www.sito.com[/url]"
    mail($pass_lost"Cambio pass"$testo"From: [email]info@sito.com[/email]"); 
    :master: :master: :master:

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    178
    Ho appena scoperto che anche il phpBB usa lo stesso metodo.
    Manda un email con un link tipo:
    http://www.sito.com/forum/profile.ph...act_key=6c1b52

    e sotto la pass che diventerebbe attiva se si conferma quel link.

    che istruzione posso dare per implementare questo meccanismo?

    P.S. Stavo quasi per valutare l'idea di fare come alcuni provider che implementano la easypass, la domanda segreta che si imposta nella procedura di inizializzazione del servizio,tipo:
    "Quale è il nome del mio cane"? VVoVe:

  3. #3
    la cosa migliore è inserire nella tabella utenti un codice di verifica che generi casualmente (di 50 caratteri o anche di piu)
    dal link che inserisci nella mail verra passato questo codice, in mdo che tu puoi capire che l'email è stata effettivamente letta (sfido chiunque a beccare un codice casuale di 50 caratteri )
    Il Ticino è biancoblù
    DVDS delegato ufficiale

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    178
    In effetti potrei utilizzare la stessa funzione che genera la nuova pass (precedentemente inviata in email), per creare un codice molto più lungo, salvarlo nel db, creare una pagina di verifica e aspettare che il fantomatico "smemorato" si colleghi alla stessa "allegandolo" tramite browser..
    Dovrei cmq utilizzarla come variabile di sessione perchè in tempo 24 ore deve essere cancellata.

    Pensi sia la scelta più giusta?
    Inizio a lavorarci, thx

  5. #5
    si, potrebbe andare
    per la validità aggiungi ancora un'altro campo nel db
    Il Ticino è biancoblù
    DVDS delegato ufficiale

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.