8792 sujets

Développement web côté serveur, CMS

bonzour!!
je voudrais savoir comment tout extraire sans faire à charque fois $_POST['blabla'] mais que avec $_POST j'ai déjà vu que c'était possible mais je ne sais plus comment si quelqu'un ce souvient!
merci bien za vous!!
Modifié par moii (04 Feb 2007 - 13:11)
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.
Administrateur
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
// 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)

}
Je ne suis pas sûr d'avoir compris ce que tu veux faire, mais c'est de toute façon plus sûr que register globals :

foreach($_POST as $keyname=>$value) {
$$keyname=$value;
}
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)
QuentinC a écrit :

foreach($_POST as $keyname=>$value) {
$$keyname=$value;
}

Affolant !
Julien Royer a écrit :
Poil au dents ? Ah non, ça ne fonctionne pas, désolé...

Variable-variable, libre à toi d'apprécier... poil au nez !
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 à :

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 :
Les variables variables, c'est imbuvable !
Poil au râble ?

Bon, plus sérieusement, je suis d'accord.
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 ?
Administrateur
Hello moii,

Merci d'avoir signalé ton sujet comme étant résolu. Par contre attention à l'orthographe : cela s'écrit "Résolu" (sans "t").
Une bonne orthographe est importante dans ce cas puisqu'il s'agit justement de faciliter les recherches futures dans le forum.