PHP Classes
elePHPant
Icontem

File: cHTTP.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Tiago Serafim  >  cHTTP  >  cHTTP.php  >  Download  
File: cHTTP.php
Role: Class source
Content type: text/plain
Description: cHTTP
Class: cHTTP
GET, POST and Multipart uploads to an HTTP server
Author: By
Last change: Updates to work right with cHTTPMultiPart
Date: 12 years ago
Size: 5,159 bytes
 

Contents

Class file image Download
<?
/************************************************************
    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