chaine texte de code js

Invité
Invité n'ayant pas de compte PHPfrance

06 mai 2008, 17:28

bonjour,
j'utilise une librairie yahoo qui me renvoie le code suivant par http request:
Array ( [yui-picker-r] => 255 [yui-picker-g] => 255 [yui-picker-b] => 255 [yui-picker-h] => 0 [yui-picker-s] => 0 [yui-picker-v] => 100 [yui-picker-hex] => FFFFFF )
c'est un tableau associatif mais c'est aussi une chaine de texe, donc mon code ne peut pas l'interpréter directement.

Quel est le meilleur moyen pour récupérer un élément de ce tableau avec javascript?
Merci pour vos réponses.

Mammouth du PHP | 19672 Messages

06 mai 2008, 17:38

probablement avec eval() pour que cette chaine de texte soit interprétée pour ce qu'elle est en réalité à savoir un tableau. Mais attention avec eval(), si tu n'es pas sûr de la nature du contenu de cette chaine, ça peut être dangereux. Donc il serait souhaitable (pour ne pas dire très vivement recommandé) d'effectuer un parsing de la chaine pour en vérifier le contenu ou encore l'absence de fonctions du genre "window.location" qui détournerait par exemple les visiteurs de ton site vers un autre site.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

06 mai 2008, 18:04

merci bp. que doit contenir le parsing précisément? a part window.location, ya til une liste exhaustive des éléments que je dois vérifier avant de passer une chaine à eval()?

Mammouth du PHP | 19672 Messages

06 mai 2008, 18:08

L'idéal et à mon sens le plus simple serait encore de concevoir une expression régulière pour vérifier que la chaine reçue a bien la forme attendue : donc tu as des index en caractères alphabétiques avec des tirets, un signe "=>" et soit des chiffres soit les lettres d'un code hexadécimal de couleur. À partir de ça tu devrais pouvoir relativement facilement définir un masque auquel devra impérativement correspondre la chaîne.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 99 Messages

06 mai 2008, 18:41

Je dit surement un truc bête, mais tu n'a pas un moyen de recevoir la réponse au format JSON? Je sais qu'il existe de nombreux scripts qui permettent d'utiliser des réponses de ce type sans avoir à utiliser la fonction eval()...
Si ça peut t'aider, j'ai aussi codé une implémentation de serialize et unserialize en javascript. Je ne l'ai pas testé à fond, mais bon, ça à l'air de marcher pour les tableaux...

et sinon, cyrano, comment est-ce qu'on peut injecter un code à exécuter? ce qu'il reçoit provient de son site, donc il a quand même un certain contrôle sur le contenu exécuté, surtout que son code est composé uniquement de nombre et de chiffres hexadécimaux

Mammouth du PHP | 19672 Messages

06 mai 2008, 20:45

En retour AJAX, c'est effectivement peu probable : néanmoins la prudence est de rigueur : eval() est une fonction qui peut être dangereuse si on ne maîtrise pas très bien les données qui y sont envoyées.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: