problema mysql_real_escape_string

processore

Utente Attivo
11 Ott 2012
51
0
0
salve a tutti.
complimenti per il forum vi seguo sempre anche se e la prima volta che scrivo.

sto cercando creare un modulo di registrazione in php e vorrei evitare problemi di sql injection ecc..
allora ho provato mettere i valori passati tramite post dentro la funzione mysql_real_escape_string ,
pero ho un problema se io stampo con echo il risultato della funzione mysql_real_escape_string, tutto bene.
per esempio se nel form io metto 's' quello che esce dalla funzione mysql_real_escape_string è \'s\' il problema si presenta quando eseguo la query per inserire i dati nel db.
perche nel db mi salva 's', e poi se provo a fare login posso fare login con nome utente 's' .

cosa sbaglio ??



il mio codice e questo.

PHP:
<?php
    if (!$_POST['nome'] || !$_POST['cognome'] || !$_POST['indirizzo'] || !$_POST['cap'] || !$_POST['citta'] || !$_POST['email'] || !$_POST['tel'] || !$_POST['username'] || !$_POST['pass1'] || !$_POST['pass2'] || !$_POST['risposta'] ) {
        die(header("Refresh: 0; registrazione.php?err=4"));
    }
	
	//strip_tags rimuove i tag HTML e PHP presenti in una stringa
	 $_POST['nome'] = strip_tags($_POST['nome']);
	 $_POST['cognome'] = strip_tags($_POST['cognome']);
	 $_POST['indirizzo'] = strip_tags($_POST['indirizzo']);
	 $_POST['cap'] = strip_tags($_POST['cap']);
	 $_POST['citta'] = strip_tags($_POST['citta']);
	 $_POST['email'] = strip_tags($_POST['email']);
	 $_POST['tel'] = strip_tags($_POST['tel']);
	 $_POST['username'] = strip_tags($_POST['username']);
	 $_POST['pass1'] = strip_tags($_POST['pass1']);

	 $_POST['risposta'] = strip_tags($_POST['risposta']);
	
$paese=	mysql_real_escape_string($_POST['paese']);	
$nome=mysql_real_escape_string($_POST['nome']);
$cognome=mysql_real_escape_string ($_POST['cognome']);
$indirizzo=mysql_real_escape_string ($_POST['indirizzo']);
$cap=mysql_real_escape_string ($_POST['cap']) ;
$citta=mysql_real_escape_string ($_POST['citta']) ;
$provincia=mysql_real_escape_string ($_POST['provincia']) ;
$mail=mysql_real_escape_string ($_POST['email']) ;
$tel=mysql_real_escape_string ($_POST['tel']);
$utente=mysql_real_escape_string ($_POST['username']) ;
$pass=mysql_real_escape_string ($_POST['pass1']);
$domanda=mysql_real_escape_string ($_POST['domanda']);
$risposta=mysql_real_escape_string ($_POST['risposta']);
	
	
	 $qry = "SELECT utente, email FROM utenti WHERE utente = '".$utente."' or email='".$mail."'";
	$result = mysql_query($qry) or die("Errore nella query". $qry . "\n" . mysql_error());
  

    $name_checkk = mysql_num_rows($result);
	
	 if ($name_checkk != 0) {
        die(header("Refresh: 0; registrazione.php?err=2"));
    }
	
	if ($_POST['pass1'] != $_POST['pass2']) {
        die(header("Refresh: 0; registrazione.php?err=3"));
    }
	
	if (!preg_match("/.*@.*..*/", $_POST['email']) ||
         preg_match("/(<|>)/", $_POST['email'])) {
        die('indirizzo mail non valido.');
    }

$Sql="INSERT INTO utenti SET paese = '$paese',nome = '$nome', cognome='$cognome', indirizzo='$indirizzo',  cap = '$cap', citta = '$citta',provincia = '$provincia',telefono = '$tel', email = '$mail',  utente = '$utente',password = '$pass',domanda = '$domanda',risposta = '$risposta',  admin = 0, stato = 0";
	

$Query = mysql_query($Sql, $conn)
			
	or die("Registrazione fallita o email già* presente");		
	
	header('Location:index.php');	

?>
 
Ultima modifica di un moderatore:
ciao,
io non ho capito molto bene...
perche nel db mi salva 's', e poi se provo a fare login posso fare login con nome utente 's' .
qual'è il problema?
al massimo puoi fare un controllo per evitare che mettano gli apici nella username
 

Discussioni simili