ciao
intanto ho visto dal tuo ultimo screen che non hai messo il campo id autoincrement primary key.
poi prova a fare la insert con dei valori direttamente da phpmyadmin
ciao
non so sul tuo phpmyadmin, ma generalmente a dx c'è un'iconcina con una chiave e sotto il pulsante di selezione.
non si se rieci a vedere (freccia rossa)
Se levo questo non li scrive all'interno della tabella, se lo metto li scrive!
Perché? Io dopo che gli utenti si sono registrati in questa pagina vorrei reindirizzarli in un'altra in modo diretto!
PS: Inoltre una volta inseriti i dati oltre a scrivere "Registrazione avvenuta con successo" mi scrive pure i dati inseriti, perché?
la pagina come si chiama?
se si chiama index.php
scrivere
1) <form method="post" action="index.php">
oppure
2) <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
è la stessa cosa, ma se la pagina si chiama in modo diverso (si fa per dire pinco.php)
la 1) ti manda alla pag index.php dove non c'e (credo) lo script per l'inserimento
la 2) indipendentemente da come si chiami ti manda alla pag stessa dove c'è lo script per l'inserimento
per riinviare dopo la registrazione alla pag che vuoi potresti usare
Sulla base del consiglio di alcuni ho sistemato la registrazione aggiungendo questi campi:
PHP:
// Controlla che i campi siano stati riempiti tutti
if (empty($user)) { echo "Non hai inserito l'username!"; goto a; }
elseif (empty($mail)) { echo "Non hai inserito l'email!"; goto a; }
elseif (empty($pass)) { echo "Non hai inserito la password!"; goto a; }
// Controlla la presenza della @ sull'email
if (!ereg("@",$mail)) { echo "L'email inserità non è valida!"; goto a; }
// Controlla se l'user è già presente
$Username= "SELECT Count( * ) AS Conta FROM utenti WHERE username = '$_POST[user]'";
$raw = mysql_query($Username);
$row = mysql_fetch_array($raw);
if($row[Conta]>0 )
{echo "Username gia esistente"; goto a;}
// Controlla se l'email è già presente
$Email= "SELECT Count( * ) Conta1 FROM utenti WHERE mail = '$_POST[email]'";
$raws = mysql_query($Email);
$rows = mysql_fetch_array($raws);
if($rows[Conta1]>0 )
{echo "Email gia esistente"; goto a;}
// Controlla la lunghezza della password
$Password = 6;
if(strlen($_POST['pass'])<$Password)
{ echo "La password scelta è troppo corta"; goto a; }
Funziona tutto correttamente, tranne la visualizzazione di un errore per Conta ma che non da nessun problema allo script, secondo voi dovrei aggiungere qualcos'altro?
<?php
// Controlla che i campi siano stati riempiti tutti
//l'addslashes ti da un minimo di sicurezza
if (empty($_POST['user'])) { echo "Non hai inserito l'username!"; goto a; }else{$user=addslashes($_POST['user']);}
elseif (empty($_POST['email'])) { echo "Non hai inserito l'email!"; goto a; }else{$mail=addslashes($_POST['email']);}
elseif (empty($_POST['pass'])) { echo "Non hai inserito la password!"; goto a; }else{$pass=addslashes($_POST['pass']);}
// USA QUESTO (tra l'altro eregi è deprecato si deve usare pre_match)
if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) { echo "L'email inserità non è valida!"; goto a; }
// Controlla se l'user è già presente
$Username= "SELECT * FROM utenti WHERE username = '$user'";
$raw = mysql_query($Username);
//$row = mysql_fetch_array($raw);
if(mysql_num_rows($raw)>0 )
{echo "Username gia esistente"; goto a;}
// Controlla se l'email è già presente
$Email= "SELECT * FROM utenti WHERE mail = '$mail'";
$raws = mysql_query($Email);
//$rows = mysql_fetch_array($raws);
if(mysql_num_rows($raws)>0 )
{echo "Email gia esistente"; goto a;}
// Controlla la lunghezza della password
//qui ti converrebbe usare preg_match per verificare i caratteri
$Password = 6;//e se uno scrivesse una pass di 100 caratteri?
if(strlen($pass)<$Password)
{ echo "La password scelta è troppo corta"; goto a; }
?>
poi perchè usi il goto? mi sembra di essere ritornato al 1980
comunque andrebbe rivisto un pochettino il tutto
p.s.
non usare le maiuscole per i nomi delle variabili e/o campi: sono solo sorgente di errore