
03.06.2009, 11:52
|
|
Новичок
Регистрация: 29.01.2009
Сообщений: 23
С нами:
9094925
Репутация:
16
|
|
Код:
function post_file ($url, $avars) {
$parsed_url = parse_url($url);
$host = $parsed_url['host'];
$path = $parsed_url['path'];
if($avars['type'] == 'content'){
$file .= "filename=".$avars['filename']."&content=".$avars['value'];
}
if($avars['type'] == 'link'){
$filetemp = file_get_contents($avars['value']);
$filetopost = base64_encode($filetemp);
$file .= "filename=".$avars['filename']."&content=".$filetopost;
}
if(isset($parsed_url['query'])) {
$query = $parsed_url['query'];
}
$socket = @fsockopen($host, 80, $errno, $errstr, $this->timeout) or die ("Не могу открыть сокет :".$errstr."(".$errno.")");
if ( isset($query) ) {
$out = "POST ".$path."?".$query." HTTP/1.1\r\n";
} else {
$out = "POST ".$path." HTTP/1.1\r\n";
}
$out .= "Host: ".$host."\r\n";
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= "Content-Length: ".strlen($file)."\r\n";
if(!isset($headers['Connection'])) {
$out .= "Connection: Close\r\n";
}
$out .= "\r\n";
$out .= $file;
fwrite($socket, $out);
while (!feof($socket)) {
$in .= fgets($socket, 128);
}
fclose($socket);
return $in;
}
post_file ($url ( string ), $avars ( array ), $headers ( array )) - запрос типа POST который в себе еще передает файл, $avars - данные запроса ( без них функция не выполниться ) ( должны идти массивом следущего типа :
$avars['type'] => 'link' ( тип - ссылка на локальный файл для загрузки ( так как реализованно посредством функции file_get_contents можно попробовать и удаленные файлы)) || 'content' ( тип - содержимое )
$avars['value'] => 'value' ( если тип - ссылка тогда здесь должна быть ссылка на файл, если же content то содержимое файла закодированое посредством функции base64_encode )
$avars['filename'] => 'filename' ( имя файла в запросе )
), возвращает ответ сервера на запрос.
|
|
|