PHP Classes
elePHPant
Icontem

File: url.class.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Sven Wagener  >  URL class  >  url.class.php  >  Download  
File: url.class.php
Role: Class source
Content type: text/plain
Description: The basic class file
Class: URL class
Getting information about URL
Author: By
Last change: Changed mail address
Date: 11 years ago
Size: 5,893 bytes
 

Contents

Class file image Download
<?
/**
* Class for getting information about URL's
* @author Sven Wagener <wagener_at_indot_dot_de>
* @copyright Intertribe limited
* @include Funktion:_include_
*/
class url{
   
    var
$url="";
    var
$url_host;
    var
$url_path;
    var
$file="";
   
    var
$code="";
    var
$code_desc="";
    var
$http_version=""; // Variable for HTTP version
   
   
var $header_stream;
    var
$header_array;
   
    var
$timeout="1";
   
   
/**
    * Constructor of class url
    * @param string $url the complete url
    * @desc Constructor of class url
    */
   
function url($url){
       
$this->url=$url;
       
       
$url_array=parse_url($this->url);
       
$this->url_host=$url_array['host'];
       
$this->url_path=$url_array['path'];
       
        if(
$this->url_path==""){
           
$this->url_path="/";
        }
       
       
$this->refresh_headerinfo();
    }
   
   
/**
    * Returns the whole url
    * @return string $url the whole url
    * @desc Returns the whole url
    */
   
function get_url(){
        return
$this->url;
    }
   
   
/**
    * Returns the host of the url
    * @return string $url_host the host of the url
    * @desc Returns the host of the url
    */
   
function get_url_host(){
        return
$this->url_host;
    }
   
   
/**
    * Returns the path of the url
    * @return string $url_path the path of the url
    * @desc Returns the path of the url
    */
   
function get_url_path(){
        return
$this->url_path;
    }
   
   
/**
    * Returns the status code of the url
    * @return string $status_code the status code
    * @desc Returns the status code of the url
    */
   
function get_statuscode(){
        return
$this->code;
    }
   
   
/**
    * Returns the status code description of the url
    * @return string $status_code_desc the status code description
    * @desc Returns the status code description of the url
    */
   
function get_statuscode_desc(){
        return
$this->code_desc;
    }
   
   
/**
    * Returns the http version of the url by the returned headers of the server
    * @return string $http_version the http version
    * @desc Returns the http version of the url by the returned headers of the server
    */
   
function get_info_http_version(){
        return
$this->http_version;
    }
   
   
/**
    * Returns the server type of the url's host by the returned headers of the server
    * @return string header_array['Server'] the server type
    * @desc Returns the server type of the url's host by the returned headers of the server
    */
   
function get_info_server(){
        return
$this->header_array['Server'];
    }
   
   
/**
    * Returns the date of the url's host by the returned headers of the server
    * @return string $header_array['Date'] the date
    * @desc Returns the date of the url's host by the returned headers of the server
    */
   
function get_info_date(){
        return
$this->header_array['Date'];
    }
   
   
/*
    function get_info_content_length(){
    return $this->header_array['Content-Length'];
    }
    */
   
    /**
    * Returns the content type by the returned headers of the server
    * @return string header_array['Content-Type'] the content type
    * @desc Returns the content type by the returned headers of the server
    */
   
function get_info_content_type(){
        return
$this->header_array['Content-Type'];
    }
   
   
/**
    * Returns the content of the url without the headers
    * @return string $content the content
    * @desc Returns the content of the url without the headers
    */
   
function get_content(){
       
// Get a web page into a string
       
$string = implode ('', file ($this->url));
        return
$string;
    }
   
   
/**
    * Returns the whole header of url without content
    * @return string $header the header
    * @desc Returns the whole header of url without content
    */
   
function get_header_stream(){
        return
$this->header_stream;
    }
   
   
/**
    * Returns the whole headers of the url in an array
    * @return array $header_array the headers in an array
    * @desc Returns the whole headers of the url in an array
    */
   
function get_headers(){
        return
$this->header_array;
    }
   
   
/**
    * Refreshes the header information
    * @desc Refreshes the header information
    */
   
function refresh_headerinfo(){
       
// Open socket for connection via port 80 to put headers
       
$fp = fsockopen ($this->url_host, 80, $errno, $errstr, 30);
        if (!
$fp) {
           
// echo "$errstr ($errno)";
           
if($errno==0){
               
$errstr="Server Not Found";
            }
           
$this->code=$errno;
           
$this->code_desc=$errstr;
        } else {
           
           
$put_string="GET ".$this->url_path." HTTP/1.0\r\nHost: ".$this->url_host."\r\n\r\n";
           
fputs ($fp, $put_string);
            @
socket_set_timeout($fp,$this->timeout);
           
           
$stream="";
           
$this->header_array="";
           
$header_end=false;
           
           
// Getting header string and creating header array
           
$i=0;
            while (!
feof($fp) && !$header_end) {
               
$line=fgets($fp,128);
                if(
strlen($line)==2){
                   
$header_end=true;
                }else{
                    if(
$i==0){
                       
$line1=$line;
                    }
                   
$stream.=$line;
                   
$splitted_line=split(":",$line);
                   
$this->header_array[$splitted_line[0]]=$splitted_line[1];
                   
$i++;
                }
            }
           
fclose ($fp);
           
           
           
$this->header_stream=$stream;
           
           
$splitted_stream=split(" ",$line1);
           
           
// Getting status code and description of the URL
           
$this->code=$splitted_stream[1];
           
$this->code_desc=$splitted_stream[2];
            if(
count($splitted_stream)>3){
                for(
$i=3;$i<count($splitted_stream);$i++){
                   
$this->code_desc.=" ".$splitted_stream[$i];
                }
            }
           
// Cleaning up for \n and \r
           
$this->code_desc=preg_replace("[\\n]","",$this->code_desc);
           
$this->code_desc=preg_replace("[\\r]","",$this->code_desc);
           
           
// Getting Http Version
           
$http_array=split("\/",$splitted_stream[0]);
           
$this->http_version=$http_array[1];
        }
    }
   
   
/**
    * Sets the timeout for getting header data from server
    * @param int $seconds time for timeout in seconds
    * @desc Sets the timeout for getting header data from server
    */
   
function set_timeout($seconds){
       
$this->timeout=$seconds;
    }
}
?>