php://ввод - что он делает в fopen()?


$handle = fopen("/home/rasmus/file.txt", "r");
$handle = fopen("/home/rasmus/file.gif", "wb");

Я могу понять, что /home/rasmus/file.txt и /home/rasmus/file.gif - это путь к файлу.

Но что это значит:

php://input
php://temp

В

$objInputStream = fopen("php://input", "r");
$objTempStream = fopen("php://temp", "w+b");

Что они делают?

 12
Author: laukok, 2011-08-16

3 answers

php://input это поток только для чтения, который позволяет считывать необработанные данные из тела запроса. В случае запросов POST предпочтительнее $HTTP_RAW_POST_DATA, так как это не зависит от специальных директив php.ini. Более того, для тех случаев, когда $HTTP_RAW_POST_DATA не заполняется по умолчанию, это потенциально менее трудоемкая альтернатива активации always_populate_raw_post_data. php://ввод недоступен с enctype="multipart/form-data".

Ознакомьтесь с руководством: http://php.net/manual/en/wrappers.php.php

 9
Author: adritha84, 2011-08-16 19:19:47

php://temp хранит данные во временном файле, доступном только на время выполнения скрипта. Это реальный файл, но он очищается, как только скрипт завершается, в отличие от настоящего файла, открытого с помощью fopen(), который будет сохраняться в файловой системе.

php://input используется для чтения необработанного тела HTTP-запроса без абстрагирования переменных $_POST и $_SERVER. Поток php://input предоставит доступ ко всему HTTP-запросу, когда сервер передаст его PHP переводчик.

 6
Author: Michael Berkowski, 2011-08-16 19:17:37

Это обертки потоков , которые позволяют вам читать из различных потоков. Чтение и запись в поток выполняются так же, как и с файлом (могут существовать некоторые ограничения, например, не каждая оболочка потока поддерживает fseek). php://input предоставляет вам доступ к необработанным данным HTTP (они доступны в $HTTP_RAW_POST_DATA, если сервер настроен на их предварительное заполнение). Лучше всего прочитать соответствующий раздел в документации

 3
Author: Maxim Krizhanovsky, 2011-08-16 19:17:51