Vstupné/Výstupné prúdy PHP
PHP 3.0.13 a vyššie, php://output a php://input počínajúc PHP 4.3.0, php://filter počínajúc PHP 5.0.0
- php://stdin
- php://stdout
- php://stderr
- php://output
- php://input
- php://filter
php://stdin, php://stdout a php://stderr umožňujú prístup k zodpovedajúcemu vstupnému alebo výstupnému prúdu PHP procesu.
php://output umožňuje zápis do výstupného mechanizmu zásobníka rovnakým spôsobom ako print() a echo().
php://input umožňuje čítanie prvotných POST dát. Je to menej pamäť zaťažujúca alternatíva než $HTTP_RAW_POST_DATA a nepotrebuje žiadne špeciálne php.ini direktívy.
php://stdin a php://input sú iba na čítanie, zatiaľčo php://stdout, php://stderr a php://output sú iba na zápis.
php://filter je druh meta-wrappera dizajnovaný na pripustenie aplikácii filtrov do prúdu v čase otvárania. Je to užitočné u všetkých súborových funkcií readfile(), file() a file_get_contents(), kde inak nie je žiadna možnosť aplikovať filter do prúdu pred prečítaním obsahu.
Cieľ php://filter má následuúce 'parametre' ako časti svojej 'cesty'.
-
/resource=<prúd na filtrovanie> (požadovaný) Tento paramter musí byť umiestnený na konci vášej php://filter špecifikácie a mal by ukazovať na prúd, ktorý chcete filtrovať.
<?php
/* Toto je ekvivalentne jednoduchemu:
readfile("https://www.example.com");
pretoze filtre nie su urcene */
readfile("php://filter/resource=https://www.example.com");
?> -
/read=<zoznam filtra na umožnenie čítania reťaze> (voliteľný) Tento parameter má jeden alebo viac názvov oddelených znakom potrubia |.
<?php
/* Vystupom tohto bude obsah
www.example.com celý v uppercase */
readfile("php://filter/read=string.toupper/resource=https://www.example.com");
/* Toto urobi to iste ako hore,
ale tiez ho ROT13 zakoduje */
readfile("php://filter/read=string.toupper|string.rot13/resource=https://www.example.com");
?> -
/write=<zoznam filtra na umožnenie zápisu reťaze> (voliteľný) Tento parameter má jeden alebo viac názvov oddelených znakom potrubia |.
<?php
/* Toto vyfiltruje retazec "Hello World"
cez rot13 filter, potom zapise do
example.txt v aktualnom adresari */
file_set_contents("php://filter/write=string.rot13/resource=example.txt","Hello World");
?> - /<zoznam filtra na umožnenie oboch reťazí> (voliteľný) Všetky zoznamy filtra, ktoré nie sú určené cez read= alebo write= budú aplikované do oboch reťazí čítania a zápisu (ako pridelené).
Attribút | Podporovaný |
---|---|
Obmedzený cez allow_url_fopen. | Nie |
Umožňuje čítanie | Iba php://stdin a php://input. |
Umožnuje Zápis | Iba php://stdout, php://stderr a php://output. |
Umožňuje Pridávanie | Iba php://stdout, php://stderr a php://output. (Ekvivalentné so zapisom) |
Umožňuje Súbežné Čítanie a Zápis | Nie. Tieto wrappery nie sú smerové. |
Podporuje stat() | Nie |
Podporuje unlink() | Nie |
Podporuje rename() | Nie |
Podporuje mkdir() | Nie |
Podporuje rmdir() | Nie |