Главная страница О Web-студии Разработка сайтов Интернет-реклама CD-презентации 3D-графика Программное обеспечение
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создание сайтов. Авторы: Кузнецов М.В., Симдянов И.В. Головоломки на PHP для хакера (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры . Авторы: Кузнецов М.В., Симдянов И.В. PHP. Народные советы. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование: ступени карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Security & Cracking Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
Консультации от известных специалистов и авторов многих книг

Информационный портал
«SoftTime-INFO»


Примеры скриптов на PHP

Вернуться в примеры скриптов

Скрипт, отправляющий файлы методом POST


Скрипт передачи файлов методом POST предоставлен Арсеньевым Алексеем (больше известным на нашем форуме как JIEXA).

<?
# (c) Арсеньев Алексей(php-jiexa@mail.ru) & Vyrus
# $host - Удаленный хост
# $port - Порт на удалённом хосте
# $path - Путь до страницы, которая принимает файл
# $filePath - Путь до файла, который отсылаем
# $fileField - Имя поля file на удаленном хосте
# $fields - Дополнительные поля. Пример array("email" => "php-jiexa@mail.ru");

function sendFile($host$port="80"$path$filePath$fileName$fileField$fields = array())
{
  define("CRLF""\r\n");
  define("DCRLF"CRLF.CRLF);

  $boundary "---------------------".substr(md5(rand(0,32000)),0,10);

  $fieldsData "";

  if(count($fields) > "0"):
  foreach($fields as $field => $value)
  {
    $fieldsData .=  "--".$boundary.CRLF;
    $fieldsData .=  "Content-Disposition: form-data; name=\"".$field."\"".DCRLF;
    $fieldsData .=  urlencode($value).CRLF;
  }
  endif;

  $fileHeaders "--".$boundary.CRLF;
  $fileHeaders .= "Content-Disposition: form-data; name=\"".$fileField."\"; filename=\"".$fileName."\"".CRLF;
  $fileHeaders .= "Content-Type: ".mime_content_type($filePath).DCRLF;
  $fileHeadersTail CRLF."--".$boundary."--".CRLF;

  $filesize filesize($filePath);
  $contentLength strlen($fieldsData) + strlen($fileHeaders) + $filesize strlen($fileHeadersTail);

  $headers  "POST $path HTTP/1.0".CRLF;
  $headers .= "Host: ".$host.CRLF;
  $headers .= "Referer: ".$host.CRLF;
  $headers .= "Content-type: multipart/form-data, boundary=".$boundary.CRLF;
  $headers .= "Content-length: ".$contentLength.DCRLF;
  $headers .= $fieldsData;
  $headers .= $fileHeaders;

  if(!$fp fsockopen($host$port)) return false;
  fputs($fp$headers);

  $fp2 fopen($filePath"rb");

  while(!feof($fp2)) fputs($fpfgets($fp21024*100));

  fclose($fp2);

  fputs($fp$fileHeadersTail);

  $serverResponse "";
  while(!feof($fp)) $serverResponse .= fgets($fp4096);
  fclose($fp);

  return $serverResponse;
}
?>

Передача данных методом POST, является интереснейшей задачей: часто требуется подделка имени пользовательского агента (USER_AGENT), реферера (адреса предыдущей страницы), cookie и т.п. Вот ещё несколько ссылок на темы форума, которые демонстрируют различные приёмы передачи данных методом POST без использования HTML-форм
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1879
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8931
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=9050
http://www.softtime.ru/forum/read.php?id_forum=2&id_theme=12734

 
  Rambler's Top100 Яндекс.Метрика Яндекс цитирования