Bonjour,

J'utilise pour la première fois PDO.
J'ai compris que les requêtes préparées sécurisées des injections SQL.

j'utilise le code suivant pour modifier un mot de passe d'un utilisateur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
try{
$DB = new PDO('pgsql:host=localhost;dbname=local', 'postgresSQL', 'password');
//afficher les erreurs car PDO n'affiche pas les erreurs par défaut 
$DB->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e){
echo 'La base de donn&eacute;es n\'est pas disponible pour le moment.<br/>';
}
 
$sql='update administration set mdp=:mdp where login=:login';
				$req=$DB->prepare($sql);
				$req->execute(array( 'login' => $_SESSION['login'], 'mdp' => $_POST['nouveau_mdp'] ));
				$retour=$req->fetch(PDO::FETCH_ASSOC);
				echo('Modification du mot de passe effectuée<br/>');
J'ai 2 questions:
1 Le code est-il sécurisé (passer des _SESSION ou $_POST en variable à la reqête préparée ne pose pas problème)?

2 Si je mets via un formulaire le mot de passe : "l'arc" je m'attendais à voir dans la base "l\'arc" et que le ' soit échappé par PDO. Or dans la base je vois "l'arc". Est-ce normal ?

Merci