Protocoles spéciaux en php, explication détaillée du protocole php://

墨辰丷
Libérer: 2023-03-25 19:18:01
original
2550 Les gens l'ont consulté

Cet article présente principalement les protocoles spéciaux en php, le protocole php:// est détaillé, les amis intéressés peuvent en savoir plus.

php://Accéder à divers flux d'entrée/sortie (flux d'E/S)


Description


PHP fournit divers flux d'entrée/sortie (IO), permettant d'accéder aux flux d'entrée et de sortie de PHP, aux entrées et sorties standard et aux descripteurs d'erreurs, en mémoire, et sauvegardes de disque Flux de fichiers temporaires et filtres pouvant fonctionner sur d'autres ressources de fichiers en lecture et en écriture.


php://stdin, php://stdout et php://stderr


, et autorisé accès direct Le flux d'entrée ou de sortie correspondant du processus PHP. Le flux de données fait référence au descripteur de fichier copié, donc si vous l'ouvrez puis le fermez, En désactivant simplement la copie, le STDIN réellement référencé ne sera pas affecté. Notez que le comportement de PHP dans ce domaine était bogué jusqu'à PHP 5.2.1. Il est recommandé d'utiliser simplement les constantes STDIN, STDOUT et STDERR au lieu d'ouvrir ces wrappers manuellement.

est en lecture seule et en écriture seule.


php://input


est un flux en lecture seule qui peut accéder aux données brutes demandées. Dans le cas des requêtes POST, il est préférable d'utiliser à la place de , car il ne repose pas sur une directive spécifique. De plus, dans ce cas, il n’y a pas de remplissage par défaut. Nécessite potentiellement moins de mémoire que l’activation de always_populate_raw_post_data. enctype="multipart/form-data" n'est pas valide.

Remarque : Le flux de données ouvert ne peut être lu qu'une seule fois ; Les flux de données ne prennent pas en charge les opérations de recherche. Cependant, en fonction de la mise en œuvre de SAPI, lorsque les données du corps de la requête sont enregistrées, il peut ouvrir un autre flux de données et le relire. En règle générale, cela n'est le cas que pour les requêtes POST, pas pour les autres méthodes de requête telles que PUT ou PROPFIND.


php://output


est un flux de données en écriture seule. Permet d'imprimer de la même manière que écho Écrivez dans le tampon de sortie.


php://fd


Permet un accès direct au descripteur de fichier spécifié. Par exemple, fait référence au descripteur de fichier 3.


php://memory et php://temp


et est un fichier similaire Un wrapper pour les flux de données qui permet de lire et d'écrire des données temporaires. La seule différence entre les deux est que les données sont toujours stockées en mémoire, tandis qu'elles seront supprimées une fois que la quantité de mémoire atteint une limite prédéfinie (la valeur par défaut est 2 Mo) est stocké dans un fichier temporaire. L'emplacement du fichier temporaire est déterminé de la même manière que sys_get_temp_dir().

La limite de mémoire de

peut être contrôlée en ajoutant /maxmemory:NN est la quantité maximale de données conservées en mémoire en octets. Si elle dépasse, les fichiers temporaires seront utilisés.


php://filter


est un méta-wrapper, Conçu pour filtrer les applications lorsqu'un flux de données est ouvert. Ceci est utile pour les fonctions de fichier tout-en-un comme readfile(), file() et file_get_contents(), Il n'est pas possible d'appliquer des filtres supplémentaires avant la lecture du contenu du flux de données.

La cible utilise les paramètres suivants dans le cadre de son chemin. Des chaînes de filtres composites peuvent être spécifiées sur un chemin. Pour une utilisation détaillée de ces paramètres, veuillez vous référer à des exemples spécifiques.

php://paramètres de filtre
php://filter 参数
名称 描述
resource=<要过滤的数据流> 这个参数是必须的。它指定了你要筛选过滤的数据流。
read=<读链的筛选列表> 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。
write=<写链的筛选列表> 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。
<;两个链的筛选列表> 任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。
Nom Description
resource= Ceci Le paramètre est obligatoire. Il spécifie le flux de données que vous souhaitez filtrer.
read=< Lire la liste des filtres de chaîne> Ce paramètre est facultatif. Vous pouvez définir un ou plusieurs noms de filtre, séparés par des barres verticales (|).
write=< Filtrer la liste des chaînes d'écriture> Ce paramètre est facultatif. Vous pouvez définir un ou plusieurs noms de filtre, séparés par des barres verticales (|).
< liste pour une chaîne> Toute liste de filtres non préfixée par read= ou write= sera appliquée à la chaîne de lecture ou d'écriture, selon le cas.


Facultatif

封装协议摘要(针对 php://filter,参考被筛选的封装器。)
属性 支持
首先于 allow_url_fopen No
首先于 allow_url_include 仅 php://input、 php://stdin、 php://memory 和 php://temp。
允许读取 仅 php://stdin、 php://input、 php://fd、 php://memory 和 php://temp。
允许写入 仅 php://stdout、 php://stderr、 php://output、 php://fd、 php://memory 和 php://temp。
允许追加 仅 php://stdout、 php://stderr、 php://output、 php://fd、 php://memory 和 php://temp(等于写入)
允许同时读写 仅 php://fd、 php://memory 和 php://temp。
支持 stat() 仅 php://memory 和 php://temp。
支持 unlink() No
支持 rename() No
支持 mkdir() No
支持 rmdir() No
仅仅支持 stream_select() php://stdin、 php://stdout、 php://stderr、 php://fd 和 php://temp。



Journal de mise à jour

版本 说明
5.3.6 增加 。
5.1.0 增加  和 。
5.0.0 增加 。



Exemple



Exemple n°1 php://temp/maxmemory


Cette option facultative permet de définir la limite maximale de mémoire avant de commencer à utiliser des fichiers temporaires.

<?php
// Set the limit to 5 MB.
$fiveMBs = 5 * 1024 * 1024;
$fp = fopen("php://temp/maxmemory:$fiveMBs", &#39;r+&#39;);

fputs($fp, "hello\n");

// Read what we have written.
rewind($fp);
echo stream_get_contents($fp);
?>
Copier après la connexion
<code style="font-family:&#39;Fira Mono&#39;, &#39;Source Code Pro&#39;, monospace;display:block;"><br/>

Exemple n°2 php://filter/resource=


Ce paramètre doit être situé à la fin et pointer vers le flux de données qui doit être filtré.


<?php
/* 这简单等同于:  
readfile("http://www.example.com");  
实际上没有指定过滤器 
*/readfile("php://filter/resource= 
?>
Copier après la connexion

Exemple n°3 php://filter/read=


Ce paramètre prend un ou plusieurs noms de filtre séparés par le caractère barre verticale |


<?php
/* 这会以大写字母输出 www.example.com 的全部内容 */
readfile
(
"php://filter/read=string.toupper/resource=http://www.example.com"
);
/* 这会和以上所做的一样,但还会用 ROT13 加密。 */
readfile
(
"php://filter/read=string.toupper|string.rot13/resource=http://www.example.com"
);
?>
Copier après la connexion
<span style= "couleur:rgb(0,0,0);"><span style="color:rgb(0,0,187);"></span></span><code style="font-family:&#39;Fira Mono&#39;, &#39;Source Code Pro&#39;, monospace;display:block;"><span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,187);"></span></span><br/>


Exemple n°4 php://filter/write=


Ce paramètre prend un ou plusieurs noms de filtre séparés par le caractère barre verticale |


<?php
/* 这会通过 rot13 过滤器筛选出字符 "Hello World"
  然后写入当前目录下的 example.txt */
file_put_contents
(
"php://filter/write=string.rot13/resource=example.txt"
,
"Hello World"
);
?>
Copier après la connexion
<span style="couleur:rgb(0,0,0);"><span style="color:rgb(0,0,187);"></span></span><code style="font-family:'Fira Mono', 'Source Code Pro', monospace;display:block;"><span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,187);"></span></span><br>

Recommandations associées :

Paramètres de demande de publication du protocole HTTP en PHP, demande de publication du protocole php_Tutoriel PHP

Paramètres de demande de publication du protocole HTTP en PHP, demande de publication du protocole php

La soumission de la publication php apparaît Les variables d'entrée ont dépassé 1000

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!