Реклама на сайте Advertise with us

Файл аплоад - boundary. Need help! (php)

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 05/04/07 в 15:48       Ответить с цитатойцитата 

Сабдж собственно.
Пытаюсь отправить файлы пхп скриптом. Неполучается.
Может кто чего подскажет?

Вот что отправляет браузер:
Код:
POST /cgi-bin/user_uploads.cgi HTTP/1.1
User-Agent: Opera/9.10 (Windows NT 5.1; U; ru)
Host: host.com
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru,en;q=0.9
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: gzip, deflate
Referer: http://host.com/cgi-bin/user_uploads.cgi
Cookie: hfuser=tabl||checked|||
Cookie2: $Version=1
TE: deflate, gzip, chunked, identity, trailers
Content-Length: 21270
Content-Type: multipart/form-data; boundary=----------GcH7GgPSnXRcsyciRUqJFA
Connection: keep-alive
Posting 21270 bytes...
------------GcH7GgPSnXRcsyciRUqJFA
Content-Disposition: form-data; name="account"

tabl
------------GcH7GgPSnXRcsyciRUqJFA
Content-Disposition: form-data; name="session"

YsEzUbBRdW5QNWH
------------GcH7GgPSnXRcsyciRUqJFA
Content-Disposition: form-data; name="dir"


------------GcH7GgPSnXRcsyciRUqJFA
Content-Disposition: form-data; name="file1"; filename="file1.html"
Content-Type: text/html

<html> бла бла бла бла тело файла </html>
------------GcH7GgPSnXRcsyciRUqJFA
Content-Disposition: form-data; name="file2"; filename=""
.......................
.......................
.......................
.......................
------------GcH7GgPSnXRcsyciRUqJFA
Content-Disposition: form-data; name="upload"

Upload these files
------------GcH7GgPSnXRcsyciRUqJFA--


а вот что отправляет мой скрипт

Код:
POST /cgi-bin/user_uploads.cgi HTTP/1.1
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Encoding: deflate
TE: deflate
Accept-Language: en-us
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Cookie: hfuser=tabl||checked|||
Cookie2: $Version=1
Content-Type: multipart/form-data; boundary=------------dYoBnRd189g2BFufzLmOdjSh
Connection: Keep-Alive
Host: host.com
Referer: http://host.com/cgi-bin/user_uploads.cgi
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Content-length: 143489

------------dYoBnRd189g2BFufzLmOdjSh
Content-Disposition: form-data; name="account"

tabl
------------dYoBnRd189g2BFufzLmOdjSh
Content-Disposition: form-data; name="session"

xvfgNfjkTC1exxA
------------dYoBnRd189g2BFufzLmOdjSh
Content-Disposition: form-data; name="dir"


------------dYoBnRd189g2BFufzLmOdjSh
Content-Disposition: form-data; name="file1"; filename="file1.html"
Content-Type: text/html

<html> бла бла бла бла тело файла </html>
------------dYoBnRd189g2BFufzLmOdjSh
.......................
.......................
.......................
.......................
Content-Disposition: form-data; name="upload"

Upload these files
------------dYoBnRd189g2BFufzLmOdjSh--


Все одинаково почти - невижу я через сниффер ничего такого чего небыло бы у меня.
Может я просто в шары уже долблюсь? И не вижу очевидного.
Или просто по незнанию делаю где то грубую ошибку?

p.s. соответственно в первом случае заливка проходит нормально
во втором хрен

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 05/04/07 в 16:39       Ответить с цитатойцитата 

Что значит "пытаюсь отправить" ?
Куда отправить на сервер,клиенту?
Показывай скрипт.

p.s.
50% ответа - это правильно заданный вопрос...

6
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 05/04/07 в 17:07       Ответить с цитатойцитата 

POST запросом отправить на сервер...
Скрипт самый обычный, PostData - это тот заголовок что раньше запостил...
Код:

$out  = "POST ".$Path." HTTP/1.1\r\n";
$out .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n";
$out .= "Accept-Encoding: deflate\r\n";
$out .= "TE: deflate\r\n";
$out .= "Accept-Language: en-us\r\n";
$out .= "Cache-Control: no-cache\r\n";
$out .= "Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\n";
if ($Cookie) {$out .= "Cookie: ".$Cookie."\r\n";}
if ($Cookie2) {$out .= "Cookie2: ".$Cookie2."\r\n";}
$out .= "Content-Type: multipart/form-data; boundary=------------".$boundary."\r\n";
$out .= "Connection: Keep-Alive \r\n";
//$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Host: ".$info['host']."\r\n";
if ($Referer) {$out .= "Referer: $PostUrl\r\n";}
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n";
$out .= "Content-length: ".strlen($PostData)."\r\n\r\n".$PostData; 
@$socket = fsockopen($info['host'], $info['port'], $errno, $errstr,10);
$Page = "";
if ($errno !== 0 | !$socket)
{echo "Connect failed! ".$url." ".$errno."\n"; }
else
{
         fputs ($socket, $out);
         while (!feof($socket))
        {
           $Page.=fgets($socket);
         }
         fclose($socket);
}

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 



С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987

Ссылка на сообщениеДобавлено: 05/04/07 в 18:51       Ответить с цитатойцитата 

На первый взляд, у тебя отсутствует еще один перевод строки после Content-length

6
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 06/04/07 в 02:04       Ответить с цитатойцитата 



+1

Lamagro:заголовок запроса от тела запроса отделяется 2-мя переводами каретки.

6
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 06/04/07 в 05:06       Ответить с цитатойцитата 

Код:
$out .= "Content-length: ".strlen($PostData)."\r\n\r\n".$PostData;
этого разве недостаточно?
если бы неправильно было я так понимаю - простая передача полей точно так же бы не работала - все работает - кроме боундари

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 



С нами с 19.02.03
Сообщения: 1284
Рейтинг: 354

Ссылка на сообщениеДобавлено: 06/04/07 в 05:20       Ответить с цитатойцитата 

Код:
$out .= "Content-length: ".strlen($PostData)."\r\n\r\n".$PostData;

а зачем эти символы? всегда использовалось просто \n\n

6
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 06/04/07 в 06:03       Ответить с цитатойцитата 

это я так понимаю что бы под виндой тоже работало...
отднако вопрос остался

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 



С нами с 19.02.03
Сообщения: 1284
Рейтинг: 354

Ссылка на сообщениеДобавлено: 06/04/07 в 09:38       Ответить с цитатойцитата 


первый раз такое слышу...
так ты пробывал так \n\n или не пробывал?

вообще к чему приводит работа скрипта? ченить из данных приходит вообще?

6
 



С нами с 19.02.03
Сообщения: 1284
Рейтинг: 354

Ссылка на сообщениеДобавлено: 06/04/07 в 09:51       Ответить с цитатойцитата 

погоди давай попорядку
во первых без \r
Код:
$out  = "POST ".$Path." HTTP/1.1\n";
$out .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\n";
$out .= "Accept-Encoding: deflate\n";
$out .= "TE: deflate\n";
$out .= "Accept-Language: en-us\n";
$out .= "Cache-Control: no-cache\n";
$out .= "Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\n";
if ($Cookie) {$out .= "Cookie: ".$Cookie."\n";}
if ($Cookie2) {$out .= "Cookie2: ".$Cookie2."\n";}
$out .= "Content-Type: multipart/form-data; boundary=------------".$boundary."\n";
$out .= "Connection: Keep-Alive \n";
//$out .= "Content-type: application/x-www-form-urlencoded\n";
$out .= "Host: ".$info['host']."\n";
if ($Referer) {$out .= "Referer: $PostUrl\n";}
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\n";
$out .= "Content-length: ".strlen($PostData)."\n\n".$PostData; 
@$socket = fsockopen($info['host'], $info['port'], $errno, $errstr,10);
$Page = "";
if ($errno !== 0 | !$socket)
{echo "Connect failed! ".$url." ".$errno."\n"; }
else
{
         fputs ($socket, $out);
         while (!feof($socket))
        {
           $Page.=fgets($socket);
         }
         fclose($socket);
}


во вторых что всетаки $PostData???
Цитата:
PostData - это тот заголовок что раньше запостил...

из твоих слов я понимаю так что $PostData это:

Код:
POST /cgi-bin/user_uploads.cgi HTTP/1.1
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Encoding: deflate
TE: deflate
Accept-Language: en-us
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Cookie: hfuser=tabl||checked|||
Cookie2: $Version=1
Content-Type: multipart/form-data; boundary=------------dYoBnRd189g2BFufzLmOdjSh
Connection: Keep-Alive
Host: host.com
Referer: http://host.com/cgi-bin/user_uploads.cgi
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Content-length: 143489

------------dYoBnRd189g2BFufzLmOdjSh
Content-Disposition: form-data; name="account"

tabl
------------dYoBnRd189g2BFufzLmOdjSh
Content-Disposition: form-data; name="session"

xvfgNfjkTC1exxA
------------dYoBnRd189g2BFufzLmOdjSh
Content-Disposition: form-data; name="dir"


------------dYoBnRd189g2BFufzLmOdjSh
Content-Disposition: form-data; name="file1"; filename="file1.html"
Content-Type: text/html

<html> бла бла бла бла тело файла </html>
------------dYoBnRd189g2BFufzLmOdjSh
.......................
.......................
.......................
.......................
Content-Disposition: form-data; name="upload"

Upload these files
------------dYoBnRd189g2BFufzLmOdjSh--

ну тогда неверно... т.к. ты передж этим уже вывел заголовок

6
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 06/04/07 в 10:26       Ответить с цитатойцитата 

я накидал функцию и использовал ее когда надо было запостить.
Все прекрасно работало - проверено не раз
Счас нужно передать данные через мультипарт
Я так понимаю - координально в отправляемых заголовках должен измениться только Content-Type:

Вот так формируется $PostData
Код:
$boundary = generate_password(22);

      $PostData = "------------".$boundary." \n";
        $PostData .= "Content-Disposition: form-data; name=\"account\"\n\n";
        $PostData .= trim($username)."\n";
        $PostData .= "------------".$boundary." \n";
        $PostData .= "Content-Disposition: form-data; name=\"session\"\n\n";
        $PostData .= $SessionID."\n";
        $PostData .= "------------".$boundary." \n";
        $PostData .= "Content-Disposition: form-data; name=\"dir\"\n\n";
        $PostData .= "\n";
        $PostData .= "------------".$boundary." \n";
   
      // $a - массив названий файлов
        foreach ($a as $k => $v)
      {
         $kkk = $k+1;
         $PostData .= "Content-Disposition: form-data; name=\"file".$kkk."\"; filename=\"".$v."\"\n";
           $PostData .= "Content-Type: text/html\n\n"; //Content-type файла
           $PostData .= file_get_contents("./".$Dir."/".$v)."\r\n"; //Получаем содержимое файла
           $PostData .= "------------".$boundary."\n";
      }
      
      $PostData .= "Content-Disposition: form-data; name=\"upload\"\n";
        $PostData .= "\n";
        $PostData .= " Upload these files \n";
        $PostData .= "------------".$boundary."-- \n";

вот что $PostData содержит после
Код:
------------dYoBnRd189g2BFufzLmOdjSh
Content-Disposition: form-data; name="account"

tabl
------------dYoBnRd189g2BFufzLmOdjSh
Content-Disposition: form-data; name="session"

xvfgNfjkTC1exxA
------------dYoBnRd189g2BFufzLmOdjSh
Content-Disposition: form-data; name="dir"


------------dYoBnRd189g2BFufzLmOdjSh
Content-Disposition: form-data; name="file1"; filename="file1.html"
Content-Type: text/html

<html> бла бла бла бла тело файла </html>
------------dYoBnRd189g2BFufzLmOdjSh
.......................
.......................
.......................
.......................
Content-Disposition: form-data; name="upload"

Upload these files
------------dYoBnRd189g2BFufzLmOdjSh--

[/code]


без \r тоже пробывал - пофиг

Последний раз редактировалось: Lamagro (09/04/07 в 11:13), всего редактировалось 1 раз

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 06/04/07 в 10:28       Ответить с цитатойцитата 

так что все передается как надо - один в один как браузер (ну почти icon_smile.gif ) с одним лишь отличием - файлы незагружаются

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 06/04/07 в 11:46       Ответить с цитатойцитата 

bleed писал:
Код:
$out .= "Content-length: ".strlen($PostData)."\r\n\r\n".$PostData;

а зачем эти символы? всегда использовалось просто \n\n


для совместимости.

6
 



С нами с 19.02.03
Сообщения: 1284
Рейтинг: 354

Ссылка на сообщениеДобавлено: 06/04/07 в 11:54       Ответить с цитатойцитата 

почитал про http, да ты был прав \r\n реомендуют... хотя раньше я писал на perl и никогда такого не видел нигде.

как я понял у тебя все параметры приходять коректно, т.е. скриптом ты их пролучаешь и последний параметр name="upload" передается и обробатывается нормально, так? только массив $_FILES пустой? если так тоя сдаюсь icon_smile.gif

6
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 06/04/07 в 12:59       Ответить с цитатойцитата 

icon_smile.gif еех - яб тож сдался - немогу

Нашел какую-то драную гэсту - попробывать - может получится отследить проблему - в ней просто передается сообщение, но отправка идет через мультипарт - и хрен даже туда незапостилось icon_sad.gif
Хотя все точно так же полностью совпадает - сообщения нет.

пойду еще где нибудь поспрашаю...

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 06/04/07 в 13:51       Ответить с цитатойцитата 

Ты сделал то что я написал тебе выше?

0
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 06/04/07 в 14:36       Ответить с цитатойцитата 

xreload писал:
Lamagro:заголовок запроса от тела запроса отделяется 2-мя переводами каретки.

это?
дык там же и так два перевода каретки - раз нет?
Код:
$out .= "Content-length: ".strlen($PostData)."\r\n\r\n".$PostData;

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 09/04/07 в 09:42       Ответить с цитатойцитата 

проехали

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 



С нами с 01.03.06
Сообщения: 629
Рейтинг: 620

Ссылка на сообщениеДобавлено: 09/04/07 в 11:00       Ответить с цитатойцитата 

сразу скажу - не разбирался глубоко в вашем коде - может еще где лаги есть (если быстро писать, то с боундари легко напутать)... но имхо - вот так не стоило...
Код:

$PostData .= file_get_contents("./".$Dir."/".$v)."\r\n"; //Получаем содержимое файла


я например при отправке атачей в писмах - использую следующее:
тип контента
Код:

"Content-Transfer-Encoding: base64\n";

а содержимое файла -
Код:

= chunk_split(base64_encode(file_get_contents($attfile)));


на прямую (без коверканья base64) файл передавать можно - но полюбому необходимо какие-то манипуляции с ним произвести.

6
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 09/04/07 в 11:10       Ответить с цитатойцитата 

Всем присутствовавшим спасибо. Всех оценил
Вопрос решен!
Подвело невнимание к мелочам.
Нужно вот так:
Код:

$boundary = "------------".generate_password(22);

$PostData .= "--".$boundary.\n;
$PostData .= "Content-Disposition: form-data; name=\"username\"".\n\n;
$PostData .= trim($username).\n;
$PostData .= "--".$boundary.\n\n;
ну и так далее...

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 09/04/07 в 11:11       Ответить с цитатойцитата 

Heavy писал:
на прямую (без коверканья base64) файл передавать можно - но полюбому необходимо какие-то манипуляции с ним произвести.

кстати файл передался просто так:
Код:
$PostData .= file_get_contents("./".$Dir."/".$v).DCRLF;

так что вполне возможно работать и без преобразования .

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »