- Home
- Categorie
- Coding e Sistemistica
- PHP
- Controllo se indirizzo mail è realmente esistente
-
Ciao 4everyoung,
credo che l'unico modo sia il classico invio di una email con un link da cliccare per dare conferma della validita' dell'indirizzo stesso.
-
Ciao anzi Ola.... OlaOla, grazie per aver risposto, esiste per caso qualche script di esempio al quale io possa dare una sbirciatina per capire come si fa? Anche un suo esempio se può... per il momento non ho idea di come si faccia.
Il sistema di login l'ho già fatto ed è perfettamente funzionante, con tanto di controllo user, controllo pass in md5, controllo validità email, cookie, avvio sessione eccetera eccetera, unica pecca è questo controllo per verificare la veridicità dell'indirizzo, diciamo che non avevo proprio pensato a questa cosa del link per controllare la validità dell'indirizzo e con il click su di esso confermare così l'iscrizione nel database del sito in quanto sarebbe la conferma dell'esistenza dell'indirizzo stesso... aspetto suggerimenti. Grazie e... ola.. ola...
-
allora con la funzione mail() mandi le email.
quando un utente si registra inserisci ad esempio "microtime();" in un campo del database e un altro campo con scritto abilitato (un campo boolean)
quindi quando finisce l'iscrizione gli mandi una mail con tuosito.com/endregister.php?email=suaemail&value=il microtime
quando ci clicca la pagina endregister andrà a vedere se esiste un utente con quella email e che abbia quel microtime se si abiliti l'account e se lo ha abilitato l'email esiste perchè senza è impossibile attivare l'account
-
ciao skyline :), ma al posto del microtime() posso metterci anche un numero generato casualmente cioè random in questo modo:
$cod_conf=md5(uniqid(rand(), TRUE));e poi nel link della mail devo fare così?:
attivazione.php?username=$username&cod_conf=$cod_confoppure
attivazione.php?email=$email&cod_conf=$cod_conf
E' la stessa cosa?
Se è così, pensi sia almeno un minimo sicuro? E poi una volta che l'utente si è confermato mi conviane cancellare dal db quel numero casuale?(giusto per pulizia)E un'altra cosa ancora, se voglio dare ad esempio una settimana di tempo all'utente per registrarsi dopodichè scade il tempo a disposizione e in automatico cancellare quei record con stato attivazione ancora a 0, cosa devo fare?
ciao "sky" e grazie
-
Cioa 4everyoung,
@4everyoung said:
ciao skyline :), ma al posto del microtime() posso metterci anche un numero generato casualmente cioè random in questo modo:
$cod_conf=md5(uniqid(rand(), TRUE));Si, volendo puoi mettere un numero random, però con il microtime avreste anche l'informazione sull'istante in cui l'utente ha richiesto la registrazione, quindi con un colpo avresti più informazioni.
Secondo me è preferibile utilizzare il microtime().
Dai un'occhiata a qualche esempio su it.php.net/microtime@4everyoung said:
e poi nel link della mail devo fare così?:
attivazione.php?username=$username&cod_conf=$cod_confoppure
attivazione.php?email=$email&cod_conf=$cod_conf
E' la stessa cosa?
Se è così, pensi sia almeno un minimo sicuro? E poi una volta che l'utente si è confermato mi conviane cancellare dal db quel numero casuale?(giusto per pulizia)Puoi indifferente l'una o l'altra forma, l'importante è che ci sia il codice univoco (che può essere il numero random o l'informazione dell'istante di registrazione espressa in secondi)
Per quanto riguarda la sicurezza, ti riferisci al fatto che potrebbero attivare account senza fare l'attivazione dalla mail ?
Per quanto riguarda la cancellazione del numero casuale dal db, se usi il numero, effettivamente poi non ha molto senso tenerlo.
@4everyoung said:
E un'altra cosa ancora, se voglio dare ad esempio una settimana di tempo all'utente per registrarsi dopodichè scade il tempo a disposizione e in automatico cancellare quei record con stato attivazione ancora a 0, cosa devo fare?
ciao "sky" e graziePotresti sfruttare il processo "cron" per avviare script a determinati istanti di tempo oppure se non potessi utilizzare questo script puoi dare un'occhiata ad un tutorial che cerco e ti posto.
ciao
-
Per fare operazioni a tempo prova a dare un'occhiata a questa chicca postata da Probid:
http://www.giorgiotave.it/forum/php-mysql/41570-chicca-d-utilizzare-cron-senza-account-di-root.html
facci sapere le strade che decidi di percorrere.
-
Puoi anche fare in un altro modo
esempio l'utente immette [email][email protected][/email]
fai l'explode con la @
e ottieni miodominio.ext e controlli che il dominio esista...
-
La soluzione migliore è quella postata da olaola, cioè se alla pagina del form hai un po' di input, fai mandare i dati ad una pagina php con un codice tipo di questo genere:
[php]<?php
$to = $_POST['email']; // Indirizzo email dove mandare l'email
$link = "http://www.sito.com/conferma.php?email=".$to; // Link di conferma
$ogg = "Conferma"; // Oggetto della mail
$msg = "Ciao, conferma il link: ".$link; // Corpo del messaggio
$h = "From: Nome che vuoi tu<email@email che vuoi tu>"; // Email e nome del mittente mailmail($to, $ogg, $msg, $h);
echo "Mail inviata, controlla la posta elettronica e soprattutto la posta indesiderata";
?>[/php]
-
[EDIT] Ho cannato a postare la cosa!!!!
-
Ciao ragazzi, grazie a tutti, mi state dando ottimi suggerimenti, vediamo un pò quale strada è più conveniente, pertanto la prima cosa che farò è dare un'occhiata ai link di MZ, ora invece facciamo un'altra cosa, visto che fuori c'è una giornata meravigliosa facciamo che vado al mare a rilassarmi un pochino , faccio un pò di tuffi e una bella nuotata, ne ho bisogno... tanto per rinfrescarmi un pò le idee e ritornare più pimpante di prima... Ciao a tutti ragazzi. buona Domenica. Ci sentiamo.
-
@MZ said:
Puoi indifferente l'una o l'altra forma, l'importante è che ci sia il codice univoco (che può essere il numero random o l'informazione dell'istante di registrazione espressa in secondi)
Per quanto riguarda la sicurezza, ti riferisci al fatto che potrebbero attivare account senza fare l'attivazione dalla mail ?
Ciao MZ, sto pensando di affidarmi al numero random, voci dicono che l'istante di registrazione è più facile da azzeccare rispetto al numero random in md5, per quanto riguarda la sicurezza, la risp è si, per evitare che qualcuno riesca a crearsi un md5 ed effettuare la registrazione senza essersi registrati e buttarmi giù il sito... cmq ho migliorato di tantissimo lo script grazie ai vostri consigli. Ciao
-
diciamo che azzeccare il tempo di registrazione in microsecondi è praticamente impossibile ahahha
Comunque anche in secondi va bene quindi un md5(time()); penso vada più che bene... non penso che qualcuno si metta li a provare... caso mai si crea un'email che si fa in 1 minuto e ti iscrivi...
-
usa:
****uniqid();****al posto di md5(time));
secondo me è funziona meglio....e fa la stessa cosa!
-
Ciao Skyline, ahaaa sei forte,anche io ho pensato la tua stessa cosa, cioè che azzeccare l'attimo esatto di un utente sia praticamente impossibile, ma a sfatare sto mito e dirmi che invece è cosa fattibile è stato niente meno che un noto personaggio con anni di esperienza e che ne ha combinate di tutti i tipi, mi ha comunicato che un bravo programmatore tenta e ritenta alla fine ci azzecca, senza nemmeno troppi sforzi, questione di impostazioni/modifiche sull'ora del proprio sistema, lo si può spostare indietro di qualche minuto e tentare con una dimenstichezza che solo genii della programmazione possono avere, genii che venero e ammiro e... insomma mi ha fatto un discorso molto tecnico, oppure tra milioni di utenti ce ne possono essere minimo due che si iscrivono nello stesso frangente con solo qualche microsecondo di differenza... e già la cosa comincia a scemare (così mi ha detto! Non so dirti altro, non ne sono all'altezza..), mentre mi consigliava il numero random xchè è infinito. Anche io sono daccordo con ciò che dici, mi sto cimentando ora con il php, ma se un professionista dice che non ci vuole molta arte a camuffare la cosa allora ci credo pure...
Cmq non è detto che non cambi idea ed utilizzi il microtime(), devo scegliere tra microtime(), gettimeofday(), numero random...A Digital Daigor: non ho capito bene il tuo esempio, in pratica io il numero random lo genero in quel modo, come ho già scritto: **md5(uniqid(...), **e mi genera un stringa numerica di 32 caratteri alnum (preso dal manuale php.net). Mi spieghi meglio l'esempio che hai fatto? Devo fare così:
md5(uniqid(time());
Grazie. Ciao a tutti.
-
no, tu usi solamnente: **uniqid()
**crea un id univoco.....semplicemente....ma credo sia di soli 12 caratteri...
comunque....prova....
echo uniqid();
-
ok, grazie.
-
si ma ragazzi... crearsi un'email ci vogliono 3 secondi... ci sono servizi che non bisogna nemmeno iscriversi... quindi è inutile stare qui ad impazzire...
-
il bello di programmare....è scervellarsi per ricreare cose già fatte, e nel contempo, imparare a farle!!!!