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

    Evitare registrazione con stesso username e password

    ragazzi mi stavo sbizarrendo nella creazione di uno scriptello per la registrazione di utenti, ma mi sono accorto che permette la registrazione di due utenti con lo stesso Username o Email. Come posso ovviare al problema?

    Il file in questione è il seguente:

    Codice PHP:
    <?

    /*
    * Creato Da: Pixelate
    * Nome File: Registrazione.php
    */

    /* Connessione Al Server Mysql */
    $db mysql_connect ('localhost','root') or die ("Impossibile connettere al server Mysql, verifica i dati e successivamente riprova.");

    /* Selezione Del Database Mysql */
    mysql_select_db('database'$db) or die ("Impossibile selezionare il database specificato, verifica i dati e successivamente riprova.");

    /* Acquisizione Variabili Registrazione Da Register.php */
    $username = @$_POST['username'];
    $password = @$_POST['password'];
    $email = @$_POST['email'];

    /* Impostazioni Su Variabili acquisite */

    // Criptazione MD5 Password
    $passwordcript md5('$password');

    // Controllo: Rimpiazziare Caratteri Su Variabili Acquisite
    $username str_replace("<""&lt;"$username);
    $username str_replace(">""&gt;"$username);   
    $password str_replace("<""&lt;"$password);
    $password str_replace(">""&gt;"$password);

    // Controllo: Eliminare Spazi [Inizio - Fine] Su Variabili Acquisite
    (trim($username) == "");
    (
    trim($password) == "");

    // Controllo: Verifica Lunghezza Variabili Acquisite
    if (strlen($username) < or strlen($password) < 6) {

    $WarnUsr "[b]Username[/b] o [b]Password[/b] troppo corti. La loro lunghezza minima è di 6 caratteri.";
        
    echo 
    "$WarnUsr";
    }

    // Esecuzione Query Di Inserimento In Database Mysql
    else {
    $query "INSERT INTO utenti (username, password, email) VALUES ('$username', '$passwordcript', '$email')";

    echo 
    "La registrazione è avvenuta correttamente. Adesso puoi effettuare il login.";
    }

    // Chiusura Connessione Al Server Mysql
    mysql_close($db);

    ?>

  2. #2

    Re: Evitare registrazione con stesso username e password

    Originariamente inviato da IllusionDesigne
    ragazzi mi stavo sbizarrendo nella creazione di uno scriptello per la registrazione di utenti, ma mi sono accorto che permette la registrazione di due utenti con lo stesso Username o Email. Come posso ovviare al problema?

    Il file in questione è il seguente:

    Codice PHP:
    <?

    /*
    * Creato Da: Pixelate
    * Nome File: Registrazione.php
    */

    /* Connessione Al Server Mysql */
    $db mysql_connect ('localhost','root') or die ("Impossibile connettere al server Mysql, verifica i dati e successivamente riprova.");

    /* Selezione Del Database Mysql */
    mysql_select_db('database'$db) or die ("Impossibile selezionare il database specificato, verifica i dati e successivamente riprova.");

    /* Acquisizione Variabili Registrazione Da Register.php */
    $username = @$_POST['username'];
    $password = @$_POST['password'];
    $email = @$_POST['email'];

    /* Impostazioni Su Variabili acquisite */

    // Criptazione MD5 Password
    $passwordcript md5('$password');

    // Controllo: Rimpiazziare Caratteri Su Variabili Acquisite
    $username str_replace("<""&lt;"$username);
    $username str_replace(">""&gt;"$username);   
    $password str_replace("<""&lt;"$password);
    $password str_replace(">""&gt;"$password);

    // Controllo: Eliminare Spazi [Inizio - Fine] Su Variabili Acquisite
    (trim($username) == "");
    (
    trim($password) == "");

    // Controllo: Verifica Lunghezza Variabili Acquisite
    if (strlen($username) < or strlen($password) < 6) {

    $WarnUsr "[b]Username[/b] o [b]Password[/b] troppo corti. La loro lunghezza minima è di 6 caratteri.";
        
    echo 
    "$WarnUsr";
    }

    // Esecuzione Query Di Inserimento In Database Mysql
    else {
    $query "INSERT INTO utenti (username, password, email) VALUES ('$username', '$passwordcript', '$email')";

    echo 
    "La registrazione è avvenuta correttamente. Adesso puoi effettuare il login.";
    }

    // Chiusura Connessione Al Server Mysql
    mysql_close($db);

    ?>
    Ciao!
    Puoi controllare tramite il database la presenza di quell'username o di quell'indirizzo e-mail. Prima della query di inserimento nel database, inserisci questa:

    Codice PHP:
    $query mysql_query("SELECT id FROM utenti  WHERE username = '$username' OR email = '$email'");
    $rows mysql_num_rows();
    if(
    $rows 0){
    // utente già presente...
    }else{
    // utente non presente...

    Ad essere sincero non ho provato con OR, ma con AND funziona sicuramente. Prova così, se hai problemi fammi sapere!


  3. #3
    Occhio alle SQL injection!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  4. #4
    per prima cosa dovresti impostare un indice UNIQUE sulla colonna dello username e un altro su quella dell'email nel tuo database.
    questo creera' un errore se cerchi di inserirlo una seconda volta

    per prevenire l'errore, puoi verificare il risultato della query
    Codice PHP:
    "SELECT COUNT(*) FROM table WHERE username='".mysql_escape_string($user)."' OR password='".mysql_escape_string($pass)."' " 
    danno

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 © 2024 vBulletin Solutions, Inc. All rights reserved.