Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Сеть > Данные формы вручную через сокеты


Автор: TerminalSoul 19.1.2010, 19:36
Вобщем есть проблема - нужно отправлять различные данные из формы, но не через браузер, а вручную создавать пакет отправлять его к цели. Почитал про способ передачи multipart и всё вроде бы должно быть ничего, но почему-то не работает, вот отчаялся и пришёл сюда:
вот такой вот код формирования пакета, когда посылаю выдаёт ответ: 200\ОК, а потом выдаёт Method Not Implemented. Такое ощущение, что вторую часть пакета, где собственно пост данные, она воспринимает как новый запрос.
Код

$packet1="--Asrf456BGe4h\r\n";
          $packet1.="Content-Disposition: form-data; name='data'\r\n";
          $packet1.="\r\n";
          $packet1.=$this->data."\r\n";
          $packet1.="--Asrf456BGe4h--\r\n";
          $packet="POST /test123.php HTTP/1.1\r\n";
          $packet.="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
          $packet.="Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
          $packet.="Accept-Encoding: gzip,deflate\r\n";
          $packet.="Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n";
          $packet.="Connection: keep-alive\r\n";
          $packet.="Content-Type: multipart/form-data; boundary=Asrf456BGe4h\r\n";
          $packet.="Cookie: ".$this->implode_cookies()."\r\n";
          $packet.="Host: 127.0.0.1\r\n";
         // $packet.="Keep-Alive: 300\r\n";
          $packet.="Content-Length: ".sizeof($packet1)."\r\n";
          $packet.="\r\n"; 
          $packet.=$packet1;
          return $packet;

Отправка:
Код

$fh=fsockopen("127.0.0.1",80);
  fputs($fh,$obj->form_packet());

P.S. проблема закрыта я дибил. Функцию sizeof здесь юзать нельзя нужен strlen()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)