Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.18;
Скачать: CL | DM;

Вниз

Как в PHP4 сохранить текст HTTP-запроса в файл?   Найти похожие ветки 

 
kaif ©   (2008-04-03 22:32) [0]

Прошу прощения, что задаю здесь этот вопрос.
Срочно нужно.
Я отправляю multipart/form-data (ручками).
Там у меня JPEG внутри и еще кой-какие поля. На том конце PHP4 обычные поля видит, а JPEG - не видит. А как заголовки и тело HTTP-запроса в исходном виде в файл на том конце сохранить, мой партнер не знает. Подскажите функцию, плиз.

Заранее признателен.


 
kaif ©   (2008-04-03 22:37) [1]

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


 
DVM ©   (2008-04-03 22:42) [2]


> Для этого нужно сохранить оба текста HTTP-запроса в файл
> и сравнить.

Снифер возьми и не мучайся. Ethereal (или как он там теперь называется) например.


 
kaif ©   (2008-04-03 22:52) [3]

Отладка идет на хосте провайдера.
Неужели то, что в  ASP.NET я сделал за 1 минуту, в PHP4 так сложно сделать? Банально сохранить текст исходного запроса в файл...


 
DVM ©   (2008-04-03 22:54) [4]


> Отладка идет на хосте провайдера.

Но запрос же посылает клиентский компьютер. У провайдера он будет в точности такой же. Поэтому проще смотреть что отсылает клиент. А возможность такая в PHP есть. Ща поищу, не помню.


 
kaif ©   (2008-04-03 22:59) [5]

Я просто никогда не работал со сниферами. Даже не знаю, как он ставится. :(
Идеально было бы на том конце отловить и посмотреть... Если, конечно, есть такая возможность. Хотя в любом случае спасибо за идею. Если ничто другое не поможет, попробую прибегнуть к перехвату пакетов. Просто это не совсем мой профиль...


 
easy ©   (2008-04-03 23:01) [6]

$headers = getallheaders();
while (list ($header, $value) = each ($headers)) {
   echo "$header: $value<br />\n";
}


 
DrPass ©   (2008-04-03 23:02) [7]


> Я просто никогда не работал со сниферами. Даже не знаю,
> как он ставится. :(

Проще, чем скрипт РНР :)
Запустил инсталляху WinPCap (это драйвер для перехвата пакетов)... ну и собственно, запустил Ethereal. Указал какой порт прослушивать, нажал старт, нажал стоп. И смотри что он напрочитывал


 
kaif ©   (2008-04-03 23:03) [8]

2 easy ©
Так это наверно только заголовки вернет, судя по тексту...
А мне нужно тело запроса тоже увидеть. Там вся соль творится. Вся эта мультипартовая муть с разделителями и переводами строки.


 
DVM ©   (2008-04-03 23:06) [9]


> Если ничто другое не поможет, попробую прибегнуть к перехвату
> пакетов. Просто это не совсем мой профиль...

У Ethereal это вообще элементарно. Он тебе и все пакеты соберет вместе относящиеся к одному соединению и декодирует и представит в удобном читабельном виде.


 
kaif ©   (2008-04-03 23:10) [10]

Скачиваю 12 Mb Ethereal...
И буду ставить его на клиент.
Неужели это самый короткий путь для PHP-ста, который хочет узнать самую первейшую на свете вещь - исходный HTTP-запрос?
Это примерно как если бы дельфисту сказали "открой и распечатай файл", а он бы сказал "тут перехватчик обращений Windows к драйверу жесткого диска требуется".


 
kaif ©   (2008-04-03 23:11) [11]

Ну вот. Докачал 12 М. Запустил. Говорит - файл испорчен. :(


 
DVM ©   (2008-04-03 23:14) [12]


> Неужели это самый короткий путь для PHP-ста, который хочет
> узнать самую первейшую на свете вещь - исходный HTTP-запрос?
>

$HTTP_RAW_POST_DATA  - поищи по этому слову инфу


 
kaif ©   (2008-04-03 23:24) [13]

2 DVM ©   (03.04.08 23:14) [12]
Спасибо! Уже теплее. :)


 
Reindeer Moss Eater ©   (2008-04-03 23:50) [14]

простой локальный самописный за пять минут http сервер с логированием все бы показал.


 
kaif ©   (2008-04-04 14:18) [15]

Я не умею писать HTTP-сервер за пять минут, а разбираться в этом мне нужно несколько больше, чем 5 минут. Тем более, что у меня есть HTTP-сервер ASP.NET, умеющий сохранять тело запроса. Так что писать HTTP-сервер мне и незачем в данной конкретной ситуации.
В конце-концов удалось разобраться. При помощи быстро сварганенной страницы на ASP.NET с компонентом UploadFile. Выяснилось, что после байтового потока отправляемого файла вставляется еще один разделитель, который не был упомянут в той статье (по JAVA), на которую я опирался, делая тело запроса руками. С парой лишних символов "-" в конце. И еще один возврат каретки. Так заработало.
Всем спасибо.


 
Reindeer Moss Eater ©   (2008-04-04 14:26) [16]

readln в цикле, пока не придет пустая строка.
смотрим, если  в принятом поле контент ленс, и если есть, читаем буфер указанного размера.
вот и все.



Страницы: 1 вся ветка

Текущий архив: 2008.05.18;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.019 c
2-1208676738
Mag
2008-04-20 11:32
2008.05.18
Редактирование текстового файла. Замена части текста на другой.


15-1207325337
tesseract
2008-04-04 20:08
2008.05.18
IPhone vs другие


15-1207322240
PZ
2008-04-04 19:17
2008.05.18
Microsoft провалил продажи Windows Vista


2-1208623339
Alexey
2008-04-19 20:42
2008.05.18
Как свернуть форму


2-1208322639
Sw
2008-04-16 09:10
2008.05.18
SQL запрос