Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

php용 http socket 연결 함수

인터넷상에서 업어온 코드로 trackback전송 php(:12) 모듈 제작에 사용했다.
httpSocketConnection($host, $method, $path, $data)
{
	global $Db;
	$method = strtoupper($method);
	if ($method == "GET")
	{
		$path.= '?'.$data;
	}
	$filePointer = fsockopen($host, 80, $errorNumber, $errorString);
	if (!$filePointer)
	{
		throw new Exception("Chyba spojeni $errorNumber $errorString");
	}
	$requestHeader = $method." ".$path."	HTTP/1.1\r\n";
	$requestHeader.= "Host: ".$host."\r\n";
	$requestHeader.= "User-Agent:			Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
	$requestHeader.= "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n";
	if ($method == "POST")
	{
		$requestHeader.= "Content-Length: ".strlen($data)."\r\n";
	}
	$requestHeader.= "Connection: close\r\n\r\n";
	if ($method == "POST")
	{
		$requestHeader.= $data;
	}
	fwrite($filePointer, $requestHeader);
	$responseHeader = '';
	$responseContent = '';
	do
	{
		$responseHeader.= fread($filePointer, 1);
	}
	while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader));
	if (!strstr($responseHeader, "Transfer-Encoding: chunked"))
	{
		while (!feof($filePointer))
		{
			$responseContent.= fgets($filePointer, 128);
		}
	}
	else
	{
		while ($chunk_length = hexdec(fgets($filePointer)))
		{
			$responseContentChunk = '';
			$read_length = 0;
			while ($read_length < $chunk_length)
			{
				$responseContentChunk .= fread($filePointer, $chunk_length - $read_length);
				$read_length = strlen($responseContentChunk);
			}
			$responseContent.= $responseContentChunk;
			fgets($filePointer);
		}
	}
	return chop($responseContent);
}