VERIFICARE SE UN UTENTE E' GIA PRESENTE NEL DB

di Anonimizzato30584 il
7 risposte
Salve ragazzi, ho bisogno di un piccolo aiuto per un form di registazione. Ho già effettuato tutte le procedure per la connessione al database e la registrazione di un nuovo utente(effettuando anche il controllo che tutti i campi non fossero vuoti). Il problema ora è che devo controllare che alla registrazione di un nuovo utente, non sia già presente nel database(questo controllo deve essere effettuato sulla email in quanto per il login ho impostato solo email e password senza username). Ecco il codice che ho scritto fin'ora(ve lo posto senza html):


<?php

$connessione = mysqli_connect('localhost', 'root', '', 'contatti');

if($connessione) {
    echo 'Sei connesso!';
}
?>

<?php
$avviso = "";

if(isset($_POST['registrati'])) {
    $nome = $_POST['nome'];
    $cognome = $_POST['cognome'];
    $codice_fiscale = $_POST['codice_fiscale'];
    $email = $_POST['email'];
    $password = $_POST['password'];
    $numero = $_POST['numero'];
    

    if(!empty($nome) && !empty($cognome) && !empty($codice_fiscale) && !empty($email) && !empty($password) && !empty($numero)) {
        $query = "INSERT INTO utenti(nome, cognome, codice_fiscale, email, password, numero) VALUES ('{$nome}' , '{$cognome}', '{$codice_fiscale}', '{$email}', '{$password}', '{$numero}')";

    
        $creaUtenti = mysqli_query($connessione, $query);

        if(!$creaUtenti) {
            die('Query fallita' . mysqli_error($connessione));
        }
        
        $avviso = "Dati registrati con successo";
        echo $avviso;
    }
     else {
        $avviso = "I campi non devono essere vuoti!";
        echo $avviso;
    }
} 

?>

7 Risposte

  • Ciao,
    puoi fare una select con una where confronti l'email e controlli se ci sono righe. Se si l'utente esiste.

    Ciao
  • Non ci riesco...potrei avere un piccolo aiutino con il codice ve ne sarei infinitamente grato
  • Ciao,
    un modo semplice può essere il seguente:
    
    
    $mysqli = new mysqli("localhost", "my_user", "my_password", "DB");
    
    $query_check_user = "SELECT * FROM tua_tabella WHERE campo_mail='".trim($_POST['email'])."'";
    
    $result = $mysqli->query($query_check_user);
    
    $num_row = mysqli_num_rows($result);
    
    if ($num_row>0){
    echo 'Utente registrato!';
    }
    
    
    Ti ho diviso tutti i passaggi... così ti è più semplice.

    Puoi utilizzare PDO invece di mysqli.

    Ciao
  • Mi da questo errore

    Fatal error: Uncaught TypeError: mysqli_num_rows(): Argument #1 ($result) must be of type mysqli_result, bool given in C:\xampp\htdocs\PAOLO_VILLANI\info_prenotazioni.php:27 Stack trace: #0 C:\xampp\htdocs\PAOLO_VILLANI\info_prenotazioni.php(27): mysqli_num_rows(false) #1 {main} thrown in C:\xampp\htdocs\PAOLO_VILLANI\info_prenotazioni.php on line 27
  • Sorry... errore mio!

    Ti dice che il valore è di tipo booleano!

    Quindi modifica così:
    
    
    if ($num_row){
    echo 'Utente registrato!';
    }
    
    
    O:
    
    
    if ($num_row===true){
    echo 'Utente registrato!';
    }
    
    
    Non cambia nulla! Esegue la condizione se è vera!

    Ciao
  • Puoi anche settare come chiave della tabella utenti la mail. In questo modo il DB non accetta records con mail già esistente. e nel caso restituisce un errore che devi intercettare.
  • In ogni caso attenzione alla sensibilita al case

    Inoltre è una voragine di sicurezza mostruosa quel modo di compilare i comandi sql
Devi accedere o registrarti per scrivere nel forum
7 risposte