Gregory Posté 20 Janvier 2008 Posté 20 Janvier 2008 (modifié) Bonjour! voila j'ai un soucis dans un de mes formulaires. Mon forumaire marche parfaitement sous PHP 4.4.7 mais sous un autre serveur avec une version de PHP 4.4.4-8+etch4 le php bloque avec mes variables. Je m'explique : Une fois le formulaire validé, je redirige sur la meme page oû je vérifie les $_POST... Apparement PHP n'aime pas lorsque il y a comme valeur du POST un tableau... (la condition else du if) $erreur=""; while(list($var,$val)=each($_POST)){ if(!is_array($val)){ $$var=strip_tags($val); }else{ while(list($arvar,$arval)=each($val)){ $$var[$arvar] = $arval; } } } la variable $var remprésente le nom de mon champ dans le HTML $val = la value et dans la condition "while" il doit me créer, par exemple si mon champ checkbox s'appelle "hobby", une variable de type tableau $hobby avec le checkbox que j'ai entré. $hobby[0]=1 $hobby[2]=1 pour les checkbox 1 et 3 que l'utilisateur aurait coché... Si quelqu'un a une soluce pour que ca marche sur la version la moins rescente de php qu'il me dise EDIT: si a la place de mette $$var[$arvar] = $arval; je met $hobby[$arvar] = $arval; ca marche mais c'est pas le but Modifié 20 Janvier 2008 par Gregory
Kioob Posté 20 Janvier 2008 Posté 20 Janvier 2008 Hello, la première chose à faire à mon avis est : var_dump( $_POST ); Il s'agit là de la base du débugage Ainsi tu verras quelle "tête" ont tes données sur l'un et l'autre des serveurs.
Gregory Posté 21 Janvier 2008 Auteur Posté 21 Janvier 2008 Hello, merci pour ton message. Les données passent parfaitement dans le POST. le problème étant que je récupère le nom du champ de mes checkbox par exemple : $var = hobby et comme valeur : array ( 0 =>1 , 1 => 1) (pour signifier que mes checkbox 1 et 2 sont validées.) et j'aimerais créer un tableau $hobby avec ces valeur dedans donc mon $$var doit me créer une variable $hobby... et apprement c'est la que ca coince...
Anonymus Posté 21 Janvier 2008 Posté 21 Janvier 2008 Oui. $$var[$arvar] = $arval; est fortement déconseillé. Il ne sait pas si c'est : $$var puis [$arvar] ou si c'est $var[$arvar] //puis le $ Il te faut le lui indiquer, et pour ca (de mémoire) : ${$var[$arvar]} = $arval; Nico.
Kioob Posté 21 Janvier 2008 Posté 21 Janvier 2008 Pour le coup j'ai du mal à voir pourquoi une version bloque le script, si le formulaire est considéré comme identique. Sur la debian, il n'y aurait pas l'extension suhoshin d'installée ? Pour ce qui est de ton script, en gros tu essayes de recopier à l'arrache le contenu de $_POST dans l'environnement global non ? Si c'est bien le cas, quel est l'intérêt, mis à part les soucis de sécurité ?
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant