8792 sujets
Le mieux est de faire différemment, genre en utilisant une class qui wrappe $_POST. Parce que extraire ne changerait rien, il faudrait quand-même tester si une valeur est présente. Genre les input de type checkbox n'apparaissent pas dans $_POST si pas coché, donc même en extrayant, il faudrait tester l'existence.
register_globals = off; ? Les nombreuses mises en garde sont claires, un chaton est tué à chaque fois qu'un script utilise cette directive, c'est le mal, etc
Il y a tellement de tests à faire sur l'existence et l'origine des variables que c'est le paradis des hackers même mauvais ...
Regarde plutôt du côté (exemple) d'un des scripts qui valide les commentaires de la doc° de PHP: http://usphp.com/source.php?url=/manual/add-note.php
Il y a tellement de tests à faire sur l'existence et l'origine des variables que c'est le paradis des hackers même mauvais ...
Regarde plutôt du côté (exemple) d'un des scripts qui valide les commentaires de la doc° de PHP: http://usphp.com/source.php?url=/manual/add-note.php
// Decide on whether all vars are present for processing
$process = TRUE;
$needed_vars = array('note', 'user', 'sect', 'redirect', 'action', 'func', 'arga', 'argb', 'answer');
foreach ($needed_vars as $varname) {
if (empty($_POST[$varname])) {
$process = FALSE;
break;
}
}
// We have a submitted form to process
if ($process) {
//(... plein d'opérations que l'on peut réunir dans une ou plusieurs fonctions et que l'on applique à chacun des éléments de $needed_vars)
}
attention à l'injection... en plus de tester l'existence d'une variable, il est encore plus important de connaitre au maximum ce que doit contenir une variable et in extenso ce qu'une variable ne doit pas contenir. ainsi on peut éviter certaines failles se basant sur de l'injection de données...
Modifié par Jeff-com (21 Jan 2007 - 19:12)
Modifié par Jeff-com (21 Jan 2007 - 19:12)
AFfolant pourquoi ?
Personnellement je n'utilise pas ce code, si ça peut vous rassurer... en général quand je contrôle des variables de formulaire ça ressemble à :
Personnellement je n'utilise pas ce code, si ça peut vous rassurer... en général quand je contrôle des variables de formulaire ça ressemble à :
if (isset($_POST['a']) && isset($_POST['b']) && isset($_POST['c']) && is_numeric($_POST['c']) && ........ ) { /*traitement*/ }
else { /* réaffichage du form */ }
QuentinC a écrit :
Personnellement je n'utilise pas ce code, si ça peut vous rassurer...
Là, alors, je te comprends pas Quentin !
Si tu n'utilises pas ce genre de code, pourquoi en donner l'exemple au posteur ?
Les variables variables, c'est imbuvable !
Ce qu'il souhaite (si j'ai bien lu), c'est à garder le nommage de ses variables.
La fonction qu'il cherche est en 7 lettres, commence par un "e" et fini par un "t".
Problème... avec des variables sur lesquelles l'internaute à la main, il y a un gros risque, que ce soit en GET ou en POST.
Et comme je le vois arriver c'est juste une question de facilité et de raccourci.
Pourquoi me casser la tête alors que...
Il est donc préférable de travailler directement sur le tableau $_POST, quitte a recréer des variables intermédiaires sur lesquelles il aura appliquer un traitement.
Modifié par Bison (24 Jan 2007 - 09:04)
Bison a écrit :
Là, alors, je te comprends pas Quentin !
Si tu n'utilises pas ce genre de code, pourquoi en donner l'exemple au posteur ?
Bah ... la réponse est dans la question : c'est un exemple.
Ca m'est néanmoins déjà arrivé d'utiliser des variables variables... ça par exemple :
A noter qu'évidemment, il y a un traitement complexe à la place du echo...
$tab = array('toto', 'titi', 'tata');
for ($i=0,$n=count($tab); $i<$n; $i++) {
echo ${'var'.$tab[$i]};
}
Je vois pas où est le mal ?? Peux-tu m'en dire davantage ?
Bison a écrit :
Les variables variables, c'est imbuvable !
Ah, je ne savais pas que les variables ont été un jour potables.
QuentinC a écrit :
A noter qu'évidemment, il y a un traitement complexe à la place du echo...
Bon, quand je réponds de manière trop directe, on me fait gentiment remarquer que je manque de tact.
Je ne vais donc prendre aucun risque et faire les choses autrement en ne répondant pas, mais en posant une question.
Ton exemple ne le reflètant pas ton traitement complexe, il n'est donc pas représentatif et n'appelle de ce fait aucune réponse précise.
Le mieux est donc de te poser cette question:
- Quel est l'intéret ou l'utilité d'avoir tes variables qui changent de noms dans le cour du script sachant que $tab est accessible à tout moment ?