Ciao a tutti,
un grazie in anticipo a tutti quelli che interverranno, premetto anche che ho cercato in lungo e in largo e più volte mi sono imbattuto in questo forum, ma qui mi ci serve una mano
Praticamente sto imparando pian pianino a scrivere qualche semplice pagina PHP per conto mio, più che sfizio che per altro.
Il problema è il seguente, ho una pagina che è il mio index con 3 form da riempire ed un tasto invia che manda i dati tramite "post" alla pagina "create_user.php".
Quando però cerco di dire a PHP di controllare se all' interno del DB (mysql) esista un utente con lo stesso nome e quindi blocchi la registrazione lui lo fa ed anche bene, però se provo ad inserire un nome utente che non esiste all' interno della tabella lui lo blocca lo stesso, ecco il codice della pagina create_user.php:
Codice PHP:
<?php
session_start();
$uname = isset($_POST['username']) ? $_POST['username'] : '';
$pw1 = isset($_POST['password1']) ? $_POST['password1'] : '';
$pw2 = isset($_POST['password2']) ? $_POST['password2'] : '';
$email = isset($_POST['emailaddr']) ? $_POST['emailaddr'] : '';
if ($uname == '' or $email == '' or $pw1 == '' or $pw2 == '')
{
echo "I dati sono obbligatori";
exit;
}
elseif
(!ereg("^([a-zA-Z]{3})([a-zA-Z0-9_]*)$", $uname))
{
echo "Non sono ammessi caratteri speciali";
exit;
}
elseif
($pw1 != $pw2)
{
echo "Le password non sono le stesse";
exit;
}
elseif (strlen($pw1) < 5)
{
echo "La password deve contenere da 5 a 12 caratteri!";
exit;
}
$conn = mysqli_connect("127.0.0.1", "root", "root", "obiettivo");
if (!$conn)
{
echo ('Non posso connettermi al server in questo momento.');
}
$uname = mysqli_real_escape_string ($conn, $uname);
$email = mysqli_real_escape_string ($conn, $email);
$pw1 = md5($pw1);
$sqlquery = <<<EOQUERY
SELECT user_name FROM users WHERE user_name = '$uname'
EOQUERY;
$result = @$conn->query($sqlquery);
if ($result != FALSE)
{
echo "L'utente esiste già";
exit;
}
$qstr = <<<EOQUERY
INSERT INTO users
(user_name, password, user_email) VALUES ('$uname', '$pw1', '$email')
EOQUERY;
$results = @$conn->query($qstr);
if ($results === FALSE or $results === NULL)
{
echo "Ci sono stati dei problemi";
}
else
{
echo "Utente creato con successo";
}
?>
È da oggi pomeriggio alle 15 che ci sbatto la testa e non riesco a venirne a capo, inoltre se trovate qualche "stupro per gli occhi" di come è scritto il codice non preoccupatevi a farmelo sapere.
Ad esempio tutti quegli "exit" li ho inserito perché se non ci sono comunque i dati anche se incorretti o vuoti entrano nella tabella, così facendo ho visto che il ciclo si blocca.
Avevo provato anche la funzione break ma dava sempre un Fatal Error.
Saluti!