Suggerimento e aiuto su email di conferma account

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio

Emix

Utente Attivo
15 Feb 2010
596
0
16
Salve a tutti...
Ho finito di fare uno script per registrazione utente e login... funziona anche l'invio dell'email con il relativo link, ma la conferma mi sembra laboriosa.. Mi spiego meglio...

Io utente devo registrarmi, accedo alla pagina register.php, inserisco tutti i dati e faccio submit, mi riporta ad una pagina che mi dice di essermir egistrato regolarmente e di controlla l'email per verificare l'indirizzo. Controllo email, arriva email con link, e il link mi porta ad un form con scritto User e Password, li inserisco e se sono esatti l'account si attiva e mi appare la pagina di login...A questo punto l'utente deve effettuare il login...

Mi sembra tutto troppo laborioso... Come potrei fare per snellire la procedura?
 
Non è troppo laborioso, è il sistema più semplice per verificare un utente, ti basta generare una stringa random e inviarla con un link via e-mail, nella pagina di conferma controllerà la variabile e l'user nel db e lo attiverà cambiando un ulteriore campo nel db, fatto ciò al login sarà sufficiente controllare se lo stato è verificato nel db
 
eh ma io non sono capace a generare un codice univoco da aggiugere all'utente nel link di conferma e a richiamarlo... Io l'ho fatta in questa maniera prorpio perche mi rimaneva più facile... Ma ora mi rendo conto che forse è macchinosa...
 
Ci sono molti modi per generare un codice quasi del tutto univoco

es.
PHP:
$final = mt_rand(1000,999999);
 for($i=0;$i<rand(1,1000);$i++) $final .= uniqid('',true).microtime(true).mt_rand(100,100000);
echo md5($final);

Io di solito uso qualcosa di simile, comunque ovviamente una volta generato lo controlli nel db ed eventualmente lo rigeneri quindi siamo già a 2 tentativi di unicità (anche se è quasi matematicamente impossibile che ce ne sia uno uguale), e quando l'utente conferma la registrazione elimini il codice di conferma cosi sei praticamente sicuro al 100%
 
Ultima modifica:
perdona la mia ignoranza... ma detta in tutta sincerità non so proprio dove mettere le mani,... :( aiutami a capire... non voglio pappe pronte...
 
Allora da quanto ho capito io la gestisco cosi di solito...

hai la pagina registrazione.php con input per i vari cambi che registri

quando dai il submit a una pagina registrazioneok.php salvi tutto e tramite la funzione mail di php mandi un mail con la conferma dei dati e un link alla pagina checkregistrazione.php con un numero dinamico
nel momento in cui salvi l'utente crei un codice o un numero random che salvi nel db utenti nel campo es. active_utente.
ipotizza che generi un numero random es 123456 nella mail che mandi il link sarà www.tuosito.it/checkregistrazione.php?codice=123456 quindi nella pagina checkregistrazione.php non farai altro che controllare se coincidono il codice passato per get e il codice a db se è uguale setti a 1 il campo active_utente

spero di essere stato chiaro
 
se ho capito bene... uso un qualcosa che genera x numeri, questi x numeri vengono scritti dentro numero_iscrizione, la mail che arriva all'utente sarà checkmail.php la quale controllerà i numeri nel link, li confronta col db e se li trova setta account_active 1 altrimenti resta 0. Ora mi servirebbe capire come se fa a fa tutta sta cosa asd.... Generare numeri, posso usare la funzione che gia uso che crea 13 numeri univoci... il problema è aggiungerla al link e cliccando deve uscire fuori quella cosa tutto li...
 
la maggiorparte del procedimento lo hai gia fatto quando invii la mail per avere un codice sicuramente univoco puoi usare piu semplicemente la funzione time(). questo valore lo devi salvare a db in modo da poterlo confrontare quando l'utente clicca sul link nella mail e va alla pagina di controllo. se è verificata la condizione valore_db = valore_get_del_link setti il campo del db a 1 se no resta semplicemente al valore che avevi inserito quando hai inviato la mail quindi time()
 
potresti farmi un esempio pratico per favore? ti ringrazio molto..
 
:( aiutami a capire... non voglio pappe pronte...

allora tu immagina di avere una tabella utenti con vari campi tra cui questo famigerato active_utente

Tabella: Utenti
id_utente
nome_utente
...
...
...
active_utente

quando un utente si registra salvi il tutto a db

PHP:
$numero_univoco = time();
				$query = "INSERT INTO utenti ( nome_utente , mail_utente , active_utente ) VALUES ('" . $_POST['user'] . "',  '" . $_POST['mail'] . "',  '" . $numero_univoco . "')";
				
				$insert = mysql_query($query);

una volta inserito manderai una mail di conferma

PHP:
$header = 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/plain; charset=UTF-8' . "\r\n";
					
				$header .= "To: <". $_POST['mail'] .">\n";;
				$header .= "From: MITTENTE\n";
				$header .= "Gosh-Mailer:\n\n";
				$oggetto = "Registrazione tuo sito";
				$messaggio = "Caro " . $_POST['user'] . " abbiamo ricevuto la tua richiesta clicca sul link sottostante per attivare la tua registrazione\n\n\nwww.tuosito.com/checkregistrazione.php?code=" . $numero_univoco;
				
				mail("",$oggetto,$messaggio,$header);

a questo punto ricevuta la mail l'utente cliccherà sul link che lo rimanda alla pagina checkregistrazione e non ti resta che fare questo (ovviamente con i dovuti controlli)

PHP:
$query = "UPDATE utenti SET active = '1' WHERE active_utente = '" . $_GET['code'] ."'";
			
	$update = mysql_query($query);
 

Discussioni simili