Возможно ли получить весть запрос клиента?

Кром

Новичок
>А откуда по твоему я узнаю где файл лежит и как называется?

Он нигде не лежит. Ссылка на него находится в массиве _FILES. Эта ссылка указывает на файл, который находится в темповой директории. И лежит он там доли секунды. Если ты его никуда не скопировал, он стирается.
Поэтому, сначала нужно записать файл куда ты хочешь, а уже потом проводить всякие манипуляции.

>Вот этот размер не нулевой, но как я понимаю этот размер передал браузер.

И что, по твоему броузеру надо тебе обманывать? :)
Выведи то что передал броузер прямо в броузер и смотри что так такое.
 

valyala

Новичок
Хочется в скрипте получить всю информацию переданную клиентом по HTTP. apache_request_headers выводит только заголовок. Можно ли как-то получить тело?
Да
PHP:
file_get_contents('php://input');
-~{}~ 05.05.05 19:45:

Есть еще один способ: установить в php.ini
always_populate_raw_post_data = On
после чего использовать массив $HTTP_RAW_POST_DATA

Но все эти способы работают только в случае, если Content-Type в HTTP-запросе клиента не равно multipart/form-data. Поэтому вышеназванные способы для тебя не подходят.

Хотя есть способ для извращенцев. ПХП использует функцию rfc1867_post_handler вместо стаднартной php_std_post_handler для чтения тела HTTP-запроса, у которого Content-Type равно multipart/form-data. Первая функция, в отличие от второй, копирует тело HTTP-запроса в строку SG(request_info).raw_post_data, что позволяет использовать file_get_contents('php://input'). Несложно подправить функцию rfc1867_post_handler, чтобы она также выполняла это копирование.
 

_RVK_

Новичок
Поэтому, сначала нужно записать файл куда ты хочешь, а уже потом проводить всякие манипуляции
Спасибо Кром, а я собирался зранить все закачиваемые картинки в темповой директории :) Конечно, я это знаю. Но копируется тот же файл с нулевым размером!
И что, по твоему броузеру надо тебе обманывать
Не надо. Но возможно кто то попути от браузера до пхп что то(мало ли там софта моет быть, фаерволы разные, прокси...) меняет в теле запроса. Даже предпология что на 90% там все нормально, и запрос приходит именно таким, каким его отослал браузер, я хочу это увидеть, а не предпологать.

Выведи то что передал броузер прямо в броузер и смотри что так такое
Не понял. Браузер передал текст, оформленный согласно RFC2616. Прям это и вывести? Так я же как раз и спрашиваю КАК?

valyala
Спасибо. Это какая-то недокументированная возможность, или я что-то в мане профукал :)
 

valyala

Новичок
А проще написать cgi-приложение на том же перле или С++ и перенаправить стандартный поток ввода в стандартный поток вывода:
Код:
#include <iostream>

int main()
{
    char c;
    std::cout << "Content-Type: text/text\n\n";
    while (std::cin.get(c)) std::cout.put(c);
}
-~{}~ 05.05.05 20:20:

Спасибо. Это какая-то недокументированная возможность, или я что-то в мане профукал
Все документировано: http://php.net/wrappers.php
 

Кром

Новичок
>Но возможно кто то попути от браузера до пхп что то(мало ли там софта моет быть, фаерволы разные, прокси...) меняет в теле запроса.

Ты что не знаешь, что находится между твоим броузером и твоим сервером? Ты меня поражаешь все больше...

>Браузер передал текст, оформленный согласно RFC2616. Прям это и вывести?

Выведи то, что лежит в папке tmp:
var_dump($_FILES);
echo file_get_contents($_FILES['file_name']['tmp_name']);
после загрузки файла. И смотри что там лежит.
 

_RVK_

Новичок
Выведи то, что лежит в папке tmp:
var_dump($_FILES);
echo file_get_contents($_FILES['file_name']['tmp_name']);
Сделал. Давно. Я с этого и начал.

Ты что не знаешь, что находится между твоим броузером и твоим сервером?
Что находится между моим браузером и моим сервером я знаю и все работает. А вот что находится между тестовым сервером фирмы и моим браузером я не знаю. Об этом знает админ. Но прежде чем копать сервер, он хочет убедится что пхп здесь не причем. Нужно сузить радиус поиска.
 

Кром

Новичок
>Сделал. Давно. Я с этого и начал.

И что показывает, если, допустим, послать на сервер текстовый файл с текстом "test" внутри? Скопируй-ка сюда.
 

_RVK_

Новичок
Кром
Сейчас не могу проверить. Только завтра на работе. Пока пробовал только на картинках. Но, честно говоря, не пойму чем текстовый файл принципиально отличается от картинки.
 

_RVK_

Новичок
Все, админ решил не дожидаться окончания нашего разговора и все переустановить :) Посмотрим что получится....

-~{}~ 06.05.05 09:51:

Все заработало. На вопрос адимну: "Че сделал?" он ответил "А хер его знает"
 
Сверху