[PHP] Controllo nome utente form di registrazione

Andrea_2017

Utente Attivo
17 Set 2017
26
0
1
40
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
 
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:
@xone
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code-gif.6007
o il tag
php-png.6009
per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box-inserisci-2-png-jpg.6008

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
 
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.
 
Ottimo. Per Max, mi scuso, sono stato un bel po' lontano dal forum e mi è davvero sfuggito l'uso del tag codice.
 

Discussioni simili