Archief - Xml inlezen werkt lokaal maar niet via online host

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

ElHombreLoco

Legacy Member
Ik gebruik DOM om een online xml in te lezen via worldweatheronline.com
nu lokaal werkt alles perfect(wamp) maar als ik het online zet (fatcow) werkt dit niet, en krijg ik als error de tweede die = Probleem met inladen xml
Moet ik iets aanpassen aan mijn php.ini fille ofzo ? zodat de load functie ondersteunt word ?

PHP:
 $doc = new DOMDocument()
   or die("Probleem bij dom");

  $doc->load( onlineweerbericht.xml' )
          or die("Probleem met inladen xml");

Alvast bedankt. :$

W0utR

Legacy Member
Is dat de exacte code die je gebruikt online? Kan je deze even posten.

ElHombreLoco

Legacy Member
De exacte volledige code is
PHP:
  $doc = new DOMDocument()
   or die("Probleem bij dom");
  $location="Alicante";
  $doc->load( 'http://free.worldweatheronline.com/feed/weather.ashx?q=Alicante,Spain&format=xml&num_of_days=4&key=api' )
          or die("Probleem met inladen xml");
  include("currentweather.php");
  include ("weatherpred.php");

currentweather.php

PHP:
<?php 

 $books = $doc->getElementsByTagName( "current_condition" );
  foreach( $books as $book )
  {
      
          $descs = $book->getElementsByTagName( "weatherDesc" );
  $desc = $descs->item(0)->nodeValue;
  

  echo '<img src="Images/weather/'.$desc.'.png" alt="'.$desc.'"  />';
 
   
    
       $curTemps = $book->getElementsByTagName( "temp_C" );
  $curTemp = $curTemps->item(0)->nodeValue;
 
  echo " ".$curTemp."°C ";
  echo '<img src="Images/weather/Thermometer.png"  height="42" width="42"/>';
  
         $humids = $book->getElementsByTagName( "humidity" );
  $humid = $humids->item(0)->nodeValue;
  echo 'Humidity: '.$humid."%";
  
  

      
  }

?>

    </br>
      <a id="show4" href="#" onclick="showStuff('wholeweek'); return false;">Show weather for 4 days.</a><br>
          <a id="wholeweekhide" href="#" onclick="hideStuff('wholeweek'); return false;">Hide weather.</a><br>

weatherpred.php

PHP:
   <?php
    echo '<br />';
    echo '<table id="wholeweek">';
    echo '<tr>';
  $books = $doc->getElementsByTagName( "weather" );
   $teller=0;
  foreach( $books as $book )
  {
     
       echo '<td>';
       
  $tempmaximum = $book->getElementsByTagName( "tempMaxC" );
  $tempmax = $tempmaximum->item(0)->nodeValue;
  
  $tempMinum = $book->getElementsByTagName( "tempMinC" );
  $tempMin = $tempMinum->item(0)->nodeValue;
  
  $titles = $book->getElementsByTagName( "weatherIconUrl" );
  $title = $titles->item(0)->nodeValue;
  
   $descs = $book->getElementsByTagName( "weatherDesc" );
  $desc = $descs->item(0)->nodeValue;
  
  $tomorrow = mktime(0, 0, 0, date("m"), date("l")+$teller+4, date("y"));
echo "".date("l", $tomorrow); 
   echo '<br />';
echo '<img src="Images/weather/'.$desc.'.png" alt="'.$desc.'"  WIDTH="75%" HEIGHT="75%"/>';
  echo '<br />';   echo '<br />';
echo ' '.$desc."&nbsp;&nbsp;";
  echo '<br />';
  echo 'Max : '.$tempmax."°C &nbsp;  ";
  echo '<br />';
  echo 'Min : '.$tempMin."°C   ";
  
 

  echo '<br />';
 
   echo '</td>';
    $teller++;
  }
  
   echo '</tr>';
     echo '</table>';
  ?>

groeten Tim

Zir0h

Legacy Member
Ik denk dat bij je host de php configuratie het ophalen van url's niet toelaat.

; PHP: Runtime Configuration - Manual
allow_url_fopen = Off

Dit kan je zelf controleren door een php bestand te maken met inhoud:
PHP:
<?php phpinfo();
En daarna te zoeken naar allow_url_fopen onder de Core sectie.

Je verwijdert misschien ook best je API key uit je code fragment hierboven.

ElHombreLoco

Legacy Member
Dankje voor het antwoord
ik heb even deze setting gegoogled en blijkbaar worden er veel sites gehacked via deze settings
is er een manier om dit te omzeilen of te beveiligen ?

Zir0h

Legacy Member
Als je host cronjobs aanbiedt, kan je periodiek het XML bestand downloaden. Het probleem is dat je dan geen custom queries meer kan uitvoeren en dat je met verouderde data werkt.

daray

Legacy Member
Zir0h zei:
Het probleem is dat je dan geen custom queries meer kan uitvoeren en dat je met verouderde data werkt.
Als je de cron job elke 2 minuten laat lopen valt die "verouderde" data toch wel best mee - zeker in dit geval waar het om weer data gaat, verder kan ik ook aanraden om de data die je verwerkt uit de XML bestanden in een database te stoppen.

Ik gebruik zelf ook cronjobs om xml data binnen te brengen op mijn website, update elke 2minuten. ( HLN | ETZ.BE en Tweakers | ETZ.BE )

Met volgende command in je crontab te zetten:
Code:
wget --quiet --no-cache --output-document=/doel/path/voor/je/bestand.xml 'http://bronvan.het/bestand.xml'
Haal je het bestand op en sla je het lokaal op. Let wel, boventaande code zal telkens hetzelfde bestand overschrijven. Je kan natuurlijk er een variabel deel instoppen moest je dat wenselijk vinden.

breez

Legacy Member
probeer het bestand eerst eens via cURL binnen te trekken en dan te openen
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan