Public Member Functions | Data Fields

Snoopy Class Reference

Public Member Functions

 fetch ($URI)
 _striplinks ($document)
 _stripform ($document)
 _striptext ($document)
 _expandlinks ($links, $URI)
 _httprequest ($url, $fp, $URI, $http_method, $content_type="", $body="")
 _httpsrequest ($url, $URI, $http_method, $content_type="", $body="")
 setcookies ()
 _check_timeout ($fp)
 _connect (&$fp)
 _disconnect ($fp)
 _prepare_post_body ($formvars, $formfiles)

Data Fields

 $host = "www.php.net"
 $port = 80
 $proxy_host = ""
 $proxy_port = ""
 $agent = "Snoopy v1.0"
 $referer = ""
 $cookies = array()
 $rawheaders = array()
 $maxredirs = 5
 $lastredirectaddr = ""
 $offsiteok = true
 $maxframes = 0
 $expandlinks = true
 $passcookies = true
 $user = ""
 $pass = ""
 $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"
 $results = ""
 $error = ""
 $response_code = ""
 $headers = array()
 $maxlength = 500000
 $read_timeout = 0
 $timed_out = false
 $status = 0
 $curl_path = "/usr/bin/curl"
 $use_gzip = true
 $_maxlinelen = 4096
 $_httpmethod = "GET"
 $_httpversion = "HTTP/1.0"
 $_submit_method = "POST"
 $_submit_type = "application/x-www-form-urlencoded"
 $_mime_boundary = ""
 $_redirectaddr = false
 $_redirectdepth = 0
 $_frameurls = array()
 $_framedepth = 0
 $_isproxy = false
 $_fp_timeout = 30

Detailed Description

Definition at line 38 of file Snoopy.class.inc.


Member Function Documentation

_check_timeout ( fp  ) 

Definition at line 753 of file Snoopy.class.inc.

References $fp.

Referenced by _httprequest().

    {
        if ($this->read_timeout > 0) {
            $fp_status = socket_get_status($fp);
            if ($fp_status["timed_out"]) {
                $this->timed_out = true;
                return true;
            }
        }
        return false;
    }

_connect ( &$  fp  ) 

Definition at line 771 of file Snoopy.class.inc.

References $fp, $host, $port, error, host, and status.

Referenced by fetch().

    {
        if(!empty($this->proxy_host) && !empty($this->proxy_port))
            {
                $this->_isproxy = true;
                $host = $this->proxy_host;
                $port = $this->proxy_port;
            }
        else
        {
            $host = $this->host;
            $port = $this->port;
        }
    
        $this->status = 0;
        
        if($fp = fsockopen(
                    $host,
                    $port,
                    $errno,
                    $errstr,
                    $this->_fp_timeout
                    ))
        {
            // socket connection succeeded

            return true;
        }
        else
        {
            // socket connection failed
            $this->status = $errno;
            switch($errno)
            {
                case -3:
                    $this->error="socket creation failed (-3)";
                case -4:
                    $this->error="dns lookup failure (-4)";
                case -5:
                    $this->error="connection refused or timed out (-5)";
                default:
                    $this->error="connection failed (".$errno.")";
            }
            return false;
        }
    }

_disconnect ( fp  ) 

Definition at line 823 of file Snoopy.class.inc.

References $fp.

Referenced by fetch().

    {
        return(fclose($fp));
    }

_expandlinks ( links,
URI 
)

Definition at line 373 of file Snoopy.class.inc.

References host.

Referenced by _httprequest(), and _httpsrequest().

    {
        
        preg_match("/^[^\?]+/",$URI,$match);

        $match = preg_replace("|/[^\/\.]+\.[^\/\.]+$|","",$match[0]);
                
        $search = array(    "|^http://".preg_quote($this->host)."|i",
                            "|^(?!http://)(\/)?(?!mailto:)|i",
                            "|/\./|",
                            "|/[^\/]+/\.\./|"
                        );
                        
        $replace = array(   "",
                            $match."/",
                            "/",
                            "/"
                        );          
                
        $expandedLinks = preg_replace($search,$replace,$links);

        return $expandedLinks;
    }

_httprequest ( url,
fp,
URI,
http_method,
content_type = "",
body = "" 
)

Definition at line 407 of file Snoopy.class.inc.

References $data, $fp, $headers, $results, $status, $url, _check_timeout(), _expandlinks(), count, elseif, host, setcookies(), and status.

Referenced by fetch().

    {
        if($this->passcookies && $this->_redirectaddr)
            $this->setcookies();
            
        $URI_PARTS = parse_url($URI);
        if(empty($url))
            $url = "/";
        $headers = $http_method." ".$url." ".$this->_httpversion."\r\n";        
        if(!empty($this->agent))
            $headers .= "User-Agent: ".$this->agent."\r\n";
        if(!empty($this->host) && !isset($this->rawheaders['Host']))
            $headers .= "Host: ".$this->host."\r\n";
        if(!empty($this->accept))
            $headers .= "Accept: ".$this->accept."\r\n";
        
        if($this->use_gzip) {
            // make sure PHP was built with --with-zlib
            // and we can handle gzipp'ed data
            if ( function_exists(gzinflate) ) {
               $headers .= "Accept-encoding: gzip\r\n";
            }
            else {
               trigger_error(
                "use_gzip is on, but PHP was built without zlib support.".
                "  Requesting file(s) without gzip encoding.", 
                E_USER_NOTICE);
            }
        }
        
        if(!empty($this->referer))
            $headers .= "Referer: ".$this->referer."\r\n";
        if(!empty($this->cookies))
        {           
            if(!is_array($this->cookies))
                $this->cookies = (array)$this->cookies;
    
            reset($this->cookies);
            if ( count($this->cookies) > 0 ) {
                $cookie_headers .= 'Cookie: ';
                foreach ( $this->cookies as $cookieKey => $cookieVal ) {
                $cookie_headers .= $cookieKey."=".urlencode($cookieVal)."; ";
                }
                $headers .= substr($cookie_headers,0,-2) . "\r\n";
            } 
        }
        if(!empty($this->rawheaders))
        {
            if(!is_array($this->rawheaders))
                $this->rawheaders = (array)$this->rawheaders;
            while(list($headerKey,$headerVal) = each($this->rawheaders))
                $headers .= $headerKey.": ".$headerVal."\r\n";
        }
        if(!empty($content_type)) {
            $headers .= "Content-type: $content_type";
            if ($content_type == "multipart/form-data")
                $headers .= "; boundary=".$this->_mime_boundary;
            $headers .= "\r\n";
        }
        if(!empty($body))   
            $headers .= "Content-length: ".strlen($body)."\r\n";
        if(!empty($this->user) || !empty($this->pass))  
            $headers .= "Authorization: BASIC ".base64_encode($this->user.":".$this->pass)."\r\n";

        $headers .= "\r\n";
        
        // set the read timeout if needed
        if ($this->read_timeout > 0)
            socket_set_timeout($fp, $this->read_timeout);
        $this->timed_out = false;
        
        fwrite($fp,$headers.$body,strlen($headers.$body));
        
        $this->_redirectaddr = false;
        unset($this->headers);
        
        // content was returned gzip encoded?
        $is_gzipped = false;
                        
        while($currentHeader = fgets($fp,$this->_maxlinelen))
        {
            if ($this->read_timeout > 0 && $this->_check_timeout($fp))
            {
                $this->status=-100;
                return false;
            }
                
        //  if($currentHeader == "\r\n")
            if(preg_match("/^\r?\n$/", $currentHeader) )
                  break;
                        
            // if a header begins with Location: or URI:, set the redirect
            if(preg_match("/^(Location:|URI:)/i",$currentHeader))
            {
                // get URL portion of the redirect
                preg_match("/^(Location:|URI:)\s+(.*)/",chop($currentHeader),$matches);
                // look for :// in the Location header to see if hostname is included
                if(!preg_match("|\:\/\/|",$matches[2]))
                {
                    // no host in the path, so prepend
                    $this->_redirectaddr = $URI_PARTS["scheme"]."://".$this->host.":".$this->port;
                    // eliminate double slash
                    if(!preg_match("|^/|",$matches[2]))
                            $this->_redirectaddr .= "/".$matches[2];
                    else
                            $this->_redirectaddr .= $matches[2];
                }
                else
                    $this->_redirectaddr = $matches[2];
            }
        
            if(preg_match("|^HTTP/|",$currentHeader))
            {
                if(preg_match("|^HTTP/[^\s]*\s(.*?)\s|",$currentHeader, $status))
                {
                    $this->status= $status[1];
                }               
                $this->response_code = $currentHeader;
            }
            
            if (preg_match("/Content-Encoding: gzip/", $currentHeader) ) {
                $is_gzipped = true;
            }
            
            $this->headers[] = $currentHeader;
        }

        # $results = fread($fp, $this->maxlength);
        $results = "";
        while ( $data = fread($fp, $this->maxlength) ) {
            $results .= $data;
            if (
                strlen($results) > $this->maxlength ) {
                break;
            }
        }
        
        // gunzip
        if ( $is_gzipped ) {
            // per http://www.php.net/manual/en/function.gzencode.php
            $results = substr($results, 10);
            $results = gzinflate($results);
        }
        
        if ($this->read_timeout > 0 && $this->_check_timeout($fp))
        {
            $this->status=-100;
            return false;
        }
        
        // check if there is a a redirect meta tag
        
        if(preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]+URL[\s]*=[\s]*([^\"\']*?)[\"\']?>'i",$results,$match))
        {
            $this->_redirectaddr = $this->_expandlinks($match[1],$URI); 
        }

        // have we hit our frame depth and is there frame src to fetch?
        if(($this->_framedepth < $this->maxframes) && preg_match_all("'<frame\s+.*src[\s]*=[\'\"]?([^\'\">]+)'i",$results,$match))
        {
            $this->results[] = $results;
            for($x=0; $x<count($match[1]); $x++)
                $this->_frameurls[] = $this->_expandlinks($match[1][$x],$URI_PARTS["scheme"]."://".$this->host);
        }
        // have we already fetched framed content?
        elseif(is_array($this->results))
            $this->results[] = $results;
        // no framed content
        else
            $this->results = $results;
        
        return true;
    }

_httpsrequest ( url,
URI,
http_method,
content_type = "",
body = "" 
)

Definition at line 590 of file Snoopy.class.inc.

References $headers, $results, $return, $url, _expandlinks(), count, elseif, error, host, implode, setcookies(), status, and time.

Referenced by fetch().

    {
        if($this->passcookies && $this->_redirectaddr)
            $this->setcookies();

        $headers = array();     
                    
        $URI_PARTS = parse_url($URI);
        if(empty($url))
            $url = "/";
        // GET ... header not needed for curl
        //$headers[] = $http_method." ".$url." ".$this->_httpversion;       
        if(!empty($this->agent))
            $headers[] = "User-Agent: ".$this->agent;
        if(!empty($this->host))
            $headers[] = "Host: ".$this->host;
        if(!empty($this->accept))
            $headers[] = "Accept: ".$this->accept;
        if(!empty($this->referer))
            $headers[] = "Referer: ".$this->referer;
        if(!empty($this->cookies))
        {           
            if(!is_array($this->cookies))
                $this->cookies = (array)$this->cookies;
    
            reset($this->cookies);
            if ( count($this->cookies) > 0 ) {
                $cookie_str = 'Cookie: ';
                foreach ( $this->cookies as $cookieKey => $cookieVal ) {
                $cookie_str .= $cookieKey."=".urlencode($cookieVal)."; ";
                }
                $headers[] = substr($cookie_str,0,-2);
            }
        }
        if(!empty($this->rawheaders))
        {
            if(!is_array($this->rawheaders))
                $this->rawheaders = (array)$this->rawheaders;
            while(list($headerKey,$headerVal) = each($this->rawheaders))
                $headers[] = $headerKey.": ".$headerVal;
        }
        if(!empty($content_type)) {
            if ($content_type == "multipart/form-data")
                $headers[] = "Content-type: $content_type; boundary=".$this->_mime_boundary;
            else
                $headers[] = "Content-type: $content_type";
        }
        if(!empty($body))   
            $headers[] = "Content-length: ".strlen($body);
        if(!empty($this->user) || !empty($this->pass))  
            $headers[] = "Authorization: BASIC ".base64_encode($this->user.":".$this->pass);
            
        for($curr_header = 0; $curr_header < count($headers); $curr_header++) {
            $cmdline_params .= " -H \"".$headers[$curr_header]."\"";
        }
                                         
        if(!empty($body))
            $cmdline_params .= " -d \"$body\"";
        
        if($this->read_timeout > 0)
            $cmdline_params .= " -m ".$this->read_timeout;
        
        $headerfile = uniqid(time());
        
        # accept self-signed certs
        $cmdline_params .= " -k"; 
        exec($this->curl_path." -D \"/tmp/$headerfile\"".escapeshellcmd($cmdline_params)." ".escapeshellcmd($URI),$results,$return);
        
        if($return)
        {
            $this->error = "Error: cURL could not retrieve the document, error $return.";
            return false;
        }
            
            
        $results = implode("\r\n",$results);
        
        $result_headers = file("/tmp/$headerfile");
                        
        $this->_redirectaddr = false;
        unset($this->headers);
                        
        for($currentHeader = 0; $currentHeader < count($result_headers); $currentHeader++)
        {
            
            // if a header begins with Location: or URI:, set the redirect
            if(preg_match("/^(Location: |URI: )/i",$result_headers[$currentHeader]))
            {
                // get URL portion of the redirect
                preg_match("/^(Location: |URI:)(.*)/",chop($result_headers[$currentHeader]),$matches);
                // look for :// in the Location header to see if hostname is included
                if(!preg_match("|\:\/\/|",$matches[2]))
                {
                    // no host in the path, so prepend
                    $this->_redirectaddr = $URI_PARTS["scheme"]."://".$this->host.":".$this->port;
                    // eliminate double slash
                    if(!preg_match("|^/|",$matches[2]))
                            $this->_redirectaddr .= "/".$matches[2];
                    else
                            $this->_redirectaddr .= $matches[2];
                }
                else
                    $this->_redirectaddr = $matches[2];
            }
        
            if(preg_match("|^HTTP/|",$result_headers[$currentHeader]))
            {
                $this->response_code = $result_headers[$currentHeader];
                if(preg_match("|^HTTP/[^\s]*\s(.*?)\s|",$this->response_code, $match))
                {
                $this->status= $match[1];
                        }
            }
            $this->headers[] = $result_headers[$currentHeader];
        }

        // check if there is a a redirect meta tag
        
        if(preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]+URL[\s]*=[\s]*([^\"\']*?)[\"\']?>'i",$results,$match))
        {
            $this->_redirectaddr = $this->_expandlinks($match[1],$URI); 
        }

        // have we hit our frame depth and is there frame src to fetch?
        if(($this->_framedepth < $this->maxframes) && preg_match_all("'<frame\s+.*src[\s]*=[\'\"]?([^\'\">]+)'i",$results,$match))
        {
            $this->results[] = $results;
            for($x=0; $x<count($match[1]); $x++)
                $this->_frameurls[] = $this->_expandlinks($match[1][$x],$URI_PARTS["scheme"]."://".$this->host);
        }
        // have we already fetched framed content?
        elseif(is_array($this->results))
            $this->results[] = $results;
        // no framed content
        else
            $this->results = $results;

        unlink("/tmp/$headerfile");
        
        return true;
    }

_prepare_post_body ( formvars,
formfiles 
)

Definition at line 837 of file Snoopy.class.inc.

References $fp, and count.

    {
        settype($formvars, "array");
        settype($formfiles, "array");

        if (count($formvars) == 0 && count($formfiles) == 0)
            return;
        
        switch ($this->_submit_type) {
            case "application/x-www-form-urlencoded":
                reset($formvars);
                while(list($key,$val) = each($formvars)) {
                    if (is_array($val) || is_object($val)) {
                        while (list($cur_key, $cur_val) = each($val)) {
                            $postdata .= urlencode($key)."[]=".urlencode($cur_val)."&";
                        }
                    } else
                        $postdata .= urlencode($key)."=".urlencode($val)."&";
                }
                break;

            case "multipart/form-data":
                $this->_mime_boundary = "Snoopy".md5(uniqid(microtime()));
                
                reset($formvars);
                while(list($key,$val) = each($formvars)) {
                    if (is_array($val) || is_object($val)) {
                        while (list($cur_key, $cur_val) = each($val)) {
                            $postdata .= "--".$this->_mime_boundary."\r\n";
                            $postdata .= "Content-Disposition: form-data; name=\"$key\[\]\"\r\n\r\n";
                            $postdata .= "$cur_val\r\n";
                        }
                    } else {
                        $postdata .= "--".$this->_mime_boundary."\r\n";
                        $postdata .= "Content-Disposition: form-data; name=\"$key\"\r\n\r\n";
                        $postdata .= "$val\r\n";
                    }
                }
                
                reset($formfiles);
                while (list($field_name, $file_names) = each($formfiles)) {
                    settype($file_names, "array");
                    while (list(, $file_name) = each($file_names)) {
                        if (!is_readable($file_name)) continue;

                        $fp = fopen($file_name, "r");
                        $file_content = fread($fp, filesize($file_name));
                        fclose($fp);
                        $base_name = basename($file_name);

                        $postdata .= "--".$this->_mime_boundary."\r\n";
                        $postdata .= "Content-Disposition: form-data; name=\"$field_name\"; filename=\"$base_name\"\r\n\r\n";
                        $postdata .= "$file_content\r\n";
                    }
                }
                $postdata .= "--".$this->_mime_boundary."--\r\n";
                break;
        }

        return $postdata;
    }

_stripform ( document  ) 

Definition at line 307 of file Snoopy.class.inc.

References implode.

    {   
        preg_match_all("'<\/?(FORM|INPUT|SELECT|TEXTAREA|(OPTION))[^<>]*>(?(2)(.*(?=<\/?(option|select)[^<>]*>[\r\n]*)|(?=[\r\n]*))|(?=[\r\n]*))'Usi",$document,$elements);
        
        // catenate the matches
        $match = implode("\r\n",$elements[0]);
                
        // return the links
        return $match;
    }

_striplinks ( document  ) 

Definition at line 273 of file Snoopy.class.inc.

    {   
        preg_match_all("'<\s*a\s+.*href\s*=\s*          # find <a href=
                        ([\"\'])?                   # find single or double quote
                        (?(1) (.*?)\\1 | ([^\s>]+))     # if quote found, match up to next matching
                                                    # quote, otherwise match up to next space
                        'isx",$document,$links);
                        

        // catenate the non-empty matches from the conditional subpattern

        while(list($key,$val) = each($links[2]))
        {
            if(!empty($val))
                $match[] = $val;
        }               
        
        while(list($key,$val) = each($links[3]))
        {
            if(!empty($val))
                $match[] = $val;
        }       
        
        // return the links
        return $match;
    }

_striptext ( document  ) 

Definition at line 327 of file Snoopy.class.inc.

References $text.

    {
        
        // I didn't use preg eval (//e) since that is only available in PHP 4.0.
        // so, list your entities one by one here. I included some of the
        // more common ones.
                                
        $search = array("'<script[^>]*?>.*?</script>'si",   // strip out javascript
                        "'<[\/\!]*?[^<>]*?>'si",            // strip out html tags
                        "'([\r\n])[\s]+'",                  // strip out white space
                        "'&(quote|#34);'i",                 // replace html entities
                        "'&(amp|#38);'i",
                        "'&(lt|#60);'i",
                        "'&(gt|#62);'i",
                        "'&(nbsp|#160);'i",
                        "'&(iexcl|#161);'i",
                        "'&(cent|#162);'i",
                        "'&(pound|#163);'i",
                        "'&(copy|#169);'i"
                        );              
        $replace = array(   "",
                            "",
                            "\\1",
                            "\"",
                            "&",
                            "<",
                            ">",
                            " ",
                            chr(161),
                            chr(162),
                            chr(163),
                            chr(169));
                    
        $text = preg_replace($search,$replace,$document);
                                
        return $text;
    }

fetch ( URI  ) 

Definition at line 125 of file Snoopy.class.inc.

References $fp, $path, _connect(), _disconnect(), _httprequest(), _httpsrequest(), count, error, and host.

    {
    
        //preg_match("|^([^:]+)://([^:/]+)(:[\d]+)*(.*)|",$URI,$URI_PARTS);
        $URI_PARTS = parse_url($URI);
        if (!empty($URI_PARTS["user"]))
            $this->user = $URI_PARTS["user"];
        if (!empty($URI_PARTS["pass"]))
            $this->pass = $URI_PARTS["pass"];
                
        switch($URI_PARTS["scheme"])
        {
            case "http":
                $this->host = $URI_PARTS["host"];
                if(!empty($URI_PARTS["port"]))
                    $this->port = $URI_PARTS["port"];
                if($this->_connect($fp))
                {
                    if($this->_isproxy)
                    {
                        // using proxy, send entire URI
                        $this->_httprequest($URI,$fp,$URI,$this->_httpmethod);
                    }
                    else
                    {
                        $path = $URI_PARTS["path"].(isset($URI_PARTS["query"]) ? "?".$URI_PARTS["query"] : "");
                        // no proxy, send only the path
                        $this->_httprequest($path, $fp, $URI, $this->_httpmethod);
                    }
                    
                    $this->_disconnect($fp);

                    if($this->_redirectaddr)
                    {
                        /* url was redirected, check if we've hit the max depth */
                        if($this->maxredirs > $this->_redirectdepth)
                        {
                            // only follow redirect if it's on this site, or offsiteok is true
                            if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
                            {
                                /* follow the redirect */
                                $this->_redirectdepth++;
                                $this->lastredirectaddr=$this->_redirectaddr;
                                $this->fetch($this->_redirectaddr);
                            }
                        }
                    }

                    if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
                    {
                        $frameurls = $this->_frameurls;
                        $this->_frameurls = array();
                        
                        while(list(,$frameurl) = each($frameurls))
                        {
                            if($this->_framedepth < $this->maxframes)
                            {
                                $this->fetch($frameurl);
                                $this->_framedepth++;
                            }
                            else
                                break;
                        }
                    }                   
                }
                else
                {
                    return false;
                }
                return true;                    
                break;
            case "https":
                if(!$this->curl_path || (!is_executable($this->curl_path))) {
                    $this->error = "Bad curl ($this->curl_path), can't fetch HTTPS \n";
                    return false;
                }
                $this->host = $URI_PARTS["host"];
                if(!empty($URI_PARTS["port"]))
                    $this->port = $URI_PARTS["port"];
                if($this->_isproxy)
                {
                    // using proxy, send entire URI
                    $this->_httpsrequest($URI,$URI,$this->_httpmethod);
                }
                else
                {
                    $path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
                    // no proxy, send only the path
                    $this->_httpsrequest($path, $URI, $this->_httpmethod);
                }

                if($this->_redirectaddr)
                {
                    /* url was redirected, check if we've hit the max depth */
                    if($this->maxredirs > $this->_redirectdepth)
                    {
                        // only follow redirect if it's on this site, or offsiteok is true
                        if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
                        {
                            /* follow the redirect */
                            $this->_redirectdepth++;
                            $this->lastredirectaddr=$this->_redirectaddr;
                            $this->fetch($this->_redirectaddr);
                        }
                    }
                }

                if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
                {
                    $frameurls = $this->_frameurls;
                    $this->_frameurls = array();

                    while(list(,$frameurl) = each($frameurls))
                    {
                        if($this->_framedepth < $this->maxframes)
                        {
                            $this->fetch($frameurl);
                            $this->_framedepth++;
                        }
                        else
                            break;
                    }
                }                   
                return true;                    
                break;
            default:
                // not a valid protocol
                $this->error    =   'Invalid protocol "'.$URI_PARTS["scheme"].'"\n';
                return false;
                break;
        }       
        return true;
    }

setcookies (  ) 

Definition at line 737 of file Snoopy.class.inc.

References count.

Referenced by _httprequest(), and _httpsrequest().

    {
        for($x=0; $x<count($this->headers); $x++)
        {
        if(preg_match("/^set-cookie:[\s]+([^=]+)=([^;]+)/i", $this->headers[$x],$match))
            $this->cookies[$match[1]] = $match[2];
        }
    }


Field Documentation

$_fp_timeout = 30

Definition at line 114 of file Snoopy.class.inc.

$_framedepth = 0

Definition at line 111 of file Snoopy.class.inc.

$_frameurls = array()

Definition at line 110 of file Snoopy.class.inc.

$_httpmethod = "GET"

Definition at line 103 of file Snoopy.class.inc.

$_httpversion = "HTTP/1.0"

Definition at line 104 of file Snoopy.class.inc.

$_isproxy = false

Definition at line 113 of file Snoopy.class.inc.

$_maxlinelen = 4096

Definition at line 101 of file Snoopy.class.inc.

$_mime_boundary = ""

Definition at line 107 of file Snoopy.class.inc.

$_redirectaddr = false

Definition at line 108 of file Snoopy.class.inc.

$_redirectdepth = 0

Definition at line 109 of file Snoopy.class.inc.

$_submit_method = "POST"

Definition at line 105 of file Snoopy.class.inc.

$_submit_type = "application/x-www-form-urlencoded"

Definition at line 106 of file Snoopy.class.inc.

$accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"

Definition at line 70 of file Snoopy.class.inc.

$agent = "Snoopy v1.0"

Definition at line 48 of file Snoopy.class.inc.

$cookies = array()

Definition at line 50 of file Snoopy.class.inc.

$curl_path = "/usr/bin/curl"

Definition at line 84 of file Snoopy.class.inc.

$error = ""

Definition at line 74 of file Snoopy.class.inc.

$expandlinks = true

Definition at line 59 of file Snoopy.class.inc.

$headers = array()

Definition at line 76 of file Snoopy.class.inc.

Referenced by _httprequest(), and _httpsrequest().

$host = "www.php.net"

Definition at line 44 of file Snoopy.class.inc.

Referenced by _connect().

$lastredirectaddr = ""

Definition at line 56 of file Snoopy.class.inc.

$maxframes = 0

Definition at line 58 of file Snoopy.class.inc.

$maxlength = 500000

Definition at line 77 of file Snoopy.class.inc.

$maxredirs = 5

Definition at line 55 of file Snoopy.class.inc.

$offsiteok = true

Definition at line 57 of file Snoopy.class.inc.

$pass = ""

Definition at line 67 of file Snoopy.class.inc.

$passcookies = true

Definition at line 62 of file Snoopy.class.inc.

$port = 80

Definition at line 45 of file Snoopy.class.inc.

Referenced by _connect().

$proxy_host = ""

Definition at line 46 of file Snoopy.class.inc.

$proxy_port = ""

Definition at line 47 of file Snoopy.class.inc.

$rawheaders = array()

Definition at line 52 of file Snoopy.class.inc.

$read_timeout = 0

Definition at line 78 of file Snoopy.class.inc.

$referer = ""

Definition at line 49 of file Snoopy.class.inc.

$response_code = ""

Definition at line 75 of file Snoopy.class.inc.

$results = ""

Definition at line 72 of file Snoopy.class.inc.

Referenced by _httprequest(), and _httpsrequest().

$status = 0

Definition at line 82 of file Snoopy.class.inc.

Referenced by _httprequest().

$timed_out = false

Definition at line 81 of file Snoopy.class.inc.

$use_gzip = true

Definition at line 97 of file Snoopy.class.inc.

$user = ""

Definition at line 66 of file Snoopy.class.inc.


The documentation for this class was generated from the following file:

For more help developing with SiT! see http://sitracker.org/wiki/DevelopmentHowTo

© 2008-2011 Support Incident Tracker

Tsohost Logo