Come spiegato qui:mysql_real_escape_string() protegge COMPLETAMENTE dall'iniezione SQL?
In base allo snippet di codice, hai connesso il database due volte.
$db_con=mysql_connect($db_host,$username,$password);
$connection_string=mysql_select_db($db_name);
mysql_connect($db_host,$username,$password);
mysql_set_charset('utf8',$db_con);
E non hai fornito l'identificatore del collegamento al database per :
$email= mysql_real_escape_string($_POST['email']);
$name= mysql_real_escape_string($_POST['name']);
$sex= mysql_real_escape_string($_POST['sex']);
Pertanto, mysql_set_charset non ha alcun effetto sull'escape reale fornito$_POST
per caratteri multibyte.
Suggerimento
- rimuove il secondo
mysql_connect($db_host,$username,$password);
- aggiungi esplicitamente
$db_con
quando si eseguemysql_real_escape_string