- Home
- Categorie
- Coding e Sistemistica
- PHP
- Invio email con password casuale
-
Invio email con password casuale
Ciao a tutti,
avrei bisogno di inviare ad ogni utente un'email con un codice differente per ognuno di loro che gli servirà successivamente per accedere ad una pagina del sito, ora devo creare io una serie di codici differenti da inviare o posso usare un generatore di password casuale?
Il codice per generare password casuali lo conosco anche perché se ne trovano svariati in giro su internet, ma non so poi come inviarle agli utenti, anche perché questa password dovrà essere salvata in un database per permettere l'autenticazione attraverso questa password no?
Grazie
-
Ciao edoo,
come hai ben intuito l'algoritmo di generazione password casuali è facilmente implementabile e si trova facilmente sul web.
Per l'invio della suddetta password invece, puoi utilizzare la funzione mail(). La trovi sul sito di php che non posso sfortunatamente linkare.
Spero di esserti stato utile.PS: Ricorda che non si salvano le password in chiaro sul database, ma vanno prima crittografate con algoritmi quali md5 e sha1, rispettivamente md5( $string ) e sha1( $string ).
Quando arriverai in fase di login utente, ricorda sempre di crittografare il campo di input del form prima di compararlo con i dati archiviati nel database.
-
ok però mi sfugge una cosa,la password che dovrò inviare all'utente dovrà anche essere salvata in un database giusto? altrimenti sarà impossibile poter effettuare l'autenticazione...
-
Certamente. Rileggi bene ciò che ho scritto in questo punto:
PS: Ricorda che non si salvano le password in chiaro sul database, ma vanno prima crittografate con algoritmi quali md5 e sha1, rispettivamente md5( $string ) e sha1( $string ).
Quando arriverai in fase di login utente, ricorda sempre di crittografare il campo di input del form prima di compararlo con i dati archiviati nel database.
L'algoritmo di digest ( md5 o sha1, scegli quale più ti piace ) restituirà una**stringa. **Generalmente di 32 caratteri, se non erro. Quindi nel database la devi memorizzare proprio come una stringa.
Se posso esserti utile in qualcos'altro chiedi pure.
-
Penso di aver capito, provo e ti faccio sapere, grazile mille
-
Certo, aggiornaci se hai ulteriori problemi/domande. Un saluto
-
Allora ho provato ad inviare l'email con la password casuale e funziona, solo che se voglio inviarla a più persone mi invia sempre la stessa ed io avrei bisogno di inviare una password diversa per ogni utente
con questo genero la password casuale
[PHP]function unaPasswordACaso() {
$gammaDeiCaratteri = "ABCDEFGHILMOPQRSTUVZXYJKW0123456789";srand((double)microtime()*1000000);
$elaborazione = '' ;
for ($contatore=0; $contatore<8; $contatore++) {
$numeroCasuale = rand(0, strlen($gammaDeiCaratteri)-1);
$carattere = substr($gammaDeiCaratteri, $numeroCasuale, 1);$elaborazione = $elaborazione . $carattere;
}
return $elaborazione;
}
$password = unaPasswordACaso(); echo $password."<br/> "; [/PHP]e così la invio
[PHP]
$destinatario = "[email protected],[email protected]";
$oggetto = 'email dal tuo sito';
if(isset($_POST['submit']))
{
if(trim($_POST['nome'])=='' or trim($_POST['messaggio'])=='')
{
echo 'I campi nome e messaggio sono obbligatori';
}
else
{ $testo = 'Nome: '.strip_tags(trim(stripslashes($_POST['nome']))).'\r\n';
$testo .= 'Messaggio:'.$password;
if( !@mail($destinatario, $oggetto, $testo) )
{
echo "Problemi nell'invio della mail";
}
else
{
echo 'Email inviata correttamente';
} }} ?> [/PHP]L'algoritmo crea la password casuale e la salva nella variabile $password che poi invia ai mittenti inseriti
[PHP]
$testo .= 'Messaggio:'.$password;
[/PHP]
quindi è ovvio che invia sempre la stessa a tutti, per inviare password diverse devo andare a "modificare" sia il punto dove mi genera la password sia quello in cui inserisco i mittenti, credo...
Grazie e scusate il disturbo sono alle prime armi con php
-
Certamente, se devi inviare una nuova password ad ogni utente devi fare cosi ( te lo faccio semplificato perché sono dallo smartphone
[PHP]#genero un array con le email
$mailaddress = array( '[email protected]', '[email protected]' );
for( $x = 0; $x < count( $mailaddress ); $x++ ) {
#generi la random password
#invia l'email a $mailaddress[$x]
}
[/PHP]
-
Perfetto ora mi invia una password diversa per ogni indirizzo email, la stringa per salvarla nel database la devo sempre inserire dentro il ciclo for giusto? altrimenti si verifica lo stesso problema di prima e mi salva solo un'unica password
Grazi per la tua gentilezza:)
-
Sì, devi metterla nel ciclo for! Un saluto