[PHP] Klamm-TV-API Online/Offline anzeige

NotOffline

Well-known member
ID: 109592
L
26 April 2006
615
30
Hallo,
ich will auf meiner kleinen privaten Webseite anzeigen, ob meine Webcam gerade läuft, oder eben nicht.
Dafür wird folgende URL verwendet (Passwort zensiert):
https://klammcam.loseoase.de/klammt...92&ktvpw=*******&request=camonline&kid=109592

Wenn ich Online bin kommt folgende Antwort:
Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE klammtv SYSTEM "klammtv.dtd">
<klammtv version="1.05">
<camonline kid="109592">online</camonline>
</klammtv>
Wenn dieser Code kommt würde ich gerne Online.
In jedem anderem Fall: Offline

Ich bin so schlecht in PHP ich kann nur paar Standard-Befehle ich krieg das nicht hin mit dem API...

Kann mir da einer helfen?

Liebe Grüße,
Karsten
 
Ganz stupide würde es auch gehen, wenn du einfach guckst, ob die Rückgabe mit dem, was du da schreibst übereinstimmt. Oder ob das Wort online drinne vor kommt [ strstr() ].
Ist zwar extrem Fehleranfällig, aber dafür umso simpler, und je nach dem wie wichtig es ist kann man glaubich über sowas hinwegsehen ;)

(*auf Schlag von tH vorbereit*)
 
Was heißt Fehleranfällig? ^^
Ne simple Lösung fände ich am besten :)
Und wie wende ich das auf diese Daten an, die zurückkommen, wenn die URL angeschrieben wird?
 
Geht nicht auch sowas?:
Code:
  <?php

$ret=file("https://klammcam.loseoase.de/klammtv_...e&kid=1095 92");

  if($ret == 	
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE klammtv SYSTEM "klammtv.dtd"> <klammtv version="1.05"> <camonline kid="109592">online</camonline> </klammtv>)
    {
    echo "online";
    }
  else
    {
    echo "offline";
    }
  ?>
 
(*auf Schlag von tH vorbereit*)
Ich wollte es auch erst vorschlagen, aber das wird nur Müll, der rauskommt, drum habs ichs gelassen.
Was heißt Fehleranfällig? ^^
Fehleranfällig := Wenn ich die API ändere, dann guckst du dumm :LOL:

Ich schreib dir hier mal den Code, wie er lauten müsste. Angaben ohne Gewähr, ich hab noch nie mit SimpleXML gearbeitet, der Code is ungetestet:
PHP:
$xml_data=file_get_contents("https://...."); // file-wrapper vorausgesetzt
$xml=new SimpleXMLElement($xml_data);
if($xml->camonline[0]=='online')
  echo "online";
elseif($xml->camonline[0]=='offline')
  echo "offline";
else
  echo "unknown cam-status or error");
@obiger Post:
Vergiss das bitte schnell wieder :sick:
 
Ich wollte es auch erst vorschlagen, aber das wird nur Müll, der rauskommt, drum habs ichs gelassen.
Fehleranfällig := Wenn ich die API ändere, dann guckst du dumm :LOL:

Ich schreib dir hier mal den Code, wie er lauten müsste. Angaben ohne Gewähr, ich hab noch nie mit SimpleXML gearbeitet, der Code is ungetestet:
PHP:
$xml_data=file_get_contents("https://...."); // file-wrapper vorausgesetzt
$xml=new SimpleXMLElement($xml_data);
if($xml->camonline[0]=='online')
  echo "online";
elseif($xml->camonline[0]=='offline')
  echo "offline";
else
  echo "unknown cam-status or error");
@obiger Post:
Vergiss das bitte schnell wieder :sick:
Danke!!
Es geht :)
Und den andern Müll vergess ich sofort ;)
 
Ein Problem gibt es noch:
Wenn Klamm.tv nicht erreichbar ist, kommt nicht die Error-Meldung die du geschrieben hast tH sondern:
Warning: file_get_contents(....) [function.file-get-contents]: failed to open stream: Connection refused in /home/webpages/lima-city/webshield/html/cam.php on line 60

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/webpages/lima-city/webshield/html/cam.php:61 Stack trace: #0 /home/webpages/lima-city/webshield/html/cam.php(61): SimpleXMLElement->__construct('') #1 {main} thrown in /home/webpages/lima-city/webshield/html/cam.php on line 61

Wie kann ich diesen Fehler vermeiden, sodass einfach nur ERROR ausgegeben wird und die restliche Seite ohne Probleme geht?
 
PHP:
$xml_data=@file_get_contents("https://...."); // file-wrapper vorausgesetzt
if($xml_data){
  $xml=new SimpleXMLElement($xml_data);
  if($xml->camonline[0]=='online')
    echo "online";
  elseif($xml->camonline[0]=='offline')
    echo "offline";
  else
    echo "unknown cam-status or error");
}
else{
  echo "unknown cam-status or error");
}

die Fehlerunterdrückung mit @ ist zwar net dolle, aber ob nen error_reporting-change gewollt ist, ist net sicher