Connaissance de base des flux en PHP

墨辰丷
Libérer: 2023-03-31 07:26:02
original
1411 Les gens l'ont consulté

Cet article présente principalement les connaissances de base des flux PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Présentation

Les flux sont une fonctionnalité introduite dans PHP 4.3, principalement pour unifier les méthodes de travail des fichiers, sockets et autres ressources similaires. PHP 4.3 existe depuis longtemps, mais de nombreux programmeurs semblent incapables d'utiliser correctement les flux en PHP, y compris moi bien sûr. J'ai déjà rencontré l'utilisation de flux dans certains programmes, comme php://input, mais je n'ai jamais eu l'occasion de comprendre cela. Aujourd'hui, je vais régler cette partie des connaissances.

Stream est une ressource fournie par PHP, que nous pouvons utiliser de manière transparente, et stream est un outil très puissant. Une utilisation appropriée des flux dans les programmes peut amener nos programmes à un nouveau niveau.

Chaque flux implémente un wrapper, qui contient du code supplémentaire pour gérer des protocoles et des encodages spéciaux. PHP fournit des wrappers intégrés, et nous pouvons également facilement créer et enregistrer des wrappers personnalisés. Nous pouvons même utiliser des contextes et des filtres pour modifier et améliorer les wrappers.

Connaissance de base des flux

La forme des flux en PHP est : ://. est le nom du wrapper et le contenu de dépend de la syntaxe différente du wrapper.
Le wrapper par défaut est file://, ce qui signifie que les flux sont utilisés à chaque fois que nous accédons au système de fichiers. Par exemple, nous pouvons utiliser les deux méthodes suivantes pour lire des fichiers : readfile('/path/to/somefile.txt') et readfile('file:///path/to/somefile.txt'). Utilisez ces deux méthodes. pour lire le fichier, vous pouvez obtenir le même résultat.

Comme mentionné précédemment, PHP fournit des wrappers, protocoles et filtres intégrés. Pour vérifier quels wrappers sont installés sur notre machine, vous pouvez utiliser les fonctions suivantes :

Le code est le suivant :

<?php
    var_dump(stream_get_transports());
    var_dump(stream_get_wrappers());
    var_dump(stream_get_filters());
?>
Copier après la connexion

Le contenu de sortie de mon environnement local est le suivant :

Le code est le suivant :

array (size=8)
  0 => string &#39;tcp&#39; (length=3)
  1 => string &#39;udp&#39; (length=3)
  2 => string &#39;unix&#39; (length=4)
  3 => string &#39;udg&#39; (length=3)
  4 => string &#39;ssl&#39; (length=3)
  5 => string &#39;sslv3&#39; (length=5)
  6 => string &#39;sslv2&#39; (length=5)
  7 => string &#39;tls&#39; (length=3)
array (size=12)
  0 => string &#39;https&#39; (length=5)
  1 => string &#39;ftps&#39; (length=4)
  2 => string &#39;compress.zlib&#39; (length=13)
  3 => string &#39;compress.bzip2&#39; (length=14)
  4 => string &#39;php&#39; (length=3)
  5 => string &#39;file&#39; (length=4)
  6 => string &#39;glob&#39; (length=4)
  7 => string &#39;data&#39; (length=4)
  8 => string &#39;http&#39; (length=4)
  9 => string &#39;ftp&#39; (length=3)
  10 => string &#39;phar&#39; (length=4)
  11 => string &#39;zip&#39; (length=3)
array (size=12)
  0 => string &#39;zlib.*&#39; (length=6)
  1 => string &#39;bzip2.*&#39; (length=7)
  2 => string &#39;convert.iconv.*&#39; (length=15)
  3 => string &#39;string.rot13&#39; (length=12)
  4 => string &#39;string.toupper&#39; (length=14)
  5 => string &#39;string.tolower&#39; (length=14)
  6 => string &#39;string.strip_tags&#39; (length=17)
  7 => string &#39;convert.*&#39; (length=9)
  8 => string &#39;consumed&#39; (length=8)
  9 => string &#39;dechunk&#39; (length=7)
  10 => string &#39;mcrypt.*&#39; (length=8)
  11 => string &#39;mdecrypt.*&#39; (length=10)
Copier après la connexion

De plus, nous pouvons personnaliser ou utiliser des flux tiers.

php:// wrapper

PHP a son propre wrapper pour accéder aux flux d'entrée/sortie (E/S). PHP a des wrappers de base php://stdin, php://stdout, php://stderr correspondant aux ressources d'E/S par défaut. Il existe également un flux php://input, qui est un flux en lecture seule, et le contenu du flux correspond aux données demandées par la publication. Ce flux est particulièrement utile lorsque nous mettons des données dans le corps d'une requête de publication pour demander un service distant.

Étant donné que php://input est le flux le plus couramment utilisé, voici quelques points de connaissances :

1.php://input peut lire les données POST non traitées. Comparé à $HTTP_RAW_POST_DATA, il exerce moins de pression sur la mémoire et ne nécessite pas de paramètres php.ini spéciaux. php://input ne peut pas être utilisé pour enctype=multipart/form-data
2 Uniquement lorsque Content-Type est application/x-www-form-urlencoded et que la méthode de soumission est la méthode POST, les données $_POST sont les mêmes. car php:/ /Les données d'entrée sont "cohérentes" (entre guillemets, indiquant que leurs formats sont incohérents et que leur contenu est cohérent). Dans d'autres cas, ils sont incohérents
3.php://input ne peut pas lire les données GET. En effet, les données _GET sont écrites sous la forme query_path dans le champ PATH de l'en-tête de la requête http (en-tête), plutôt que dans la partie corps de la requête http.

Contextes de flux

Cette partie du contenu n'a presque jamais été rencontrée en programmation, et il m'est difficile de la rechercher. Si vous êtes intéressé, vous pouvez. Baidu vous-même.

Résumé

Les flux ne sont pas beaucoup utilisés dans la programmation quotidienne Lors de l'utilisation de XML-RPC, le côté serveur obtient les données client, principalement via l'entrée du flux d'entrée php, c'est-à-dire. un scénario courant. Les pirates peuvent également utiliser cette partie du contenu lorsqu'ils envahissent le site Web.

Recommandations associées :

Comment utiliser la classe Snoopy pour analyser les fichiers HTML

php pour les opérations sur les fichiers et caractères Méthode de cryptage de chaîne

Méthode d'opération de chaîne PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!