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_HOST, MYSQL_USER, MYSQL_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_segreta= mysql_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