Location: PHPKode > scripts > cHTTP > chttp/cHTTP.php
<?
/************************************************************	
	GET and POSTS REQUESTS TO HTTP SERVER
	CREATED BY: Tiago Serafim
	DATE      : 04/05/2003
	EMAIL     : TIAGO at HEX dot COM dot BR
************************************************************/
/*
	Date		Update


*/

	class cHTTP {
		
		var $referer;
		var $postStr;
		
		var $retStr;
		var $theData;

		var $theCookies;



		function clsHTTP(){
		

		
		}
		

		function setReferer($sRef){
			$this->referer = $sRef;
		}


		function addField($sName, $sValue){
			$this->postStr .= $sName . "=" . $this->HTMLEncode($sValue) . "&";
		}
		function clearFields(){
			$this->postStr = "";
		}
		


		function checkCookies(){
			$cookies = explode("Set-Cookie:", $this->theData );
			$i = 0;
			if ( count($cookies)-1 > 0 ) {
				while(list($foo, $theCookie) = each($cookies)) {
					if (! ($i == 0) ) {
						@list($theCookie, $foo) = explode(";", $theCookie);
						list($cookieName, $cookieValue) = explode("=", $theCookie);
						@list($cookieValue, $foo) = explode("\r\n", $cookieValue); 
						$this->setCookies(trim($cookieName), trim($cookieValue));
					}
					$i++;
				}
			}

		}

		function setCookies($sName, $sValue){

			$total = count(explode($sName, $this->theCookies));

			if ( $total > 1 ) {
				list($foo, $cValue)  = explode($sName, $this->theCookies);
				list($cValue, $foo)  = explode(";", $cValue);
				
				$this->theCookies = str_replace($sName . $cValue . ";", "", $this->theCookies);
			}
			$this->theCookies .= $sName . "=" . $this->HTMLEncode($sValue) . ";"; 
		}

		function getCookies($sName){
			list($foo, $cValue)  = explode($sName, $this->theCookies);
			list($cValue, $foo)  = explode(";", $cValue);
				return substr($cValue, 1);
		}
		
		function clearCookies(){
			$this->theCookies = "";
		}


		function getContent(){
			list($header, $foo)  = explode("\r\n\r\n", $this->theData);
			list($foo, $content) = explode($header, $this->theData);
				return substr($content, 4);
		}

		function getHeaders(){
			list($header, $foo)  = explode("\r\n\r\n", $this->theData);
			list($foo, $content) = explode($header, $this->theData);
				return $header;
		}

		function getHeader($sName){
			list($foo, $part1) = explode($sName . ":", $this->theData);
			list($sVal, $foo)  = explode("\r\n", $part1);
				return trim($sVal);
		}


		function postPage($sURL){
			
			$sInfo = $this->parseRequest($sURL);
				$request = $sInfo['request'];
				$host    = $sInfo['host'];
				$port    = $sInfo['port'];

			$this->postStr = substr($this->postStr, 0, -1); //retira a ultima &

			$httpHeader  = "POST $request HTTP/1.0\r\n";
			$httpHeader .= "Host: $host\r\n";
			$httpHeader .= "Connection: Close\r\n";
			$httpHeader .= "User-Agent: cHTTP/0.1b (incompatible; M$ sucks; Open Source Rulez)\r\n";
			$httpHeader .= "Content-type: application/x-www-form-urlencoded\r\n";
			$httpHeader .= "Content-length: " . strlen($this->postStr) . "\r\n";
			$httpHeader .= "Referer: " . $this->referer . "\r\n";

				$httpHeader .= "Cookie: " . $this->theCookies . "\r\n";

			$httpHeader .= "\r\n";
			$httpHeader .= $this->postStr;
			$httpHeader .= "\r\n\r\n";
				
			$this->theData = $this->downloadData($host, $port, $httpHeader); // envia os dados para o servidor
			
			$this->checkCookies();

		}

		function getPage($sURL){
			
			$sInfo = $this->parseRequest($sURL);
				$request = $sInfo['request'];
				$host    = $sInfo['host'];
				$port    = $sInfo['port'];

			$httpHeader  = "GET $request HTTP/1.0\r\n";
			$httpHeader .= "Host: $host\r\n";
			$httpHeader .= "Connection: Close\r\n";
			$httpHeader .= "User-Agent: cHTTP/0.1b (incompatible; M$ sucks; Open Source Rulez)\r\n";
			$httpHeader .= "Referer: " . $this->referer . "\r\n";
			
				$httpHeader .= "Cookie: " . substr($this->theCookies, 0, -1) . "\r\n";

			$httpHeader .= "\r\n\r\n";
			
			$this->theData = $this->downloadData($host, $port, $httpHeader); // envia os dados para o servidor

		}
		

		
		function parseRequest($sURL){

			list($protocol, $sURL) = explode('://', $sURL); // separa o resto
			list($host, $foo)      = explode('/',   $sURL); // pega o host
			list($foo, $request)   = explode($host, $sURL); // pega o request
			@list($host, $port)     = explode(':',   $host); // pega a porta
				
				if ( strlen($request) == 0 ) $request = "/";
				if ( strlen($port) == 0 )    $port = "80";
			
			$sInfo = Array();
			$sInfo["host"]     = $host;
			$sInfo["port"]     = $port;
			$sInfo["protocol"] = $protocol;
			$sInfo["request"]  = $request;

				return $sInfo;

		}

                /* changed 06/30/2003 */
		function HTMLEncode($sHTML){
			$sHTML = urlencode($sHTML);
				return $sHTML;
		}

		function downloadData($host, $port, $httpHeader){
			$fp = fsockopen($host, $port);
			$retStr = "";
			if ( $fp ) {
				fwrite($fp, $httpHeader);
					while(! feof($fp)) {
						$retStr .= fread($fp, 1024);
				    }
				fclose($fp);
			}
			return $retStr;
		}




	} // class

Return current item: cHTTP