• User

    Recuperare valore da database MySql e inviarlo per email

    Ciao a tutti.

    Come da titolo vorrei dare la possibilità di recuperare valori (nel mio caso password) dal mio database.
    Mi spiego meglio: per accedere ad una pagina bisogna effettuare il login ma se l'utente dimentica la password è spacciato perché non ha modo di recuperarla; quindi ho pensato di inserire un link che riporta ad un'altra pagina in cui ci sono soltanto una Input (text) e un Bottone (esattamente come per le email).

    Vorrei fare una cosa molto semplice:dopo aver scritto l'indirizzo email e aver premuto il bottone, nella email inserita deve arrivare la password corrispondente presente nel database.

    Ho scritto questo codice ma non capisco dove sbaglio e spero che possiate aiutarmi.

    Ciao, grazie.

    <div>    Email
        <form method="post">
            <input name="email" type="text" maxlength="100" size="20" style="width: 200px" /><br />
            <br />
            <input name="invia" type="submit" value="Invia" style="width: 125px" /></form>
    </div>
    
    
    <?php
    
    
    // SE PREMO IL TASTO INVIA FAI TUTTO IL CODICE
    
    
      if (isset ($_POST['invia']))
      {
      
      // FACCIO LA CONNESSIONE AL SERVER
        
        $con = mysql_connect ("localhost", "root","") or die ("Connessione al server fallita!!!".mysql_error());
      
        $db = mysql_select_db ("login", $con);
      
        if (!$db)
        {
          die ("Connessione al database login fallita!!!".mysql_errore());
        }
        
        $errori = array();
        if (!isset($_POST['email']) || empty($_POST['email']))
        {
          $errori[] = 'email';
        }
        
      // SE IMPUT EMAIL NON E' VUOTO SCRIVI UN MESSAGGIO DI ERRORE ALTRIMENTI LEGGI IL SUO VALORE
      
        if (!empty($errori))
        {
          echo "Nessuna Email inserita!!!";
        }
        else
        {
          $mail = $_POST['email'];
          
        // SELEZIONO LA COLONNA MAIL DALLA TABELLA "UTENTI" DEL DATABASE "LOGIN"  
          
          $query = "SELECT mail FROM utenti WHERE mail = '$mail'";
          $risultato = mysql_query ($query,$con) or die (mysql_error());
          $conta = mysql_num_rows($risultato);
          
        // SE LA TABELLA CONTIENE UNA MAIL UGUALE A QUELLA INSERITA SCRIVERA UN MESSAGGIO
          
          if ($conta ==1)
          {
            $mittente = 'From: "smartstructure" <[email protected]> \r\n';
            $destinatario = $mail;
            $oggetto = "Password";
            $messaggio = $conta;
            mail($destinatario, $oggetto, $messaggio, $mittente);
          }
        }
        
      }
    
    
    ?>
    

  • User Attivo

    Ciao samurai.sette
    credo che per ragioni di privacy sia meglio che tu non conservi in chiaro le password dei tuoi utenti. Potresti però creare una pagina attraverso cui, chi non si ricorda la password, possa re-settarla. Magari attraverso un link che gli arriva per mail.


  • User

    Ciao PietroR, grazie per la risposta. Avevo pensato anche io ad una soluzione come la tua ma ho pensato di evitarla e ti spiego il perché: quando viene creata la password la creo insieme all'utente che entrerà nel sito; questo perché il database è collegato a diversi macchinari e quindi anche io devo effettuare il login per verificare che tutto funzioni; detto ciò non vedo il motivo per cui l'utente debba resettare la password. Nel caso in cui la volesse modificare (perché ad esempio non la ritiene più sicura) mi può contattare per telefono o email e insieme provvederemo a modificarla.

    Spiegato questo, mi sapresti dare qualche consiglio su come migliorare il codice che ho scritto?

    Grazie, ciao.


  • User Attivo

    Potresti postare anche l'errore che ti viene restituito?


  • User

    Non mi da nessun errore, ma non mi invia le email 😢


  • User Attivo

    Domanda banale(in caso scusami): il tuo server ha installato e configurato correttamente un mail server?


  • User

    Ciao PietroR. Scusa se rispondo solo adesso ma sono stato fuori per lavoro.
    Ho finalmente risolto il mio problema; non era ciò che mi dicevi ma semplicemente mancava un ; solo non capisco perché non mi dava errore :mmm:
    Comunque grazie.


  • User Attivo

    @samurai.sette said:

    Ciao PietroR. Scusa se rispondo solo adesso ma sono stato fuori per lavoro.
    Ho finalmente risolto il mio problema; non era ciò che mi dicevi ma semplicemente mancava un ; solo non capisco perché non mi dava errore :mmm:
    Comunque grazie.

    Probabilmente nel php.ini hai il "display_error" settato ad Off.

    Oppure da qualche parte hai "error_reporting(0)"