<?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; ?>