[PHP] Controllo nome utente form di registrazione

Andrea_2017

Nuovo Utente
17 Set 2017
26
0
1
36
Ciao a tutti, ho un problemino con il controllo dell'esistenza del nome utente sul database.
In sostanza il codice scritto mi impedisce l'iscrizione di un utente con un nome già presente sul database,ma non fa comparire il messaggio che segue dopo l'or die e mi rimanda alla stessa pagina che viene visualizzata in fase di iscrizione.
Posto di seguito il codice php:
PHP:
<?php

require 'config/includes.php';
$db=dbconnect();

    if (!empty($_POST['nome'])) {
   
        $nom = $_POST['nome'];
        $nome= htmlentities($nom);
        $sesso_pg = $_POST['sesso'];
        $sesso= htmlentities($sesso_pg);
        $email = $_POST['mail'];
        $mail= htmlentities($email);
        $pax1 = $_POST['pass'];
        $pass1= htmlentities($pax1);
        $pax2 = $_POST['pass2'];
        $pass2= htmlentities($pax2);
        $naz = $_POST['naz'];
        $naz= htmlentities($naz);
        #controllo che il nome scelto non sia attualmente in uso
        $checknome = mysql_query("SELECT * FROM personaggi WHERE nome = '$nome'") or die ("Nome in uso");
        $nom_rows = mysql_num_rows($checknome);
            if ( $nom_rows == 0 ) {
                    #controllo il format della mail
                    $email = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$mail);
                        if ( $email == TRUE ) {
                            // checkmail
                            $checkmail = mysql_query("SELECT * FROM personaggi WHERE mail = '$mail'") or die ("Mail  occupata");
                            $num_rows = mysql_num_rows($checkmail);
                                if ( $num_rows == 0 ) {
                                    // controlliamo che le password inserite siano identiche
                                    if ( $pass1 == $pass2 ) {
                                        $pass_sha = sha1($pass1);
                                        mysql_query("INSERT INTO personaggi
                                            (nome, sesso, pass , naz , mail, iscrizione)
                                            VALUES
                                            ('$nome', '$sesso', '$pass_sha', '$naz', '$mail', NOW())") OR DIE(mysql_error());
                                       
                                        // inviamo una mail con la riuscita registazione
                                        mail ($mail, "Registrazione OK", "Complimenti registrazione effettuata con successo. Nome utente: '$nome'. Password: '$pass1'", "From: postmaster@********.com");
                                       
                                        // messaggio da far visualizzare all'utente finale
                                        echo "Complimenti registrazione effettuata con successo<br>Nome utente: $nome. Password: $pass1<br>Ti � stata inviata una mail di riepilogo all'indirizzo $mail";
                                       
                                        header("Location: fineiscrizione.php", true);
                                }
                        }
                }
           
    }
}
mysql_close();
?>
Cosa c'è di sbagliato?Qualcuno potrebbe aiutarmi ad inviduare l'errore?
Grazie in anticipo
 

xone

Utente Attivo
4 Apr 2014
180
14
18
Salento
Ciao prova cosi:
PHP:
<?php

require 'config/includes.php';
$db=dbconnect();

    if (!empty($_POST['nome'])) {
 
        $nom = $_POST['nome'];
        $nome = htmlentities($nom);
        $sesso_pg = $_POST['sesso'];
        $sesso = htmlentities($sesso_pg);
        $email = $_POST['mail'];
        $mail= htmlentities($email);
        $pax1 = $_POST['pass'];
        $pass1 = htmlentities($pax1);
        $pax2 = $_POST['pass2'];
        $pass2= htmlentities($pax2);
        $naz = $_POST['naz'];
        $naz = htmlentities($naz);
        #controllo che il nome scelto non sia attualmente in uso
        $checknome = mysql_query("SELECT * FROM personaggi WHERE nome = '$nome'");
        $nom_rows = mysql_num_rows($checknome);
      
            if ( $nom_rows == 1 ) {
                   echo 'Nome in uso';
                   }else{         
                    #controllo il format della mail
                    $email = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$mail);
                        if ( $email == TRUE ) {
                            // checkmail
                            $checkmail = mysql_query("SELECT * FROM personaggi WHERE mail = '$mail'") or die ("Mail  occupata");
                            $num_rows = mysql_num_rows($checkmail);
                                if ( $num_rows == 0 ) {
                                    // controlliamo che le password inserite siano identiche
                                    if ( $pass1 == $pass2 ) {
                                        $pass_sha = sha1($pass1);
                                        mysql_query("INSERT INTO personaggi
                                            (nome, sesso, pass , naz , mail, iscrizione)
                                            VALUES
                                            ('$nome', '$sesso', '$pass_sha', '$naz', '$mail', NOW())") OR DIE(mysql_error());
                                      
                                        // inviamo una mail con la riuscita registazione
                                        mail ($mail, "Registrazione OK", "Complimenti registrazione effettuata con successo. Nome utente: '$nome'. Password: '$pass1'", "From: postmaster@********.com");
                                      
                                        // messaggio da far visualizzare all'utente finale
                                        echo "Complimenti registrazione effettuata con successo<br>Nome utente: $nome. Password: $pass1<br>Ti � stata inviata una mail di riepilogo all'indirizzo $mail";
                                      
                                        header("Location: fineiscrizione.php", true);
                                }
                        }
                }
          
    }
}
mysql_close();
?>
 
Ultima modifica di un moderatore:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.246
324
83
@xone
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
o il tag
per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti

Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
 

Andrea_2017

Nuovo Utente
17 Set 2017
26
0
1
36
Grazie mille Xone!ho risolto con la tua correzione!Ho solo modificato togliendo l'echo e aggiungendo un header cosi che il messaggio venga reindirizzato su una pagina apposita.