Visualizzazione risultati 1 fino 7 di 7

Discussione: Controllo nome utente già esistente

  1. #1
    Guest

    Predefinito Controllo nome utente già esistente

    Salve, avrei bisogno di un aiuto per quanto riguarda Mysql e PHP. Il problema è che dal seguente codice non riesco a fare in modo che se un nick è gia esistente, non mi completi la registrazione, e che di conseguenza mi appaia: "il nome utente esiste già". Chiedo aiuto

    Codice:
    Codice PHP:
    <?php

    // attraverso un if controlliamo che il form sia stato inviato

    if ( $_GET['inviodati'] == "ok" ) {



    // recuperiamo i dati inviati con il form


    $nome = $_POST['nome'];

    $nickname = $_POST['nickname'];

    $mail = $_POST['mail'];

    $pass1 = $_POST['pass'];

    $pass2 = $_POST['pass2'];




    // ora controlliamo che i campi siano stati tutti compilati

    if ( $nome == TRUE && $mail == TRUE && $nickname == TRUE && $pass1 == TRUE && $pass2 == TRUE ) {


    // controlliamo se il campo mail è stato scritto in maniera errata


    $email = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$mail);

    if (
    $email == TRUE ) {


    //controllo id utente


    $sql = mysql_query("SELECT * FROM tabella WHERE nickname = '$nickname'");

    $num_rows = mysql_num_rows($sql);

    if (
    $num_rows == 0 ) {


    // controlliamo se l'mail è presente già nel database

    $sql = mysql_query("SELECT * FROM tabella WHERE mail = '$mail'") or die ("Mail già occupata");

    $num_rows = mysql_num_rows($sql);

    if (
    $num_rows == 0 ) {


    // ora controlliamo che le password inserite siano identiche

    if ( $pass1 == $pass2 ) {


    // infine criptiamo la password con md5

    $pass_md5 = md5($pass1);

    mysql_query("INSERT INTO tabella_registrati
    (id , nick , nome , pass , mail )
    VALUES
    ('','
    $nickname', '$nome', '$pass_md5', '$mail' )") OR DIE(mysql_error());

    // e inviamo una mail con la riuscita registazione


    mail ($mail, "Registrazione OK", "Complimenti registrazione effettuata con successo", "From: [email]tuamail@host.format[/email]o");

    // messaggio da far visualizzare all'utente finale

    echo "Complimenti registrazione effettuata con successo.";


    } else {

    echo
    "Le password non corrispondono.";

    }

    } else {

    echo
    "Indirizzo mail già utilizzato.";

    }

    } else {

    echo
    "il nome utente esiste già";

    }

    } else {

    echo
    "La tua mail non è idonea, per la registrazione.";

    }

    } else {

    echo
    "Tutti i campi sono obbligatori.";

    }

    }

    ?>
    Grazie in anticipo.
    Ultima modifica di webskins : 11-05-2013 alle ore 00.07.18

  2. #2
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Codice PHP:
    $sql = mysql_query("SELECT * FROM tabella WHERE nickname = '$nickname'");
    Dovrebbe essere
    Codice PHP:
    $sql = mysql_query("SELECT * FROM tabella_registrati WHERE nick = '$nickname'");
    Comunque ti consiglio di utilizzare le funzioni isset() ed empty() invece di $nome==TRUE, e filter_var() invece di eregi() per verificare l'e-mail.
    Ciao!

  3. #3
    Guest

    Predefinito

    Grazie per le funzioni, le userò, prima devo informarmi meglio come funzionano :P.
    Si l'errore era:

    WHERE nick = '$nickname'");

    Grazie mille :D
    Ultima modifica di webskins : 11-05-2013 alle ore 00.07.35

  4. #4
    Guest

    Predefinito

    Scusate se disturbo ancora, ma ho ancora problemi, questa volta per quanto riguarda il login. Non riesco appunto ad eseguire il login, mi da problemi con nick e pass. T_T

    Codice PHP:
    $nick=$_POST['nickname'];

    $pass=$_POST['pass'];


    $nick = stripslashes($nick);

    $pass = stripslashes($pass);

    $nick = mysql_real_escape_string($nick);

    $pass = mysql_real_escape_string($pass);

    $sql="SELECT * FROM tabella_registrati WHERE nick='$nick' and pass='$pass'";

    $result=mysql_query($sql);



    $count=mysql_num_rows($result);



    if(
    $count==1){



    session_register("nick");

    session_register("pass");

    header("location:index.php");

    }

    else {

    echo
    "Wrong Username or Password";

    }

    ?>

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Hai messo la session_start()?

    per rendere il codice più leggibile, dovresti almeno indentare.

    Ciao!

  6. #6
    Guest

    Predefinito

    Codice PHP:
    <?php

    include ('configurazione.php');

    error_reporting(E_ERROR | E_WARNING | E_PARSE);

    ini_set('display_errors', 'On');

    error_reporting(E_ALL);


    // username and password sent from form

    $nick=$_POST['nickname'];

    $pass=$_POST['pass'];


    // To protect MySQL injection (more detail about MySQL injection)

    $nick = stripslashes($nick);

    $pass = stripslashes($pass);

    $nick = mysql_real_escape_string($nick);

    $pass = mysql_real_escape_string($pass);

    $sql="SELECT * FROM tabella_registrati WHERE nick='$nick' and pass='$pass'";

    $result=mysql_query($sql);

    // Mysql_num_row is counting table row

    $count=mysql_num_rows($result);


    // If result matched $myusername and $mypassword, table row must be 1 row

    if($count==1){

    session_start();

    if(!
    session_is_registered(nick)){

    header("location:index.php");

    }


    // Register $myusername, $mypassword and redirect to file "index.php"


    session_register("nick");

    session_register("pass");

    header("location:index.php");

    }

    else {

    echo
    "Wrong Username or Password";

    }


    ?>
    Non so se è giusto, è da poco che sto "smanettando" con php e altro :(

  7. #7
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Prova in questo modo... ho sistemato un po' di cose.
    Codice PHP:
    <?php
    session_start
    ();
    include (
    'configurazione.php');
    ini_set('display_errors', 'On');
    error_reporting(E_ALL);

    // username and password sent from form
    $nick_originale=$_POST['nickname'];
    $pass_originale=$_POST['pass'];

    // To protect MySQL injection (more detail about MySQL injection)
    $nick = mysql_real_escape_string($nick_originale);
    $pass = mysql_real_escape_string($pass_originale);
    $sql="SELECT * FROM tabella_registrati WHERE nick='$nick' AND pass='$pass'";
    $result=mysql_query($sql);

    // Mysql_num_row is counting table row
    $count=mysql_num_rows($result);

    // If result matched $myusername and $mypassword, table row must be 1 row
    if($count==1){
    $_SESSION['login']=TRUE;
    $_SESSION['nick']=$nick_originale;
    $_SESSION['pass']=$pass_originale;
    header("location:index.php");
    }else {
    echo
    "Wrong Username or Password";
    }
    ?>
    Per vedere se un utente è loggato devi controllare che $_SESSION['login'] sia "TRUE" (nella pagina del logout lo dovrai impostare su "FALSE"), per leggere il suo nickname utilizza $_SESSION['nick'] e per la password $_SESSION['pass'].
    Inoltre, quando sei sicuro che lo script funzioni, elimina "error_reporting(E_ALL);".
    Ciao!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •