file get contents php input

Я знаю, что этот вопрос уже задавался на форуме несколько раз, но ни один из ответов мне не помог. Я по-прежнему получаю пустую строку каждый раз, когда пытаюсь отправить данные через параметр URL.

Пример передачи переменной с использованием параметра url

Я уже установил allow_url_fopen = On , установить post_max_size = 8M и до сих пор нет надежды. Однако, когда я пытаюсь отправить данные, нажав кнопку отправки, он отправляет необработанные данные в php ( string(21) «name=ok&submit=submit» ).

Кто-нибудь хочет помочь? Спасибо!

Содержание

  1. Решение
  2. Возвращаемое значение
  3. Дополнительная информация
  4. Версии и история изменений в PHP
  5. Связанные функции
  6. Параметры
  7. Наглядные примеры
  8. Дополнительные советы

Решение

php: // input — поток только для чтения, который позволяет вам читать необработанные данные из тела запроса. В случае запросов POST предпочтительно использовать php: // input вместо $ HTTP_RAW_POST_DATA, так как это не зависит от специальных директив php.ini.

Важной частью является « POST reqest».

Это значит, когда вы говорите http://www.example.com/tests/testtest.php?name=what Вы отправляете GET запрос, а не POST запрос. Следовательно, нет тела запроса, и вы не можете ничего прочитать php://input ,

Для чтения ввода формы, переданного как параметры URL, вы можете использовать глобальный $_GET переменная.

Когда вы используете запрос POST, вы обычно используете глобальный $_POST массив, вместо чтения тела запроса вручную через php://input ,

Вы также можете рассмотреть $_REQUEST , если вам все равно, если это запрос POST или GET. Хотя, будьте в курсе Что не так с использованием $ _REQUEST []?

Функция PHP file get ontents() используется для считывания файла в строку. Если применять ее для дистанционного считывания, не забудьте, что любой URL-адрес со специальными символами должен быть правильно закодирован при помощи urlencode() .

Пример использования file_get_contents() :

Возвращаемое значение

Функция возвращает считанные данные или вернет FALSE при ошибке.

Дополнительная информация

file_get_contents() должна стать приоритетной функцией для считывания содержимого файла в строку. Она задействует метод отображения файла в память .

Одно из основных отличий между функциями file() и file_get_contents() заключается в том, что последняя считывает содержимое в строку, начиная с указанного параметра offset , и до maxlen . А file() считывает содержимое в массив.

Версии и история изменений в PHP

Функция file get contents PHP работает с PHP 4 >= 4.3.0, PHP 5, PHP 7 .

Параметр offset появился в PHP 5.1 .
Параметр maxlen также появился в PHP 5.1 .

Связанные функции

Вам также следует знать о следующих PHP-функциях :

file() — считывает весь файл в массив;
fgets() — считывает строку из указанного файла;
fread() — производит бинарно-безопасное чтение файла;
readfile() — выводит файл;
file_put_contents() — записывает строку в файл;
stream_get_contents() — считывает остаток потока в строку;
stream_context_create() — создаёт контекст потока.

Параметры

Параметр filename функции PHP file get contents используется для указания имени файла. Это обязательный параметр.

Параметр use_include_path используется для указания, может ли константа FILE_USE_INCLUDE_PATH ( из файла php.ini ) использоваться для запуска поиска include path . Это необязательный параметр.

Параметр context используется для указания контекста, созданного функцией stream_context_create() . Если не нужен произвольный контекст, можно опустить этот параметр при помощи NULL . Это необязательный параметр.

Параметр offset используется для указания смещения, с которого в исходном потоке начинается считывание. Отрицательное значение offset позволяет начинать смещение с конца потока. Это необязательный параметр.

Не забудьте, что поиск ( offset ) не поддерживается при дистанционной работе с файлами. В редких случаях при работе с нелокальными файлами могут сработать небольшие смещения, но в этом случае результат работы непредсказуем, так как работа производится в потоке в буфере.

Параметр maxlen используется для указания максимальной длины данных, которые необходимо считать. По умолчанию считывание производится до конца файла. Это необязательный параметр.

Наглядные примеры

file get contents PHP пример использования :

Приведённый выше код позволяет получить и вывести исходный код страницы указанного сайта. В следующем примере показано, как считать фрагмент данных файла:

В следующем примере показано, как использовать контекст потока для дистанционного открытия файла:

Дополнительные советы

  1. В функции file get contents используется POST . Для этого сначала нужно создать контекст:
  1. Можно использовать поточный контекст для установки правильного тайм-аута, не связываясь со значениями php.ini :
  1. В некоторых случаях использования функции PHP file get contents http возникает проблема с кодировкой UTF-8 при считывании URL-адреса с кодировкой отличной от UTF-8 . Это происходит потому, что по умолчанию используется UTF-8 . Приведенная ниже функция решает эту проблему:
  1. Кажется, file ищет файл внутри текущей директории, перед тем как обратиться к include path , даже если установлен флаг FILE_USE_INCLUDE_PATH .

Вроде бы сказано, что include_path – первая локация, в которой должен осуществляться поиск. Но я несколько раз бывал в ситуации, когда директория, содержащая включение файла, оказывалась первой в порядке поиска.

Данная публикация представляет собой перевод статьи « PHP file_get_contents() Function » , подготовленной дружной командой проекта Интернет-технологии.ру

file_get_contents («php: // input») или $ HTTP_RAW_POST_DATA, какой из них лучше получить тело запроса JSON?

И какой тип запроса ( GET или POST ) следует использовать для отправки данных JSON при использовании клиентской стороны XmlHTTPRequest ?

Мой вопрос был вдохновлен этим ответом: как разместить JSON на PHP с завитом

С точки зрения протокола file_get_contents(«php://input») на самом деле более корректно, так как вы все равно не обрабатываете данные мультиплексора http.

Фактически, php://input позволяет вам считывать необработанные данные POST.

Это менее энергоемкая альтернатива $ HTTP_RAW_POST_DATA и не нуждается в каких-либо специальных директивах php.ini .

php://input не доступен с enctype=»multipart/form-data» .

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

file_get_contents (php: // input) – получает необработанные данные POST, и вам нужно использовать это при написании API-интерфейсов и необходимости ввода XML / JSON / …, который не может быть декодирован в $ _POST с помощью PHP :

отправить по почте JSON string

1.php

Обычные правила должны применяться для отправки запроса. Если запрос заключается в получении информации (например, результат «поиска» частичного поиска или новая страница для отображения и т. Д.), Вы можете использовать GET. Если отправляемые данные являются частью запроса на изменение (обновление базы данных, удаление записи и т. Д.), Используйте POST.

На стороне сервера нет оснований использовать исходный ввод, если вы не хотите захватить весь блок сообщений / получения данных за один раз. Вы можете получить нужную информацию с помощью массивов _GET / _POST, как обычно. Библиотеки AJAX, такие как MooTools / jQuery, будут обрабатывать сложную часть выполнения фактических вызовов AJAX и данных формы кодирования в соответствующие форматы для вас.

Для данных JSON намного проще ПОСТ-ТАК как «тип приложения / json». Если вы используете GET, вам нужно URL-кодировать JSON в параметре, и это довольно грязно. Кроме того, при POST не существует ограничения по размеру. Размер GET, если он ограничен (максимум 4K).

Ваш второй вопрос прост, GET имеет ограничение по размеру в 1-2 килобайта как на стороне сервера, так и на стороне браузера, поэтому любые большие объемы данных, которые вы должны были бы отправлять через POST.

Источник: computermaker.info

Техника и Гаджеты
Добавить комментарий