2010-06-29 6 views
1

Tout en regardant sur je suis est pour urldecode() la doc dans cette note:Quelles sont les routines de décodage automatique qu'utilise Apache + PHP?

superglobales _GET $ et _REQUEST $ sont déjà décodés. L'utilisation de urldecode() sur un élément dans $ _GET ou $ _REQUEST peut avoir des résultats inattendus et dangereux .

C'est la raison pour laquelle une variable get avec la valeur de %26 finit par être &. Existe-t-il d'autres routines de décodage auto-magiques autres que urldecode()? Décoder peut-être cela uniquement à cause de la configuration ou de la négociation?

Répondre

3

décodage des paramètres GET fonctionne réellement dans cette séquence:

  • explode ("&", $ QUERY_STRING)
  • strtok ("=") pour séparer les noms de la valeur
  • urldecode() sur le nom et valeur
  • strtr(".", "_", $name) - les caractères non-alphanumériques principalement dénudées de noms var (un paramètre GET & xy = devient $ _GET [ "x _ y"])
  • expansion des [] array noms
  • addslashes() sur les valeurs si les guillemets magiques ont été activées - c'est la seule partie qui est configurable

Lors du décodage des paramètres POST en multipart/form-data un charset = pourrait être réglée individuellement pour chaque champ. Mais j'ai l'intuition que PHP ne respecte pas cela.

C'est tout. AFAIK

+0

+1 très bien. Avez-vous des références? Le fichier php C++ qui effectue ces actions serait génial. – rook

+0

Je pense que c'est principalement dans http://svn.php.net/viewvc/php/php-src/trunk/main/php_variables.c?revision=298241&view=markup - cherchez "Supprimer les espaces de début des noms de cookies" – mario

Questions connexes