upload файла на kmx.ru при помощи socket

<?php
/*
*Upload файла на kmx.ru через socket
*автор: nc_soft
*28.08.07
*/

/*для uploada нам потребуется изучить структуру форм и заголовки по адресу
http://wap.kmx.ru/upload
после изучения страницы можно заметить, что чтобы попасть на форму с аплоадом,
необходимо всего лишь послать такую куку
uploadkey=284891272; expires=Thu, 31-Dec-2009 21:00:00 GMT
(где цифры как вы правильно догадались это секретный ключ), далее изучаем саму форму и
приходим к выводу, что необходимо послать следующие данные:
dir (имя директории в которую сохранить)
file1 (первый файл)
file2 (второй файл) итд*/

//имя директории в которую грузим
$dir='/';

//имя пересылаемого файла
$file_name = 'example.jar';

//MIME тип пересылаемого файла
$application = 'application/java-archive';

//запись файла в переменную
$bufer = file_get_contents('./example.jar');

//имя поля формы для файла
$form_file_name = 'file1';

//генерация разделителя
$boundary = md5(time());

//формируем POST данные
$post_str = '';
$post_str .= "--$boundary\r\n";
$post_str .="Content-Disposition: form-data; name=\"dir\"\r\n\r\n"; 
$post_str .= "$dir\r\n";

//формируем отправку файла
$post_str .= "--$boundary\r\n";
$post_str .= "Content-Disposition: form-data; name=\"$form_file_name\"; filename=\"$file_name\"\r\n";
$post_str .= "Content-Type: $application\r\n";
$post_str .= "Content-Transfer-Encoding: binary\r\n\r\n";
$post_str .= "$bufer\r\n";
$post_str .= "--$boundary--\r\n";


//сайт
$host='wap.kmx.ru';

//обработчик формы
$path='/upload';

//открываем сокет
$fp = @fsockopen("tcp://".$host, 80, $errno, $errstr, 10);
if (!$fp)
{
    die($errstr.':'.$errno);
}
else
{
    $header  = "POST $path HTTP/1.0\r\n";
    $header .= "Host: $host\r\n";
    
    //подделываем  кукис
    $header .= "Cookie: uploadkey=284891272; expires=Thu, 31-Dec-2009 21:00:00 GMT\r\n";
    
    //указываем что это пост данные с вложенным файлом
    $header .= "Content-Type: multipart/form-data; boundary=$boundary\r\n";
    $header .= "Content-Length: ".strlen($post_str)."\r\n\r\n";

    //посылаем данные
    fwrite($fp, $header.$post_str);

    $headers='';

    //читаем заголовки
    while ($str = trim(fgets($fp, 4096)))
    $headers .= "$str\n";

    $body='';

    //читаем ответ
    while (!feof($fp))
    $body.= fgets($fp, 4096);

    //закрываем сокет
    fclose($fp);
}

//выводим данные
echo $headers.'<hr/>'.$body;

?>