[ alfa-pro @ 10.01.2012. 23:08 ] @
Pomagajte hitno je.
Dok sam radio sajt na loclhostu sve je radilo fino.koristio sam Codeigniter FW.
Dok covek za koga sam radio sajt je uzeo neki nemacki domen i kako sam prebacio na server dobijam probleme sa sledecim upozorenjima.

Greska nastaje tako sto ja hocu da preuzmem RSS vesti na sajt.

Citat:

A PHP Error was encountered

Severity: Warning

Message: SimpleXMLElement::__construct(http://www.smedia.rs/rss/?site=zabava&sekcija=Zanimljivosti) [simplexmlelement.--construct]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden

Filename: views/index.php

Line Number: 3



Citat:

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/.sites/65/site1124/web/system/cms/modules/blog/views/index.php:3 Stack trace: #0 /home/.sites/65/site1124/web/system/cms/modules/blog/views/index.php(3): SimpleXMLElement->__construct('http://www.smed...', 0, true) #1 /home/.sites/65/site1124/web/system/cms/libraries/MX/Loader.php(308): include('/home/.sites/65...') #2 /home/.sites/65/site1124/web/system/cms/libraries/MX/Loader.php(256): MX_Loader->_ci_load(Array) #3 /home/.sites/65/site1124/web/system/cms/libraries/MY_Parser.php(43): MX_Loader->view('index', Array, true) #4 /home/.sites/65/site1124/web/system/cms/libraries/Template.php(804): MY_Parser->parse('index', Array, true) #5 /home/.sites/65/site1124/web/system/cms/libraries/Template.php(768): Template->_load_view('index', Array, true) #6 /home/.sites/65/site1124/web/system/cms/libraries/Template.php(254): Template->_find_view('index', Array, true) #7 /home/.sites/65/site1124/web/system/cms/modules/blog/controller in /home/.sites/65/site1124/web/system/cms/modules/blog/views/index.php on line 3


Kod koji koristim:

Code:

    $rss = new SimpleXMLElement('http://www.smedia.rs/rss/?site=zabava&sekcija=Zanimljivosti', null, true);
     $i = 0;   
    foreach($rss->xpath('channel/item') as $item){
 
      if (++$i == 11) break;
 
      echo <<<EOF
        <a href='{$item->link}'>{$item->title}</a>
        {$item->description}
        {$item->image}
        {$item->pubDate}
EOF;
    }
  ?>


Probao sam da setujem
Code:
ini_set ('allow_url_fopen', '1'); 
I nista ,
phpinfo prikazuje da je allow_url_fopen on

Probao sam sa CURL i opet nista.

Jel imate vi neko resenje predlog bas mi gori pod nogama koliko mi ovo treba a nemam predstavu sta vise da googlam i sta sve nisam pokusao.
[ Mr. Bond @ 10.01.2012. 23:36 ] @
Koliko sam na brzinu preleteo po Google-u problem je što te targetovani host blokira - pogotovu ako si uzeo od nekog poznatijeg provajdera moguće je da su blokirali crawl. Ništa te ne košta da probaš sledeće:

Umesto što SimpleXMLElement-u prosleđuješ URL uzmi dovuci cURL-om sadržaj i onda pozovi new SimpleXMLElement($content). Ono što se podrazumeva je da ćeš setovati cURL da radi preko proxija. Nije baš idealno rešenje ali mi se čini kao jedino moguće ako je IP blacklist-ovan.

Dakle koristi:

Code:

function getPage($proxy, $url, $referer, $agent, $header, $timeout) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXY, $proxy);
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
 
    $result['EXE'] = curl_exec($ch);
    $result['INF'] = curl_getinfo($ch);
    $result['ERR'] = curl_error($ch);
 
    curl_close($ch);
 
    return $result;
}


da dohvatiš RSS sadržaj i onda rezultat prosledi konstrutkoru SimpleXMLElement-a. Više o korišćenju proxy-a i šta šta znači iskopao sam ovde. Potraži samo UserAgent header (referer možda možeš i da zanemariš a možeš kao i on da staviš da je google.). Ovo bi trebalo dovoljno da prevari targetovani server i da ti vrati response.
[ alfa-pro @ 11.01.2012. 02:20 ] @
Probao sam ovo ali ovo jedino radi na google rss na ni jedan nas vesti sajt nece..
Probao sam sve sajtove nase i nista.
[ Mr. Bond @ 11.01.2012. 02:26 ] @
Stavi da je Referer "http://www.smedia.rs/".
[ alfa-pro @ 11.01.2012. 02:50 ] @
Ja ne znam ovo da odradim ja sam glup za ovo jeb. mi sve..
Gledaj sta sam ja uradio i stalno mi vraca gresku..

Code:

function getPage($proxy, $url, $referer, $agent, $header, $timeout) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXY, $proxy);
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
 
    $result['EXE'] = curl_exec($ch);
    $result['INF'] = curl_getinfo($ch);
    $result['ERR'] = curl_error($ch);
 
    curl_close($ch);
 
    return $result;
}

$result = getPage(
    '[proxy IP]:[port]', // use valid proxy
    'http://www.smedia.rs/rss/?site=biznis&sekcija=Automobili',
    'http://www.smedia.rs',
    'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8',
    1,
    5);
 
if (empty($result['ERR'])) {
    echo "USPESNO";
    /**
    $rss = new SimpleXMLElement($result , null, true);
     $i = 0;   
    foreach($rss->xpath('channel/item') as $item){
 
      if (++$i == 11) break;
 
      echo <<<EOF
        <a href='{$item->link}'>{$item->title}</a>
        {$item->description}
        {$item->image}
        {$item->pubDate}
EOF;
    }    
    *//
} else {
    echo "ERROR";
}

[ alfa-pro @ 13.01.2012. 20:40 ] @
Problem je resen, kontaktirao sam Hosting administratora i problem je bio firewall na serveru...