Scritp invio email convalida indirizzo

james81

Utente Attivo
14 Set 2010
72
0
0
Salve a tutti!,

ho creato un form di registrazione, ora vvorei inviare un'email all'indirizzo di registrazione con un link per conferma.

Potete consigliarmi qualche risorsa dove poter trovare o vedere come eseguire ciò?

Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
vuoi:
all'iscrizione andata a buon fine che arrivi a chi si è iscritto solo l'avviso di iscrizione
oppure
la classica email con scritto "...per confermare la tua iscrizione clicca qui..."
i due casi sono differenti come impostazione, per il secondo ci vogliono diversi controlli.
comunque per inviare l'email, in entrambi, usa la classe phpmailler (https://www.mrw.it/php/inviare-email-classe-phpmailer_7047.html)
 

james81

Utente Attivo
14 Set 2010
72
0
0
si infatti quello che vorrei fare è inviare la classica email con scritto "...per confermare la tua iscrizione clicca qui... "
 

felino

Utente Attivo
12 Dic 2013
940
10
18
Aci Catena (Catania)
Un soluzione (fatta in casa) potrebbe riguarda la realizzazione di un stringa numerica ad associare all'utente.

Mi spiego:
- nella tabella utenti potresti inserire qualcosa tipo: user - code
dove user è l'username dell'utente e code e quello da te generato per quell'utente.
- per generare il codice potresti usare qualcosa del tipo dataordierna_oraattuale_sequenzanumericarandom

Nel link di convalida passa l'username e il code generato, all'apertura della pagina dedicata verifichi se le due voci corrispondono ed eventualmente attivi l'account.
:byebye:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
io farei così schematicamente (leggi i commenti)
1) tabella utenti
id int(11) autoincrement primarykey
username varchar(50)
password varchar(50)//come minimo codificata con sha1
email varchar(50)
conferma set('s', 'n') default 'n'//s= confermato - n= non confermato
e altri campi che eventualmete ti servono
2) tabella provvisoria
id int(6) autoincrement primarykey
id_utente int(11)
codice varchar(50)
poi nella pagina iscrizione (tralascio alcune cose come l'esecuzione delle query...)
PHP:
<?php
//....
//guarda che non metto i controlli
$user=$_POST['username'];
$pass=$_POST['password'];
$email=$_POST['email'];
//fai l'inserimento di dati in tabella utenti
$query="INSERT INTO utenti(username,password,email,conferma) VALUES('$user','$password','$email', 'n'";
//nota il campo conferma è messo a n = non confermato
//a questo punto leggi l'id dellutente
$id_inserito=mysqli_insert_id($link);
//generi un numero casula e lo codifichi
$codice=sha1(rand(10000,99999));//oppure $codice=sha1(time());
//i due valori li metti nella tabella provvisoria
$query="INSERT INTO provvisoria(id_utente, codice) VALUES ($id_inserito, '$codice')";
//e prpari il testo dell'email
$testo="ciao $user, per confermare la tua iscrizione clicca <a href=\"http://www.tuo_sito.it/conferma.php?cod=$codice\">qui</a>";
//e la invii all'indirizzo email dell'utente
?>
poi ti fai la pagina conferma.php
PHP:
<?php
$codice=addslashes($_GET['cod']);
//cerchi nella tabella provvisoria
$query="SELECT id_utente FROM provvisoria WHERE codice=$codice";
//estrai l'id_utente
//uppi la tabella utenti
$query="UPDATE utenti SET conferma='s' WHERE id=$id_utente";
//elimini il record nella provvisoria che non serve più
//e riinvii dove ti pare, es. alla index
header('location=index.php');
?>
conviene che la pg conferma.php sia una pagina solo di php, senza doctipe e altro html e non deve essere lincata nel sito
 

james81

Utente Attivo
14 Set 2010
72
0
0
si alla fine avevo pensato pure io una cosa del genere, ma utilizzando una tabella sola, dove aggiungo inserisco l'utente e campo "codice" e poi una volta verificato il link attivo direttamente l'uente, così risparmio una tabella
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
si è possibile, però per la sicurezza è meglio averne due, qualche maleintenzionato può accedendo alla tabella utenti arrivare a leggere le pass e gli altri dati
 

felino

Utente Attivo
12 Dic 2013
940
10
18
Aci Catena (Catania)
ciao
si è possibile, però per la sicurezza è meglio averne due, qualche maleintenzionato può accedendo alla tabella utenti arrivare a leggere le pass e gli altri dati

Effettivamente, è un'ottima idea.

BorgoItalia, quindi con
PHP:
//generi un numero casula e lo codifichi 
$codice=sha1(rand(10000,99999));
il codice è sempre univoco, vero?

Grazie.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
praticamente si univoci, anche se esiste la possibilità (remota) di averne due uguali
con quel rand tu generi un numero a caso "scelto" tra 10000 e 99999 cioè tra 89999 numeri
quindi la probabilità di avere un certo numero è 1/89999 quindi è quasi impossibile avere due codici uguali (anche perchè vado ad eliminare il record in provvisoria)
se vuoi aumentare comunque la sicurezza di non averne uguali puoi o
aumentare l'intevallo 1000000 999999
o
usare time(), è estremamente difficle che due utenti si iscrivane nello stesso secondo
o
microtime() andando a leggere il tempo espresso in millisecondi
o
mt_rand()
cioè i sistemi sono molti

ultimo:
ti crei una funzione per la generazione che faccia:
1. genera il numero casuale
2. verifica sulla provvisoria se esite
3. esiste SI: ne genera un altro
4. esiste NO: return codice
si intende sempre codificati md5 o sha1 o altro
 

felino

Utente Attivo
12 Dic 2013
940
10
18
Aci Catena (Catania)
Esatto, usando la generazione del codice associata al time() si va al sicuro, oppure effettuo un controllo se esiste il record nella tabella.

Thanks!
 

james81

Utente Attivo
14 Set 2010
72
0
0
perfetto....ho fatto come consigliato e tutto funziona perfettamente,

ora volevo un consgilio: nel mio form volevo creare dei campi richiesti, magari anche un controllo per la password e verificare se tipo il nome utente e password già esistono a mano mano che li inserisco.

Grazie
 
Discussioni simili
Autore Titolo Forum Risposte Data
R Invio dai tessera sanitaria PHP 1
M telecamera Foscam - mancato invio mail ad account gmail IP Cam e Videosorveglianza 0
G Invio di più valori con la stessa checkbox PHP 4
M Invio dati database via email php PHP 0
K [php]form invio dati PHP 0
G form invio multiplo con checkbox PHP 12
nivaria.achinet Intercettare form solo dopo invio Javascript 1
M Memorizzare i dati nei campi prima dell'invio al db PHP 4
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Form: come tornare ai campi già compilati dopo invio PHP 1
G Invio form con PHP PHP 3
M Invio di email PHP 0
A invio massivo dati a file php Javascript 4
P Funzione jQuery Ajax invio file a php jQuery 1
Cosina Upload multiplo con invio allegati per email PHP 0
C Mailchimp ritardo invio newsletter subscribers Email Marketing 1
G creazione menu a tendina e invio a pagina php PHP 1
R Invio mail con allegati multipli PHP 0
R Invio mail con allegati da directory PHP 1
Cosina Invio messaggio a mailing list su file txt PHP 9
W Invio Dati ad un altra pagina Classic ASP 1
S Invio email da form PHP 8
psicomia Server e url per invio di file Server Dedicati e VPS 3
max1974 Invio email PHP 12
Daniele_Carrara Problema timeout - invio mail PHP 7
U PHP bottone per invio mail o ritorno al form PHP 15
G Invio mail con php da dati prelevati da un database PHP 9
L [PHP] Invio Immagini PHP 1
AC1 [PHP] Invio Mail PHP 18
I [PHP] Invio sms multipli PHP 4
S Consigli per invio di comunicati stampa Discussioni Varie 2
A [PHP] Invio automatico dati da form PHP 6
F Estrazione Email di persone selezionate e attive / facebook + invio di massa! Annunci servizi di Social Media Marketing 0
ANDREA20 [PHP] Modulo email invio PHP 5
Shyson [PHP] Codice iscrizione e invio avviso nuovi articoli PHP 3
Tommy03 Errore invio email con PHP PHP 1
B [PHP] Invio mail automatico dopo compilazione form - db PHP 25
Cosina [PHP] Preservare i campi del form solo se l'invio non ha successo PHP 5
A [PHP] errore 404 e invio mai path pagina con link interrotto PHP 2
A [PHP] Invio messaggio a tutti gli iscritti PHP 2
M [PHP] Problema script ricezione e invio posta... PHP 1
C [PHP] Problema Invio Email Elseif PHP 2
A [PHP] Problema invio mail con funzione mail() PHP 3
Tommy03 Invio email con PHP PHP 3
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
R [javascript]Form invio preventivo Javascript 0
A [PHP] Invio MP a destinatari multipli PHP 6
Simone P Fatturazione elettronica xml e invio SDI Discussioni Varie 53
paloppa [PHP] Invio mail da form dubbio PHP 17

Discussioni simili