Controllo registrazioni PHP Mysql

  • Creatore Discussione Creatore Discussione Fede72
  • Data di inizio Data di inizio

Fede72

Nuovo Utente
27 Gen 2016
20
2
3
Ciao a tutti,
ho creato una pagina di registrazione con inserimento dati in un DB, se la mail risulta già presente i campi compilati non devono essere inseriti,
purtroppo però il sistema non sta verificando e anche se utilizzo una mail già presente la registrazione va avanti, sapreste dirmi dove sta l'errore?

Di seguito il codice:

$query = "SELECT email FROM users WHERE email = '$email'";
$risultato = mysql_query($query, $db);
$num = mysql_num_rows ($risultato);
if($num === NULL){
header("Location: index.php");
}else{print "$email risulta presente per iscriverti utilizza un nuovo indirizzo o accedi con le tue credenziali";
die;
}
if(mysql_query("INSERT INTO users(username,email,password) VALUES('$uname','$email','$upass')"))
 
Ciao prova
PHP:
<?php
    include ("connect.php");
    $query = "SELECT email FROM login WHERE email = '$email'";
    $risultato = mysqli_query($conn, $query);
    $num = mysqli_num_rows ($risultato);
   
    if($num >= 1){
header("Location: index.php");
        echo $email." risulta presente per iscriverti utilizza un nuovo indirizzo o accedi con le tue credenziali";
    }
    else{
        mysqli_query($conn, "INSERT INTO users (username,email,password) VALUES ('$uname','$email','$upass')");
        echo"Creato";
    }
?>

Meglio utilizzare mysqli e non mysql
 
Ciao Bubino 8,
intanto ti ringrazio per la risposta,
ho provato i tuoi suggerimenti ma mettendo >=1 mi dice che l'utenza già esiste anche se non è vero,
volevo chiederti come mai mi suggerisci di utilizzare mysqli anziché mysql? (pura curiosità)
 
ho provato a mettere un echo sul $num ed in effetti il risultato è 0 o 1, il problema però è che indipendentemente dal risultato mi inserisce il campo nel db, il risultato del conteggio è un testo o un numero? magari è quello il problema
 
Ciao
mysql è ormai vecchio ed è consigliato usare mysqli.

Comunque a me funziona correttamente la parte che ti ho mandato, probabilmente proprio per la diversa connessione al DB.

index.php
PHP:
<?php
    include ("connect.php");
    $query = "SELECT email FROM login WHERE email = '$email'";
    $risultato = mysqli_query($conn, $query);
    $num = mysqli_num_rows ($risultato);
    
    if($num >= 1){
        echo $email." risulta presente per iscriverti utilizza un nuovo indirizzo o accedi con le tue credenziali";
    }
    else{
        mysqli_query($conn, "INSERT INTO users (username,email,password) VALUES ('$uname','$email','$upass')");
        echo"Creato";
    }
?>
connect.php
PHP:
<?php
    $db_host = "localhost";
    $db_user = "";
    $db_pass = "";
    $db_name = "";
    $conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name) or die("db connect error: ".mysqli_error());
?>

Con la creazione di query mysqli la sintassi sarà leggermente diversa es.:
PHP:
mysqli_query($conn, "INSERT INTO users (username,email,password) VALUES ('$uname','$email','$upass')");
oppure

PHP:
$newquery = "INSERT INTO users (username,email,password) VALUES ('$uname','$email','$upass')";
mysqli_query($conn, $newquery);

Fai qualche test e scrivimi eventuali errori, che vediamo di risolvere
 

Discussioni simili