Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    verifica se lo user o 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?

  2. #2
    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';


  3. #3
    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

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Sei nuovo di PHP, vero?
    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 ogni modo se i controlli per verificare se qualcuno si è già segnato con una certa password li fai così, sono facilmente aggirabili.
    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.

  5. #5
    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]'); 

  6. #6
    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

  7. #7
    Con questo codice, il codice è pure più breve
    Codice 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&agrave; registrato da un altro utente"); 
    Ciao
    Programmatore e responsabile seo della testata giornalistica www.europacalcio.it - www.canforagennaro.it

  8. #8
    Ottimo! Nel mentre che aspettavo le risposte, ho povato con un'altra soluzione molto artigianale:

    al termine della insert, ho messo
    Codice PHP:
    or die("....".mysql_error()); 
    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.
    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!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.