Ciao a tutti;
sto usando PDO da qualche giorno... le connessioni funzionano, ma non mi è chiaro come viene gestito l'escape dei caratteri...
Al di la del controllo sugli altri caratteri particolari che ho omesso, se ad esempio come username inserisco u'tente, mi restituisce il messaggio "registrazione effettuata!" ma di fatto non crea nessun nuovo record nel db; se scrivo "utente" tutto funziona ovviamente...Codice PHP:
include ("connessionePDO.php");
$loginform = ($_POST["login"]);
$passwordform = ($_POST["password"]);
$emailform = ($_POST["email"]);
$sql = $db->prepare("SELECT * FROM utenti WHERE login = :login");
$sql->execute(array(":login"=>$loginform));
$sql2 = $db->prepare("SELECT * FROM utenti WHERE email = :password");
$sql2->execute(array(":password"=>$emailform));
if ($res = $sql->fetchAll()) {
echo "Username già utilizzato";
}elseif ($res2 = $sql2->fetchAll()) {
echo "Email già registrata";
}else{
$securpassword = sha1($passwordform);
$sql = $db->prepare("INSERT INTO utenti(login,password,email) VALUES('$loginform','$securpassword','$emailform')");
$sql->execute();
echo "Registrazione effettuata!!!";
}
Mi era stato spiegato che l'utilizzo dei segnaposti :loginassword e dell'istruzione "prepare" avrebbero gestito in automatico l'escape facendo in pratica ciò che faceva myslq_real_escape_string .... ma qualcosa non quadra :-s