Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Fopen kroz proxy problemi sa izmenom klase

[es] :: PHP :: Fopen kroz proxy problemi sa izmenom klase

[ Pregleda: 2875 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mordor
Vladimir Cvetic
/dev/null

Član broj: 2797
Poruke: 420
195.252.85.*

Jabber: cvele@default.co.yu
Sajt: www.knowbies.com


Profil

icon Fopen kroz proxy problemi sa izmenom klase21.04.2005. u 14:44 - pre 231 meseci
Oke imam klasu koju koristim za parsovanje xml feedova
Code:

<?php
// classse feedReader
//faz a leitura de um feed (rss ou xml)
//versão 1.0 para PHP 4
//autor: José Valente mailto:[email protected]
//2004 Portugal

class feedReader{

var $feedReader;   // parser
var $feedUrl;      // url do ficheiro xml/rss
var $node;         // número de nós dos items
var $channelFlag;  // flag
var $currentTag;   // actual tag
var $outputData;   // array dos dados (notícias formatadas)
var $itemFlag;     // flag
var $imageFlag;    // flag

function feedReader(){ //constructor iniciação dos valores por defeitos dos elementos da classe
    $this->feedReader="";
    $this->feedUrl="";
    $this->node=0;
    $this->channelFlag=false;
    $this->currentTag="";
    $this->outputData=array();
    $this->itemFlag=false;
    $this->imageFlag=false;
}

function setFeedUrl($url){ //indicamos o endereço do ficheiro xml/rss
    $this->feedUrl=$url;
}

function getFeedOutputData(){ //retornamos o array com as notícias formatadas
    return $this->outputData;
}

function getFeedNumberOfNodes(){ //retornamos o número de notícias
    return $this->node;
}

function parseFeed(){ //função parse do xml
    $this->feedReader=xml_parser_create();
    xml_set_object($this->feedReader,&$this);
    xml_parser_set_option($this->feedReader,XML_OPTION_CASE_FOLDING,true);
    xml_set_element_handler($this->feedReader,"openTag","closeTag");
    xml_set_character_data_handler($this->feedReader,"dataHandling");
    if(!($fp=@fopen($this->feedUrl,"r"))){
        $errorDefinition="Não foi possível encontrar o ficheiro pretendido.";
        echo $errorDefinition;
    }
    while($data=@fread($fp,4096)){
        if(!@xml_parse($this->feedReader,$data,feof($fp))){
            $errorDefinition=xml_error_string(xml_get_error_code($this->feedReader));
            echo $errorDefinition;
        }
    }
    xml_parser_free($this->feedReader);
}

function openTag($parser,$name,$attrs){ //função startElement
        if($name){
            switch(strtolower($name)){
                case "channel":$this->channelFlag=true;break;
                case "image":$this->channelFlag=false;$this->imageFlag=true;break;
                case "item":$this->channelFlag=false;$this->imageFlag=false;$this->itemFlag=true;$this->node++;break;
                default:$this->currentTag=strtolower($name);break;
            }
        }
}

function closeTag($parser,$name){ //função endElement
    $this->currentTag="";
}

function dataHandling($parser,$data){ //função characterElement
    if($this->channelFlag){ //para a descrição do channel
        switch($this->currentTag){
            case "title":$this->outputData["channel"][$this->currentTag]=$data;break;
            case "link":$this->outputData["channel"][$this->currentTag]=$data;break;
            case "description":$this->outputData["channel"][$this->currentTag]=$data;break;
            case "language":$this->outputData["channel"][$this->currentTag]=$data;break;
            case "copyright":$this->outputData["channel"][$this->currentTag]=$data;break;
            case "docs":$this->outputData["channel"][$this->currentTag]=$data;break;
            case "lastbuilddate":$this->outputData["channel"][$this->currentTag]=$data;break;
        }
    }
    if($this->itemFlag){ //para a descrição dos items
        switch($this->currentTag){
            case "title":$this->outputData["item"][$this->currentTag][$this->node-1].=$data;break;
            case "link":$this->outputData["item"][$this->currentTag][$this->node-1]=$data;break;
            case "description":$this->outputData["item"][$this->currentTag][$this->node-1].=$data;break;
            case "author":$this->outputData["item"][$this->currentTag][$this->node-1]=$data;break;
            case "pubdate":$this->outputData["item"][$this->currentTag][$this->node-1]=$data;break;
        }
    }
    if($this->imageFlag){ //para a descrição da imagem
        switch($this->currentTag){
            case "title":$this->outputData["image"][$this->currentTag]=$data;break;
            case "url":$this->outputData["image"][$this->currentTag]=$data;break;
            case "link":$this->outputData["image"][$this->currentTag]=$data;break;
        }
    }
}

}
?>


Pokusavao sam nesto ovako
Code:

<?php
// classse feedReader
//faz a leitura de um feed (rss ou xml)
//versão 1.0 para PHP 4
//autor: José Valente mailto:[email protected]
//2004 Portugal

class feedReader{

var $feedReader;   // parser
var $feedUrl;      // url do ficheiro xml/rss
var $node;         // número de nós dos items
var $channelFlag;  // flag
var $currentTag;   // actual tag
var $outputData;   // array dos dados (notícias formatadas)
var $itemFlag;     // flag
var $imageFlag;    // flag

function feedReader(){ //constructor iniciação dos valores por defeitos dos elementos da classe
    $this->feedReader="";
    $this->feedUrl="";
    $this->node=0;
    $this->channelFlag=false;
    $this->currentTag="";
    $this->outputData=array();
    $this->itemFlag=false;
    $this->imageFlag=false;
}

function setFeedUrl($url){ //indicamos o endereço do ficheiro xml/rss
    $this->feedUrl=$url;
}

function getFeedOutputData(){ //retornamos o array com as notícias formatadas
    return $this->outputData;
}

function getFeedNumberOfNodes(){ //retornamos o número de notícias
    return $this->node;
}

function parseFeed(){ //função parse do xml
    $this->feedReader=xml_parser_create();
    xml_set_object($this->feedReader,&$this);
    xml_parser_set_option($this->feedReader,XML_OPTION_CASE_FOLDING,true);
    xml_set_element_handler($this->feedReader,"openTag","closeTag");
    xml_set_character_data_handler($this->feedReader,"dataHandling");
    $auth_string = base64_encode("USER:PASS");
    $message = "GET ".$this->feedUrl."$path HTTP/1.1\r\n";
    $message .= "Host: $domain\r\n";
    $message .= "Proxy-authorization: Basic $auth_string\r\n";
    $message .= "Connection: Close\r\n";
    $message .= "\r\n";
    $socket = fsockopen("proxy3.default.co.yu", "8080", $errno, $errstring, 20);
    fwrite($socket, $message);
    //$contents = "";
  //  while (!feof($socket)){
 //           $contents .= fgets($socket, 128);
 //   }
    
    
    //if(!($fp=@fopen($this->feedUrl,"r"))){
        //$errorDefinition="Não foi possível encontrar o ficheiro pretendido.";
        //echo $errorDefinition;
    //}
    while($data=@fread($socket,4096)){
        if(!@xml_parse($this->feedReader,$data,feof($socket))){
            $errorDefinition=xml_error_string(xml_get_error_code($this->feedReader));
            echo $errorDefinition;
        }
    }
    xml_parser_free($this->feedReader);
    fclose($socket);
}

function openTag($parser,$name,$attrs){ //função startElement
        if($name){
            switch(strtolower($name)){
                case "channel":$this->channelFlag=true;break;
                case "image":$this->channelFlag=false;$this->imageFlag=true;break;
                case "item":$this->channelFlag=false;$this->imageFlag=false;$this->itemFlag=true;$this->node++;break;
                default:$this->currentTag=strtolower($name);break;
            }
        }
}

function closeTag($parser,$name){ //função endElement
    $this->currentTag="";
}

function dataHandling($parser,$data){ //função characterElement
    if($this->channelFlag){ //para a descrição do channel
        switch($this->currentTag){
            case "title":$this->outputData["channel"][$this->currentTag]=$data;break;
            case "link":$this->outputData["channel"][$this->currentTag]=$data;break;
            case "description":$this->outputData["channel"][$this->currentTag]=$data;break;
            case "language":$this->outputData["channel"][$this->currentTag]=$data;break;
            case "copyright":$this->outputData["channel"][$this->currentTag]=$data;break;
            case "docs":$this->outputData["channel"][$this->currentTag]=$data;break;
            case "lastbuilddate":$this->outputData["channel"][$this->currentTag]=$data;break;
        }
    }
    if($this->itemFlag){ //para a descrição dos items
        switch($this->currentTag){
            case "title":$this->outputData["item"][$this->currentTag][$this->node-1].=$data;break;
            case "link":$this->outputData["item"][$this->currentTag][$this->node-1]=$data;break;
            case "description":$this->outputData["item"][$this->currentTag][$this->node-1].=$data;break;
            case "author":$this->outputData["item"][$this->currentTag][$this->node-1]=$data;break;
            case "pubdate":$this->outputData["item"][$this->currentTag][$this->node-1]=$data;break;
        }
    }
    if($this->imageFlag){ //para a descrição da imagem
        switch($this->currentTag){
            case "title":$this->outputData["image"][$this->currentTag]=$data;break;
            case "url":$this->outputData["image"][$this->currentTag]=$data;break;
            case "link":$this->outputData["image"][$this->currentTag]=$data;break;
        }
    }
}

}
?>


I ne znam sta vise :(
moze li neko da pomogne ?

Dakle hocu da odradim sve preko nekog proxija koji zahteva autentikaciju.

 
Odgovor na temu

[es] :: PHP :: Fopen kroz proxy problemi sa izmenom klase

[ Pregleda: 2875 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.