Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Bonjour, je suis nouvelle sur le forum. Je poste rarement sur les forums mais j'ai cherché partout une solution à mon problème en vain... Je suis débutante en php
J'avais fait un petit programme pour un livre d'or amélioré pour mon site avec la connexion mysql_connect. J'ai ensuite changé le type de connexion pour utiliser PDO. Cependant pour sécuriser mon formulaire je récupérais les infos avec des variables POST précédées de mysql_real_escape_string et htmlentities. On m'a dit que tout ce qui est mysql.... ne fonctionnait plus avec les connection PDO et on m'a conseillé d'utiliser PDO::quote sauf que ça ne marche pas. Par exemple pour récupérer ce qui est rentré dans le champ mot de passe, ça semble le transformer puisque ça rend tous les mots de passe faux, même s'il est correct. Ce qui n'arrive pas si j'enlève la ligne en question.
Je voulais sécuriser tous les champs accessibles à l'utilisateur mais je ne sais plus quelle fonction utiliser. Comment faire??
Ensuite concernant PDO je voulais savoir si on fait une connexion persistante et qu'on met $connexion=null à la fin de la page, est ce que ça ferme complètement la connexion ou est ce que ça la met juste proprement en stand by?
Je vous mets l'extrait de code concernant le mot de passe (mais sur les autres pages il y a d'autres endroits où il y a d'autres champs) :
else
{
$motPasse=htmlentities($_POST['motPasse']);
$motPasse=$connexion->quote($motPasse);
// on vide la 1ère variable du champ texte
unset($_POST['motPasse']);
//on récupère le vrai mot de passe dans la base de données
$req=$connexion->query('select passe from moderation') or die(mysql_error());
$result=$req->fetch(PDO::FETCH_ASSOC);
//on le stocke dans variable $passeVrai
$passeVrai=$result['passe'];
if($motPasse==$passeVrai)
{
header("Location: moderation2PDO.php");
exit;
}
else
{
$page_html.='Ce mot de passe n\'est pas valable';
}
}Hors ligne
Utilise les "prepares statements" ca règles ton problème. htmlentities c'est juste a l'affichage.
Hors ligne
Ah oui les requêtes préparées. Est ce que ce n'est pas gênant si c'est une requête qui va être demandée qu'une seule fois?
Et pour les champs de formulaire qu'on va récupérer sans effectuer de requête après, on n'a pas besoin de protection particulière? Avant je mettais mysql_real_escape_string sur ce que je récupérais d'un formulaire même si je n'utilisais pas l'info pour une requête. Mais peut-être que c'était inutile et que je n'avais pas compris.
Hors ligne
Non, cette protection doit être faite que vers la BD, imagine que tu les utilises dans un autre type de BD ou LDAP, ou même vers du HTML, c'est pas très efficaces.
Hors ligne
D'accord. Merci beaucoup pour ces infos.
Hors ligne