ma i controlli li ho fatti, solo che venivano prima, non aveva senso metterli nel post:

Codice PHP:
 require 'log_db.php';
 
$db mysql_connect (MYSQL_HOSTMYSQL_USERMYSQL_PASSWORD) or die ('we have same problem with our database, check later!');
 
mysql_select_db (MYSQL_DB$db) or die (mysql_error ($db)); 
 
$errore = array(); 
 
$nome = isset($_POST['name']) ? trim ($_POST['name']) : ''; if (empty ($nome)) {$errore[] = urlencode ('forgot to type your name!');} 
 
$cognome = isset($_POST['surname']) ? trim($_POST['surname']) : ''; if (empty ($cognome)) {$errore[] = urlencode('forgot to type you surname!');}
 
$username = isset($_POST['username']) ? trim($_POST['username']) : ''; if (empty ($username)) {$errore[] = urlencode('forgot to type your username');} 
 
$query 'SELECT username FROM users WHERE username = "' $_POST['username'] .'"'$result mysql_query ($query$db) or die (mysql_error()); 
if (
mysql_num_rows($result) > 0)
$errore[] = urlencode('username already in use!');} 
$query 'SELECT email FROM users WHERE email = "' $_POST['email'] .'"'$result mysql_query ($query$db) or die (mysql_error()); 
if (
mysql_num_rows($result) > 0
$errore[] = urlencode('email already in use!');}  
$password = isset($_POST['password']) ? trim($_POST['password']) : ''; if (empty ($password)) {$errore[] = urlencode('forgot to type your password!');} 
 if (
$_POST['password'] != $_POST['password2']) {$errore[] = urlencode('the passwords are not the same!');}  
$conta_password strlen ($_POST['password']);
 if ( 
$conta_password 7) {$errore[] = urlencode('type a password whit 7 words or more!');} 
 
$mail = isset($_POST['email']) ? trim($_POST['email']) : ''; if (empty ($mail)) {$errore[] = urlencode('forgot to type your mail!');}  
$chiocciola count(explode'@'$_POST['email'] )) - 1;     
if(
$chiocciola != 1
 {
$errore[] = urlencode('you did not insert an at!(@)');}       
if(
strpos($_POST['email'],';') || strpos($_POST['email'],',') || strpos($_POST['email'],' '))
 { {
$errore[] = urlencode('your email is not correct');}     }      
if(!
preg_match'/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/'$_POST['email'])) { $errore[] = urlencode('your email is not correct');     } 
$carta $_POST['num_carta']; 
if (!
is_numeric($carta)) { $errore[] = urlencode('insert a valid number of card!');     } 
$query 'SELECT email FROM users WHERE email = "' $_POST['mail'] .'"'$result mysql_query ($query$db) or die (mysql_error());
 if (
mysql_num_rows($result) > 0) { $errore[] = urlencode('email already in use!');} 
 
$domanda = isset($_POST['domanda']) ? trim ($_POST['domanda']) : ''; if (empty ($nome)) {$errore[] = urlencode ('type a security question!');} 
 
$risposta = isset($_POST['risposta']) ? trim ($_POST['risposta']) : ''; if (empty ($nome)) {$errore[] = urlencode ('type an answer to your security question!');} 
 
$num_carta = isset($_POST['num_carta']) ? trim ($_POST['num_carta']) : ''; if (empty ($nome)) {$errore[] = urlencode ('insert a valid number for your credit card!');} 
$conta_password_carta strlen ($_POST['num_carta']);  
if ( 
$conta_password_carta 16
{
$errore[] = urlencode('insert a valid number for your credit card!.');}  
if (empty (
$errore)) { 
parto con le istruzioni.

dopo aver scritto il post ho aggiornato anche le varie variabili con l'escape_string così:

Codice PHP:
if 
(empty (
$errore))
 { 
$password md5($_POST['password']);
$var md5(rand()); 
$name mysql_real_escape_string($_POST['name']); 
$surname mysql_real_escape_string($_POST['surname']); 
$username mysql_real_escape_string($_POST['username']); 
$domanda_segretamysql_real_escape_string($_POST['domanda_segreta']); 
$risposta mysql_real_escape_string($_POST['risposta']); 
$carta mysql_real_escape_string($_POST['carta']); 
$email mysql_real_escape_string($_POST['email']);  
$query 'INSERT INTO users (nome, cognome, username, password, verifica, domanda, risposta, numero_carta, carta, email)  VALUES  ("' $name '",  "' $surname '",  "' $username '",  "' $password '",  "' $var '",  "' $domanda_segreta '",  "' $risposta '",  "' $carta '",  "' $carta '",  "' $email '")';  mysql_query($query,$db) or die (mysql_error($db)); 
non mi sembra di aver lasciato tutto al caso :S
ora do un'occhiata al manuale comunque non avevo visto esistesse la sezione sulle injection grazie se ci sono altre opzioni importati che ho scordato fammele notare