|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Inscrit
Inscription : juin 2006 Messages : 531 ![]() |
Bonjour,
J'ai un problème avec l'utilisation de mysql_real_escape_string sur un tableau expédié via $_POST[]. C'est simple, j'ai plusieurs checkbox : Code :
<input type="checkbox" name="supprimer[]" value="'.$R[id].'"> Donc je fais ça : Code :
Code :
Code :
Alors comment puis-je faire ici svp ? |
||||||
|
|
00
|
|
|
#2 | |
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
Citation:
par exemple Code :
$tab = array_map('mysql_real_escape_string', $_POST['supprimer']);
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|
|
00
|
|
|
#3 | ||||
|
Inscrit
Inscription : juin 2006 Messages : 531 ![]() |
Oui je mettais dis, qu'il fallait utiliser une boucle.
Que penses-tu de ça, Wamania : Code :
Code :
Et d'ailleurs, ces deux possibilités sont-elles bonnes ? (sachant que le contenu de $_POST['supprimer'] est une suite d'entier numérique. |
||||
|
|
00
|
|
|
#4 | ||
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
Les deux sont bons.
Array_map renvoie déjà un tableau, c'est pour ça qu'on n'a pas besoin des [] si tu fait pleins de fonctions sur tes entrées, préfére la boucle, sinon, le array_map est plus propre je trouve. A savoir, le array_map peut prendre des fonctions définis soit même Code :
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
||
|
00
|
|
|
#5 | ||
|
Inscrit
Inscription : juin 2006 Messages : 531 ![]() |
Et ça alors :
Code :
|
||
|
|
00
|
|
|
#6 |
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
Si tu sais que tu n'attend que des nombres entier, alors oui, c'est encore mieux.
le htmlspecialchars permet de se protéger contre les XSS (Cross site scripting) en encodant les < et > (entre autres) éventuellement présents. Si tu fais en sorte que seul les nombres peuvent passé, alors plus de soucis de <, de > de quote ', etc... Mais plutot que d'appliquer intval, qui risque de te retourner des false que tu insérerait dans ta bdd, je crois qu'il vaut mieux ici faire une boucle pour vérifier si chaque élément du tableau est bien un int, sinon, tu stoppes ou tu enlèves l'élément.
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|
00
|
|
|
#7 | ||||
|
Inscrit
Inscription : juin 2006 Messages : 531 ![]() |
Mouaif, ça m'embrouille pas mal tout ça.
Je préfèrerai tester la valeur de $_POST['supprimer'] et effectuer ou non la requête vue ci-dessus. Donc je viens de faire ça : Code :
Code :
|
||||
|
|
00
|
|
|
#8 | ||
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
une boucle ^^
Mais ton regexp est inutile, utilise une fonction comme intval ou is_numeric (que je préfère). Ce que je disais, ce n'était pas de pas utiliser intval, mais plutôt de ne pas utiliser une valeur pour laquelle intval te renverrais false. exemple : ton $_POST est $_POST['supprimer'][0] = 5; $_POST['supprimer'][1] = 'attack'; $_POST['supprimer'][2] = 6; alors intval($_POST['supprimer'][1]) renverrais false. mais $_POST['supprimer'][1] existera toujours puisque tu ne l'a pas effacé. Il n'est pas bon, il faut le virais. Je ferais Code :
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com