Тема: POST и headers
Показать сообщение отдельно

  #6  
Старый 03.06.2009, 11:52
Dr.TRO
Новичок
Регистрация: 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' ( имя файла в запросе )
), возвращает ответ сервера на запрос.
 
Ответить с цитированием