Ciao,ho uno script che si occupa di inserire nel database mysql i dati utente e tra questi l'utente inserisce anche un nome utente ed una mail. come posso verificare se lo user e la mail esistono già nel database?
Ciao,ho uno script che si occupa di inserire nel database mysql i dati utente e tra questi l'utente inserisce anche un nome utente ed una mail. come posso verificare se lo user e la mail esistono già nel database?
Codice PHP:
$query="SELECT nome, email FROM nometabella WHERE nome='".$nome."' OR email='".$email."'";
$result=mysql_query($query,$db); //$db è la tua connessione al db
if(mysql_num_rows($result) > 0)
{
echo 'dati già esistenti';
}
![]()
Grazie! L'ho provato e funziona, ma vorrei implementare anche due vie alternative e cioè:
- se esiste già la mail a sistema, mi reindirizza ad una pagina
- se la mail non è presente nel database mi manda nella pagina successiva
Questi if non riesco ad implementarli nel tuo script. Mi puoi dare una mano?
Grazie
Sei nuovo di PHP, vero?
Ad ogni modo se i controlli per verificare se qualcuno si è già segnato con una certa password li fai così, sono facilmente aggirabili.Codice PHP:
$query="SELECT nome, email FROM nometabella WHERE nome='".$nome."' OR email='".$email."'";
$result=mysql_query($query,$db); //$db è la tua connessione al db
if(mysql_num_rows($result) > 0)
{
echo 'dati già esistenti';
//qui il redirect per nome ed email già esistente
}
else
{
//qui il redirect per nome ed email non presenti nel db (passaggio alla pagina successiva)
}
Ad esempio si può registrare
Pippo con email pippo@topolinia.com
e
Topolino con email pippo@topolinia.com
Il tuo sistema li accetterà entrambi, il primo giustamente, ma il secondo non dovrebbe essere accettato.
Questo accade perché quando si registra Topolino, il sistema controlla che non esista l'accoppiata "Topolino / pippo@topolinia.com", non trovandola lo registra, ma l'indirizzo è già in uso da Pippo e non devono esserci 2 utenti con stesso indirizzo email.
Devi fare il controllo (anche) cercando solamente l'email, se già esiste, a chiunque sia associata, il nuovo utente che cerca di usarla deve essere bloccato.
invece per instradare gli utenti ad una pagina piuttosto che ad un'altra in base all'esito dell'operazione di accertamento esistenza email nel db devi utilizzare header ad esempio:
Codice PHP:
header('Location: [url]http://www.example.com/[/url]');
Ciao! ti ringrazio per il suggerimento, ho inserito anche una unique a livello di campo email della tabella. Questo blocca in modo irreversibile l'utente.
Grazie a tutti
Con questo codice, il codice è pure più breve
CiaoCodice PHP:
if(mysql_num_rows(mysql_query("SELECT user,mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1)
print("Attenzione : Questo indirizzo email <font color=NAVY> $mail </font> risulta già registrato da un altro utente");
Programmatore e responsabile seo della testata giornalistica www.europacalcio.it - www.canforagennaro.it
Ottimo! Nel mentre che aspettavo le risposte, ho povato con un'altra soluzione molto artigianale:
al termine della insert, ho messo
1. ho inserito nel campo email della tabella, il constraint e unique in modo che ci sia un solo ed unico valore con quella mail.Codice PHP:
or die("....".mysql_error());
2. tra i doppi apici, ho inserito del codice html che avverte l'utente della presenza dello stesso indirizzo email nel sistema e lo obbliga a tornare indietro e modificare i dati.
Le soluzioni che mi avete postato le ho provate e sono perfette!
Grazie a tutti!!