JeuWeb - Crée ton jeu par navigateur
[REGLE]Question sur htmlspecialchars - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [REGLE]Question sur htmlspecialchars (/showthread.php?tid=588)

Pages : 1 2


[REGLE]Question sur htmlspecialchars - Archange - 30-12-2006

Bonjour bonjour,

J'ai une petite question sur le htmlspecialchars,
Donc, j'avais zapper qu'il fallait le mettre sur les POST, et enfaite ma question est dois-je mettre htmlspecialchars sur TOUTES mes variables POST ? ( dans les if , les calculs....)

Merci

A oui aussi ,htmlspecialchars ou bien htmlentities ?


RE: Question sur htmlspecialchars - Loetheri - 30-12-2006

Cela dépend ce que tu veux faire.

Tu veux insérer dans une DB ? utilise mysql_escape_real_string()
Tu veux afficher en toute sûreté ? utilise htmlentities()

Sinon dans les autres cas, tu n'as pas besoin. Mais j'ai peut-être oublié.


RE: Question sur htmlspecialchars - zzarbi - 30-12-2006

Oui généralement le htmlentities, tu en as besoin que quand tu veux afficher une variable qui contient du code html...

Pour eviter les hacks il faut utiliser mysql_escape_real_string(), pour le stockage en bdd.


RE: Question sur htmlspecialchars - Aramiil - 30-12-2006

ou si tu veux et sécuriser ton affichage et éviter les hacks, utilise htmlentities() avec le second attribut à ENT_QUOTES. C'est bien sûr un choix dont on peut discuter vu qu'il alourdit légèrement les informations stoquées dans la base de données, en revanche il évite un appel répété à la fonction htmlentities et enlève les risques de piratages puisque les ' et " sont remplacés par leurs équivalents HTML.


RE: Question sur htmlspecialchars - Archange - 30-12-2006

Oué enfaite je veu m'en servir en gros lorsque par exemple on met 15 unité de "truc" en vente ,

Merci de vos réponse, je n'etait pas sur entre htmlspecialchars et htmlentities car j'ai lus que le premier etait moin lourd, mais donc comme vous me dite que l'autre est mieux ...ba je prend l'autre Merci


RE: Question sur htmlspecialchars - Loetheri - 30-12-2006

htmlentities est complètement inutile pour insérer dans une base de données ! Que cela soit avec un argument ou non !

htmlentities est utile pour l'affichage.

Bien entendu, si vous souhaitez surcharger votre base de données, donnez-vous en à coeur joie !


RE: Question sur htmlspecialchars - Maegia - 31-12-2006

Crées-toi une petite fonction, du genre :

function verification($x){
return htmlspecialchars(mysql_escape_real_string(htmlentities($x)));
}

J'ai mis ces fonctions là comme exemple nul, mais bien sûr, tu mets les fonctions que tu veux... Tu passes ensuite chacun de tes POST dans ta fonction de vérification, et voilà.


RE: Question sur htmlspecialchars - Loetheri - 31-12-2006

Faites ce que vous voulez mais mysql_real_escape_string nécessite une connexion à une base MySQL. mysql_escape_string() lui n'en requiert pas.


RE: Question sur htmlspecialchars - Archange - 31-12-2006

Merci de votre aide ba je vai prendre celui ci je pense mysql_escape_real_string()


RE: Question sur htmlspecialchars - Aramiil - 02-01-2007

Loetheri a écrit :htmlentities est complètement inutile pour insérer dans une base de données ! Que cela soit avec un argument ou non !

htmlentities est utile pour l'affichage.

Bien entendu, si vous souhaitez surcharger votre base de données, donnez-vous en à coeur joie !
C'est un peu hors-sujet, mais...

J'aimerais bien un argument là-dessus ? Si ce n'est que pour l'insertion, je suis d'accord, mais je répète mon argument :

page a.php
Code PHP :
<?php

session_start
();

$a = htmlentities($_POST['a'], ENT_QUOTES);

$db = mysql_connect('toto', 'tata', 'titi');
mysql_select_db('tutu', $db);
mysql_query('UPDATE membres SET pseudo = "' . $a . '" WHERE id = ' . $_SESSION['id'], $db);
?>

page b.php
Code PHP :
<?php
session_start
();

$db = mysql_connect('toto', 'tata', 'titi');
mysql_select_db('tutu', $db);
$infos = mysql_query('SELECT pseudo FROM membres WHERE id = ' . $_SESSION['id'], $db);
$joueur = mysql_fetch_row($infos);
echo
$joueur[0];
?>

Dans un cas de ce genre, il est plus efficace d'utiliser htmlentities que mysql_(real)_escape_string. Parce que l'augmentation de taille de la base de données sera imperceptible (un caractère html corresponds à entre 5 et 10 octets au lieu d'un, sur une base de plusieurs mégas, c'est négligeable), et par contre cela va éviter d'appeler la fonction htmlentities à chaque chargement de la seconde page, qui est logiquement plus appellée que la première qui doit surement se situer quelque part à l'inscription ou au changement de profil. Donc gain de performance, et non perte comme ton message semble le suggérer.