par
emilie1955 » 09 janv. 2008, 01:05
Un gros merci @rthur pour ta réponse rapide et efficace. J'apprends tranquillement et je me rends compte que j'ai pas fini
J'ai utilisé une petite fonction trouvée sur le net pour empêcher les injections SQL mais je ne suis pas certaine si je l'utilise bien...
voici la dite fonction:
function quote_smart($value)
{
// Stripslashes
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
// Protection si ce n'est pas un entier
if (!is_numeric($value)) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}
et voici 2 requêtes sorties de leur contexte de test; (elles ne sont pas faites de la même façon, ça doit vous sembler un peu bête... je ne sais pas laquelle est la mieux)
// Requête update
$titre = quote_smart($titre);
$mots_cles = quote_smart($mots_cles);
$description = quote_smart($description);
$contenu = quote_smart($contenu);
$urlpage = quote_smart($urlpage);
$id_parent = quote_smart($id_parent);
$success = mysql_query("UPDATE pages SET titre = $titre, mots_cles = $mots_cles, description = $description,
contenu = $contenu, urlpage = $urlpage, id_parent = $id_parent WHERE id_page='$id'")or die ( mysql_error()." IMPOSSIBLE DE MODIFIER CET ENREGISTREMENT");
// requête insertion
$query = sprintf("INSERT into pages (titre,mots_cles,description,contenu,urlpage,id_parent) VALUES (%s, %s, %s, %s, %s, %d)",
quote_smart($_POST['titre']),
quote_smart($_POST['mots_cles']),
quote_smart($_POST['description']),
quote_smart($_POST['contenu']),
quote_smart($_POST['urlpage']),
quote_smart($_POST['id_parent']));
mysql_query($query)
or die (mysql_error() ."<BR>Valeur de ID: $id <BR>REQUÊTE D'INSERTION IMPOSSIBLE");
L'une utilise un
sprintf l'autre pas. C'est vous dire... je ne suis même pas tout à fait à l'aise avec ça... mais il me semble que le sprintf est inutile puisque ça marche et que j'ai protégé ma variable numérique avec
$id=intval($_GET['modify_id']);
comme l'ami invité me le faisait remarquer.
Encore merci
Émilie
Un gros merci @rthur pour ta réponse rapide et efficace. J'apprends tranquillement et je me rends compte que j'ai pas fini :shock:
J'ai utilisé une petite fonction trouvée sur le net pour empêcher les injections SQL mais je ne suis pas certaine si je l'utilise bien...
voici la dite fonction:
[php]function quote_smart($value)
{
// Stripslashes
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
// Protection si ce n'est pas un entier
if (!is_numeric($value)) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}[/php]
et voici 2 requêtes sorties de leur contexte de test; (elles ne sont pas faites de la même façon, ça doit vous sembler un peu bête... je ne sais pas laquelle est la mieux)
[php]
// Requête update
$titre = quote_smart($titre);
$mots_cles = quote_smart($mots_cles);
$description = quote_smart($description);
$contenu = quote_smart($contenu);
$urlpage = quote_smart($urlpage);
$id_parent = quote_smart($id_parent);
$success = mysql_query("UPDATE pages SET titre = $titre, mots_cles = $mots_cles, description = $description,
contenu = $contenu, urlpage = $urlpage, id_parent = $id_parent WHERE id_page='$id'")or die ( mysql_error()." IMPOSSIBLE DE MODIFIER CET ENREGISTREMENT");
// requête insertion
$query = sprintf("INSERT into pages (titre,mots_cles,description,contenu,urlpage,id_parent) VALUES (%s, %s, %s, %s, %s, %d)",
quote_smart($_POST['titre']),
quote_smart($_POST['mots_cles']),
quote_smart($_POST['description']),
quote_smart($_POST['contenu']),
quote_smart($_POST['urlpage']),
quote_smart($_POST['id_parent']));
mysql_query($query)
or die (mysql_error() ."<BR>Valeur de ID: $id <BR>REQUÊTE D'INSERTION IMPOSSIBLE");
[/php]
L'une utilise un [b]sprintf [/b]l'autre pas. C'est vous dire... je ne suis même pas tout à fait à l'aise avec ça... mais il me semble que le sprintf est inutile puisque ça marche et que j'ai protégé ma variable numérique avec
$id=intval($_GET['modify_id']);
comme l'ami invité me le faisait remarquer.
Encore merci
Émilie