Page 1 sur 1
addslashes, htmlspecialchars, htmlentities, que choisir ?
Posté : 08 févr. 2006, 18:38
par VaN
Hello,
j'aimerais pouvoir echapper mes " et ' pour rentrer des données contenants ces caractères dans une base de données. Mais entre toutes ces fonctions, je m'y perds.
Laquelle vaut-il mieux utiliser ?
Quelles sont leurs avantages et leurs defauts ?
PS : cette base de données me sert pour un forum, peut-etre cela a t'il une importance dans le choix de la fonction.
Posté : 08 févr. 2006, 18:46
par mario
chaque fonction précisée dans le titre a une action différente.
Pour en connaître quelques unes,
http://phpdebutant.org/article61.php
dans ton cas, l'utilisation de addslashes() est utile.
Posté : 08 févr. 2006, 19:03
par VaN
petit probleme. je rajoute des addslashes() un peu partout autour des mes données. Helas, j'ai un module qui permet de faire une prévisualisation de son message sur mon forum, et pour cela, je passe le contenu posté dans un INPUT HIDDEN, et là, le addslashes() ne marche pas, le value="" se ferme meme si il y'a un \ pour echapper un " .
Alors je ne sais pas trop comment faire. Dois-je utiliser htmlentities() pour le input hidden ? Que je repasserai ensuite avec des " normal, pour lui appliquer un addslashes()

?
Posté : 08 févr. 2006, 19:07
par jeff
un module qui permet de faire une prévisualisation de son
et alors ca ne pose pas de probleme vu que c'est pas la previsualisation que tu enregistre ??
il faut juste que tu evite les injections => mysql_real_escape_string et que evite les attaque avec js
de plus verifie tu l'activation des magic quote??(voir tuto)
Posté : 08 févr. 2006, 19:13
par VaN
C'est a dire que pour simplifier la vie a l'utilisateur, si il previsualise son message, j'affiche egalement un bouton submit juste en dessous, pour lui eviter de descendre la page pour poster le FORM (en gros, comme phpBB). et si il clique sur ce SUBMIT, ça envoie les données passées en HIDDEN.
Posté : 08 févr. 2006, 19:19
par VaN
Je me renseigne petit a petit sur les injections SQL egalement. mais en quoi est ce important de proteger ces requetes, alors qu'elle ne sont pas en rapport avec l'authentification de l'utilisateur ?
et je crois utiliser une methode qui ne permette pas les injections SQL :
$user_login = $_POST['user_login'];
$user_pass = $_POST['user_pass'];
$sql = "SELECT user_id, user_pass, user_level
FROM frm_users
WHERE user_login = '".$user_login."'";
$query = mysql_query($sql);
$result = mysql_fetch_array($query);
if($result['user_pass'] == md5($user_pass))
{
}
En effet, je fais mon test en php, je ne vais pas chercher un couple login/pass dans la bdd. Cette methode est sécurisée non ?
Posté : 09 févr. 2006, 15:38
par VaN
Je me permets de remonter le topic pour comprendre où je dois eviter les injections SQL.
Est ce que je dois utiliser mysql_real_escape_string() sur chacune de mes requetes ?