English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Méthode de parsing de chaîne de requête en utilisant parse_str dans php

Ce texte décrit l'utilisation de parse_str pour analyser la chaîne de recherche en PHP. Partageons-le avec tout le monde pour le référence, voici les détails :

La fonction parse_str() peut analyser la chaîne dans les variables, ce qui signifie qu'un mécanisme de conversion entre chaîne et variable est mis en œuvre, dans le processus de transmission des données entre le client et le serveur, les données sont transmises sous forme de chaîne, comme GET request, puis sur le serveur, via $_GET/$_POST et d'autres variables globales pour réaliser la conversion de chaîne en variable, par exemple : https://fr.oldtoolbag.com/?index.php?var1=1&var2=2,l'après requête, le serveur peut utiliser $_GET['var1'] pour obtenir var1=1&var2=2Ce segment de chaîne est converti en variable. La fonction parse_str() peut réaliser une fonction similaire, en utilisant parse_str() pour analyser la valeur de $_SERVER['QUERY_STRING'], vous pouvez directement réaliser la conversion de chaîne en variable, comme $var1。

Un, Originalité de la fonction

void parse_str ( string str [, array &arr] )

Deux,Compatibilité de version

PHP 3, PHP 4, PHP 5

Trois, Utilisation de base de la fonction et exemples

1. Analyser la chaîne en variable

<?php
parse_str("var1=jb51&var2=parse_str");
echo $var1.$var2;
?>

2. Analyser la chaîne et stocker les variables dans un tableau

<?php
parse_str("var1=jb51&var2=parse_str",$array);
print_r($array);
?>

Sortie :

Array ( [var1] => jb51 [var2] => parse_str )

Explication : Enregistrer des variables dans un tableau en PHP 4.0.3 . Augmenter

3. La chaîne analysée contient des espaces

<?php
parse_str("v ar1=jb51&var 2=parse_str",$array);
print_r($array);
?>

Sortie :

Array ( [v_ar1] => jb51 [var_2] => parse_str )

Explication : Convertir directement les espaces en traits de soulignement _

Quatre, Précautions

1. Si le paramètre array n'est pas défini, les variables définies par cette fonction peuvent écraser les variables homonymes existantes.

2. La configuration magic_quotes_gpc dans php.ini affecte la sortie de cette fonction. Si elle est activée, les variables sont converties par addslashes() avant l'analyse parse_str().

3. La fonction parse_str() contient une faille de sécurité, qui peut être exploitée par un attaquant pour activer register_globals, permettant ainsi une exploitation plus large des failles de sécurité d'autres scripts PHP. Si parse_str() est appelé avec un seul paramètre, la fonction considère que le paramètre est une chaîne de requête transmise par l'URL et interprète la chaîne fournie. Cependant, un attaquant peut envoyer de nombreux variables de requête externes pour déclencher la terminaison de la limite de mémoire (memory_limit) pendant l'appel parse_str(). Si la fermeture de la requête est exécutée pendant l'appel parse_str(), le tag register_globals restera ouvert pendant tout le cycle de vie du processus webserver.

Pour ceux qui sont intéressés par plus de contenu PHP, vous pouvez consulter les sujets spéciaux de notre site : 'Résumé des utilisations de la chaîne (string) en PHP', 'Tutoriel des structures de données et algorithmes en PHP', 'Résumé des algorithmes de conception de programmes PHP', 'Résumé des algorithmes de tri PHP', 'Résumé des algorithmes de parcourir et des techniques en PHP', 'Résumé des techniques de calcul mathématique en PHP', 'Tutoriel des opérations sur les tableaux (Array) en PHP', et 'Résumé des techniques courantes d'opérations de bases de données en PHP'.

J'espère que l'article décrit ici pourra aider les développeurs PHP.

Déclaration : Le contenu de cet article est extrait du réseau, et appartient à l'auteur original. Le contenu est fourni par les utilisateurs d'Internet et téléchargé spontanément. Le site Web ne possède pas de propriété, n'a pas été édité par l'homme, et n'assume aucune responsabilité juridique. Si vous trouvez du contenu présumé de violation de droits d'auteur, veuillez envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, le site supprimera immédiatement le contenu présumé de violation de droits d'auteur.)

Vous pourriez aussi aimer