xml uitlezen met php en variable van maken..

Status
Niet open voor verdere reacties.

djwouter

Gebruiker
Lid geworden
23 aug 2008
Berichten
142
goeienavond :)

ik heb een probleem ik moet voor een opdracht een XML bestand van een shoutcast server gaan verwerken... aleen hoe kan ik die het beste uitlezen ? zijn daar tuts voor ofzo ?

hier onder ons xml filetje...


[XML]
<?xml version="1.0" standalone="yes" ?><!DOCTYPE SHOUTCASTSERVER [<!ELEMENT SHOUTCASTSERVER (CURRENTLISTENERS,PEAKLISTENERS,MAXLISTENERS,REPORTEDLISTENERS,AVERAGETIME,SERVERGENRE,SERVERURL,SERVERTITLE,SONGTITLE,SONGURL,IRC,ICQ,AIM,WEBHITS,STREAMHITS,STREAMSTATUS,BITRATE,CONTENT,VERSION,WEBDATA,LISTENERS,SONGHISTORY)><!ELEMENT CURRENTLISTENERS (#PCDATA)><!ELEMENT PEAKLISTENERS (#PCDATA)><!ELEMENT MAXLISTENERS (#PCDATA)><!ELEMENT REPORTEDLISTENERS (#PCDATA)><!ELEMENT AVERAGETIME (#PCDATA)><!ELEMENT SERVERGENRE (#PCDATA)><!ELEMENT SERVERURL (#PCDATA)><!ELEMENT SERVERTITLE (#PCDATA)><!ELEMENT SONGTITLE (#PCDATA)><!ELEMENT SONGURL (#PCDATA)><!ELEMENT IRC (#PCDATA)><!ELEMENT ICQ (#PCDATA)><!ELEMENT AIM (#PCDATA)><!ELEMENT WEBHITS (#PCDATA)><!ELEMENT STREAMHITS (#PCDATA)><!ELEMENT STREAMSTATUS (#PCDATA)><!ELEMENT BITRATE (#PCDATA)><!ELEMENT CONTENT (#PCDATA)><!ELEMENT VERSION (#PCDATA)><!ELEMENT WEBDATA (INDEX,LISTEN,PALM7,LOGIN,LOGINFAIL,PLAYED,COOKIE,ADMIN,UPDINFO,KICKSRC,KICKDST,UNBANDST,BANDST,VIEWBAN,UNRIPDST,RIPDST,VIEWRIP,VIEWXML,VIEWLOG,INVALID)><!ELEMENT INDEX (#PCDATA)><!ELEMENT LISTEN (#PCDATA)><!ELEMENT PALM7 (#PCDATA)><!ELEMENT LOGIN (#PCDATA)><!ELEMENT LOGINFAIL (#PCDATA)><!ELEMENT PLAYED (#PCDATA)><!ELEMENT COOKIE (#PCDATA)><!ELEMENT ADMIN (#PCDATA)><!ELEMENT UPDINFO (#PCDATA)><!ELEMENT KICKSRC (#PCDATA)><!ELEMENT KICKDST (#PCDATA)><!ELEMENT UNBANDST (#PCDATA)><!ELEMENT BANDST (#PCDATA)><!ELEMENT VIEWBAN (#PCDATA)><!ELEMENT UNRIPDST (#PCDATA)><!ELEMENT RIPDST (#PCDATA)><!ELEMENT VIEWRIP (#PCDATA)><!ELEMENT VIEWXML (#PCDATA)><!ELEMENT VIEWLOG (#PCDATA)><!ELEMENT INVALID (#PCDATA)><!ELEMENT LISTENERS (LISTENER*)><!ELEMENT LISTENER (HOSTNAME,USERAGENT,UNDERRUNS,CONNECTTIME, POINTER, UID)><!ELEMENT HOSTNAME (#PCDATA)><!ELEMENT USERAGENT (#PCDATA)><!ELEMENT UNDERRUNS (#PCDATA)><!ELEMENT CONNECTTIME (#PCDATA)><!ELEMENT POINTER (#PCDATA)><!ELEMENT UID (#PCDATA)><!ELEMENT SONGHISTORY (SONG*)><!ELEMENT SONG (PLAYEDAT, TITLE)><!ELEMENT PLAYEDAT (#PCDATA)><!ELEMENT TITLE (#PCDATA)>]><SHOUTCASTSERVER><CURRENTLISTENERS>1</CURRENTLISTENERS><PEAKLISTENERS>13</PEAKLISTENERS><MAXLISTENERS>100</MAXLISTENERS><REPORTEDLISTENERS>1</REPORTEDLISTENERS><AVERAGETIME>23986</AVERAGETIME><SERVERGENRE>Electronic</SERVERGENRE><SERVERURL>http://www.073fm.tk/</SERVERURL><SERVERTITLE>073FM - www.073fm.tk (128k MP3)</SERVERTITLE><SONGTITLE>Kevin Rudolf feat. Lil Wayne - Let It Rock</SONGTITLE><SONGURL>http://www.073fm.tk/</SONGURL><IRC>NA</IRC><ICQ>NA</ICQ><AIM>NA</AIM><WEBHITS>17521</WEBHITS><STREAMHITS>1602</STREAMHITS><STREAMSTATUS>1</STREAMSTATUS><BITRATE>128</BITRATE><CONTENT>audio/mpeg</CONTENT><VERSION>1.9.8</VERSION><WEBDATA><INDEX>609</INDEX><LISTEN>33</LISTEN><PALM7>8133</PALM7><LOGIN>0</LOGIN><LOGINFAIL>31</LOGINFAIL><PLAYED>23</PLAYED><COOKIE>1</COOKIE><ADMIN>148</ADMIN><UPDINFO>2245</UPDINFO><KICKSRC>2</KICKSRC><KICKDST>0</KICKDST><UNBANDST>0</UNBANDST><BANDST>0</BANDST><VIEWBAN>2</VIEWBAN><UNRIPDST>0</UNRIPDST><RIPDST>0</RIPDST><VIEWRIP>3</VIEWRIP><VIEWXML>6073</VIEWXML><VIEWLOG>10</VIEWLOG><INVALID>203</INVALID></WEBDATA><LISTENERS><LISTENER><HOSTNAME>84.31.94.135</HOSTNAME><USERAGENT>NSPlayer/12.00.7600.16385 WMFSDK/12.00.7600.16385</USERAGENT><UNDERRUNS>0</UNDERRUNS><CONNECTTIME>1200</CONNECTTIME><POINTER>0</POINTER><UID>1600</UID></LISTENER></LISTENERS><SONGHISTORY><SONG><PLAYEDAT>1274280370</PLAYEDAT><TITLE>Kevin Rudolf feat. Lil Wayne - Let It Rock</TITLE></SONG><SONG><PLAYEDAT>1274280152</PLAYEDAT><TITLE>Waylon - Wicked Way</TITLE></SONG><SONG><PLAYEDAT>1274279970</PLAYEDAT><TITLE>Bob Sinclar - New New New (Radio Edit)</TITLE></SONG><SONG><PLAYEDAT>1274279967</PLAYEDAT><TITLE>Jouw Muziek, Jouw Station - 073FM (Balance)</TITLE></SONG><SONG><PLAYEDAT>1274279612</PLAYEDAT><TITLE>Sil - Windows (Cocolate Puma Remix)</TITLE></SONG><SONG><PLAYEDAT>1274279457</PLAYEDAT><TITLE>Kane - No Surrender</TITLE></SONG><SONG><PLAYEDAT>1274279132</PLAYEDAT><TITLE>Daniel Bovie & Roy Rox - Stop Playing With My Mind (Dub Mix)</TITLE></SONG><SONG><PLAYEDAT>1274278952</PLAYEDAT><TITLE>Sharam feat. Mario Vazquez - Get Wild (Radio Edit)</TITLE></SONG><SONG><PLAYEDAT>1274278946</PLAYEDAT><TITLE>073FM - Jouw muziek, Jouw station</TITLE></SONG><SONG><PLAYEDAT>1274278757</PLAYEDAT><TITLE>Beyonce - Single Ladies (Put A Ring On It) (Album Version)</TITLE></SONG><SONG><PLAYEDAT>1274278510</PLAYEDAT><TITLE>John Mayer - Heartbreak Warfar</TITLE></SONG><SONG><PLAYEDAT>1274278218</PLAYEDAT><TITLE>Timbaland - If We Ever Meet Again (featuring Katy Perry)</TITLE></SONG><SONG><PLAYEDAT>1274278216</PLAYEDAT><TITLE>073FM - Non Stop Jouw Muziek</TITLE></SONG><SONG><PLAYEDAT>1274277761</PLAYEDAT><TITLE>Mark Simmons - Get Us High (Main Mix)</TITLE></SONG><SONG><PLAYEDAT>1274277754</PLAYEDAT><TITLE>073FM - Hits knallen</TITLE></SONG><SONG><PLAYEDAT>1274277752</PLAYEDAT><TITLE>073FM - Goedemiddag</TITLE></SONG><SONG><PLAYEDAT>1274277744</PLAYEDAT><TITLE>073FM - Commercials End</TITLE></SONG><SONG><PLAYEDAT>1274277736</PLAYEDAT><TITLE>Streaming Powerd By - Fiberhosted.nl</TITLE></SONG><SONG><PLAYEDAT>1274277729</PLAYEDAT><TITLE>073FM - Hits knallen</TITLE></SONG><SONG><PLAYEDAT>1274277677</PLAYEDAT><TITLE>Nieuw Uur - 16 Uur</TITLE></SONG></SONGHISTORY></SHOUTCASTSERVER>
[/XML]


Code:
  <?xml version="1.0" standalone="yes" ?> 
  <!DOCTYPE SHOUTCASTSERVER (View Source for full doctype...)> 
- <SHOUTCASTSERVER>
  <CURRENTLISTENERS>1</CURRENTLISTENERS> 
  <PEAKLISTENERS>13</PEAKLISTENERS> 
  <MAXLISTENERS>100</MAXLISTENERS> 
  <REPORTEDLISTENERS>1</REPORTEDLISTENERS> 
  <AVERAGETIME>23986</AVERAGETIME> 
  <SERVERGENRE>Electronic</SERVERGENRE> 
  <SERVERURL>http://www.073fm.tk/</SERVERURL> 
  <SERVERTITLE>073FM - www.073fm.tk (128k MP3)</SERVERTITLE> 
  <SONGTITLE>Kevin Rudolf feat. Lil Wayne - Let It Rock</SONGTITLE> 
  <SONGURL>http://www.073fm.tk/</SONGURL> 
  <IRC>NA</IRC> 
  <ICQ>NA</ICQ> 
  <AIM>NA</AIM> 
  <WEBHITS>17521</WEBHITS> 
  <STREAMHITS>1602</STREAMHITS> 
  <STREAMSTATUS>1</STREAMSTATUS> 
  <BITRATE>128</BITRATE> 
  <CONTENT>audio/mpeg</CONTENT> 
  <VERSION>1.9.8</VERSION> 
- <WEBDATA>
  <INDEX>609</INDEX> 
  <LISTEN>33</LISTEN> 
  <PALM7>8133</PALM7> 
  <LOGIN>0</LOGIN> 
  <LOGINFAIL>31</LOGINFAIL> 
  <PLAYED>23</PLAYED> 
  <COOKIE>1</COOKIE> 
  <ADMIN>148</ADMIN> 
  <UPDINFO>2245</UPDINFO> 
  <KICKSRC>2</KICKSRC> 
  <KICKDST>0</KICKDST> 
  <UNBANDST>0</UNBANDST> 
  <BANDST>0</BANDST> 
  <VIEWBAN>2</VIEWBAN> 
  <UNRIPDST>0</UNRIPDST> 
  <RIPDST>0</RIPDST> 
  <VIEWRIP>3</VIEWRIP> 
  <VIEWXML>6073</VIEWXML> 
  <VIEWLOG>10</VIEWLOG> 
  <INVALID>203</INVALID> 
  </WEBDATA>
- <LISTENERS>
- <LISTENER>
  <HOSTNAME>84.31.94.135</HOSTNAME> 
  <USERAGENT>NSPlayer/12.00.7600.16385 WMFSDK/12.00.7600.16385</USERAGENT> 
  <UNDERRUNS>0</UNDERRUNS> 
  <CONNECTTIME>1200</CONNECTTIME> 
  <POINTER>0</POINTER> 
  <UID>1600</UID> 
  </LISTENER>
  </LISTENERS>
- <SONGHISTORY>
- <SONG>
  <PLAYEDAT>1274280370</PLAYEDAT> 
  <TITLE>Kevin Rudolf feat. Lil Wayne - Let It Rock</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274280152</PLAYEDAT> 
  <TITLE>Waylon - Wicked Way</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274279970</PLAYEDAT> 
  <TITLE>Bob Sinclar - New New New (Radio Edit)</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274279967</PLAYEDAT> 
  <TITLE>Jouw Muziek, Jouw Station - 073FM (Balance)</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274279612</PLAYEDAT> 
  <TITLE>Sil - Windows (Cocolate Puma Remix)</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274279457</PLAYEDAT> 
  <TITLE>Kane - No Surrender</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274279132</PLAYEDAT> 
  <TITLE>Daniel Bovie & Roy Rox - Stop Playing With My Mind (Dub Mix)</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274278952</PLAYEDAT> 
  <TITLE>Sharam feat. Mario Vazquez - Get Wild (Radio Edit)</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274278946</PLAYEDAT> 
  <TITLE>073FM - Jouw muziek, Jouw station</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274278757</PLAYEDAT> 
  <TITLE>Beyonce - Single Ladies (Put A Ring On It) (Album Version)</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274278510</PLAYEDAT> 
  <TITLE>John Mayer - Heartbreak Warfar</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274278218</PLAYEDAT> 
  <TITLE>Timbaland - If We Ever Meet Again (featuring Katy Perry)</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274278216</PLAYEDAT> 
  <TITLE>073FM - Non Stop Jouw Muziek</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274277761</PLAYEDAT> 
  <TITLE>Mark Simmons - Get Us High (Main Mix)</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274277754</PLAYEDAT> 
  <TITLE>073FM - Hits knallen</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274277752</PLAYEDAT> 
  <TITLE>073FM - Goedemiddag</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274277744</PLAYEDAT> 
  <TITLE>073FM - Commercials End</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274277736</PLAYEDAT> 
  <TITLE>Streaming Powerd By - Fiberhosted.nl</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274277729</PLAYEDAT> 
  <TITLE>073FM - Hits knallen</TITLE> 
  </SONG>
- <SONG>
  <PLAYEDAT>1274277677</PLAYEDAT> 
  <TITLE>Nieuw Uur - 16 Uur</TITLE> 
  </SONG>
  </SONGHISTORY>
  </SHOUTCASTSERVER>

wie ow wie kan mij helpen :$
 
heb nu iets gefabriekt... maar hij laad de xml niet ben ik nog wat vergeten ?

PHP:
<?php


// I use @ so that it doesn't spit out content of my XML in an error message if the load fails. The content could be passwords so this is just to be safe.
$xml = @simplexml_load_file('http://relay.fiberhosted.nl:XXXXX/admin.cgi?pass=XXXXXXXX&mode=viewxml');
if ($xml) {
    // asXML() will keep the HTML tags but it will also keep the parent tag <intro> so I strip them out with a str_replace. You could obviously also use a preg_replace if you have lots of tags.
    $CURRENTLISTENERS = str_replace(array('<CURRENTLISTENERS>', '</CURRENTLISTENERS>'), '', $xml->asXML());
	$PEAKLISTENERS = str_replace(array('<PEAKLISTENERS>', '</PEAKLISTENERS>'), '', $xml->asXML());
	$MAXLISTENERS = str_replace(array('<MAXLISTENERS>', '</MAXLISTENERS>'), '', $xml->asXML());
	$REPORTEDLISTENERS = str_replace(array('<REPORTEDLISTENERS>', '</REPORTEDLISTENERS>'), '', $xml->asXML());
	$AVERAGETIME = str_replace(array('<AVERAGETIME>', '</AVERAGETIME>'), '', $xml->asXML());
	$SERVERGENRE = str_replace(array('<SERVERGENRE>', '</SERVERGENRE>'), '', $xml->asXML());
	$SERVERURL = str_replace(array('<SERVERURL>', '</SERVERURL>'), '', $xml->asXML());
	$SERVERTITLE = str_replace(array('<SERVERTITLE>', '</SERVERTITLE>'), '', $xml->asXML());
	$SONGTITLE = str_replace(array('<SONGTITLE>', '</SONGTITLE>'), '', $xml->asXML());
	$SONGURL = str_replace(array('<SONGURL>', '</SONGURL>'), '', $xml->asXML());
	$WEBHITS = str_replace(array('<WEBHITS>', '</WEBHITS>'), '', $xml->asXML());
	$STREAMHITS = str_replace(array('<STREAMHITS>', '</STREAMHITS>'), '', $xml->asXML());
	$BITRATE = str_replace(array('<BITRATE>', '</BITRATE>'), '', $xml->asXML());


echo " $CURRENTLISTENERS , $PEAKLISTENERS , $MAXLISTENERS , $REPORTEDLISTENERS , $AVERAGETIME , $SERVERGENRE , $SERVERURL , $SERVERURL , $SERVERTITLE , $SONGURL , $WEBHITS , $STREAMHITS , $BITRATE "; 




} else {
	
	 echo "fout"; 
    $error = "Could not load intro XML file.";
}
?>
 
Klein begonnen?
PHP:
<?php
$xml = simplexml_load_file('http://relay.fiberhosted.nl:XXXXX/admin.cgi?pass=XXXXXXXX&mode=viewxml');
print_r($xml);
?>

Geen resultaat houdt in dat de URL niet juist is.
 
Code:
Warning: simplexml_load_file(http://relay.fiberhosted.nl:XXXXX/admin.cgi?pass=XXXX&mode=viewxml) [function.simplexml-load-file]: failed to open stream: HTTP request failed! ICY 404 Resource Not Found in C:\Users\wouter\Documents\website\shoutcastcontrol\UsbWebserver\Root\getstats.php on line 5

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://relay.fiberhosted.nl:XXXX/admin.cgi?pass=XXXXX&mode=viewxml" in C:\Users\wouter\Documents\website\shoutcastcontrol\UsbWebserver\Root\getstats.php on line 5

nogsteets fout en de link werkt 100%
 
De fout lijkt mij duidelijk :(
failed to open stream: HTTP request failed! ICY 404 Resource Not Found

Iets aan de URL klopt niet
 
toch klopt hij.... want als ik de link in mijn browser in typ opent hij hem wel......
 
En wat laat ie zien dan? een opgemaakte pagina?
 
ik wil nu aleen de luister gegevens hebben..... de IP en welke player ze luisteren hoe ik met die data om moet gaan veder weet ik wel.... maar die moet ik dus uit een xml halen ik heb dus het script 10 last song played daar voor gebruikt en geprobeert om te bouwen maar weer zonder resultaat hij geeft GEEN ip adressen neer aleen maar netjes onder elkaar
1
2
3
4
5
6
7
8
9
10

zonder php error...

dit is het script zo als ik hem NU heb

PHP:
<?php

//*********** PUT YOUR INFO HERE ***********//
//Configuration
$scdef  =       "His"; 
                                        // ABOVE: Default station name to display when server or stream is down
$scip   =       "relay.fiberhosted.nl";        // ip or url of shoutcast server (DO NOT ADD HTTP:// don't include the port)
$scport =       "XXXX";              // port of shoutcast server
$scpass =       "XXXX";              // password to shoutcast server

$refreshrate =  "60";             // Script/Page refresh time
$bgcolor =      "#E1EBEA";        // page background colour, hex value, default = white, #ffffff

//End configuration
//*********** PUT YOUR INFO HERE ***********//

$scfp = fsockopen("$scip", $scport, &$errno, &$errstr, 30);
 if(!$scfp) {
  $scsuccs=1;
echo''.$scdef.' is Offline';
 }
if($scsuccs!=1){
 fputs($scfp,"GET /admin.cgi?pass=$scpass&mode=viewxml HTTP/1.0\r\nUser-Agent: SHOUTcast Song Status (Mozilla Compatible)\r\n\r\n");
 while(!feof($scfp)) {
  $page .= fgets($scfp, 1000);
 }
 
######################################################################################################################
/////////////////////////part 1 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//define  xml elements
 $loop = array("STREAMSTATUS", "BITRATE", "SERVERTITLE", "CURRENTLISTENERS");
 $y=0;
 while($loop[$y]!=''){
  $pageed = ereg_replace(".*<$loop[$y]>", "", $page);
  $scphp = strtolower($loop[$y]);
  $$scphp = ereg_replace("</$loop[$y]>.*", "", $pageed);
  if($loop[$y]==SERVERGENRE || $loop[$y]==SERVERTITLE || $loop[$y]==SONGTITLE || $loop[$y]==SERVERTITLE)
   $$scphp = urldecode($$scphp);

// uncomment the next line to see all variables
//echo'$'.$scphp.' = '.$$scphp.'<br>';
  $y++;
 }
//end intro xml elements
######################################################################################################################
######################################################################################################################
/////////////////////////part 2\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//get song info and history
 $pageed = ereg_replace(".*<LISTENERS>", "", $page);
 $pageed = ereg_replace("<LISTENERS>.*", "", $pageed);
 $songatime = explode("<LISTENER>", $pageed);
 $r=1;
 while($songatime[$r]!=""){
  $t=$r-1;
  $playedat[$t] = ereg_replace(".*<HOSTNAME>", "", $songatime[$r]);
  $playedat[$t] = ereg_replace("</HOSTNAME>.*", "", $playedat[$t]);
  $song[$t] = ereg_replace(".*<HOSTNAME>", "", $songatime[$r]);
  $song[$t] = ereg_replace("</HOSTNAME>.*", "", $song[$t]);
  $song[$t] = urldecode($song[$t]);
  $dj[$t] = ereg_replace(".*<SERVERTITLE>", "", $page);
  $dj[$t] = ereg_replace("</SERVERTITLE>.*", "", $pageed);
$r++;
 }
//end song info

fclose($scfp);
}

//display stats
if($streamstatus == "1"){
//you may edit the html below, make sure to keep variable intact
echo'

<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<META HTTP-EQUIV="REFRESH" CONTENT="'.$refreshrate.';URL=/last.php">
<link href="main.css" type="text/css" rel="stylesheet" />
<title>'.$scdef.'</title>
</head>
<body text="" style="background-color:">
<br />
</center>
<span class="boldtype2"><p><b>Song History</b></span>
<br><br>
01. <span class="boldtype3">'.$song[1].'</span><br>
02. <span class="boldtype3">'.$song[2].'</span><br>
03. <span class="boldtype3">'.$song[3].'</span><br>
04. <span class="boldtype3">'.$song[4].'</span><br>
05. <span class="boldtype3">'.$song[5].'</span><br>
06. <span class="boldtype3">'.$song[6].'</span><br>
07. <span class="boldtype3">'.$song[7].'</span><br>
08. <span class="boldtype3">'.$song[8].'</span><br>
09. <span class="boldtype3">'.$song[9].'</span><br>
10. <span class="boldtype3">'.$song[10].'</span><br>


</body>
</html>';

}
if($streamstatus == "0")
{
//you may edit the html below, make sure to keep variable intact
echo'
<html>

<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<META HTTP-EQUIV="REFRESH" CONTENT="'.$refreshrate.';URL=last.php">
<link href="main.css" type="text/css" rel="stylesheet" />
<title>Server Offline</title>
</head>

<body text="" style="background-color:">
<span class="playdisplay"><b>Server Offline or Server maintenance</b> <img border="0" src="/Radiowinamp.gif"></span>
<br>Please try again later.........
</body>

</html>';
}
?>

en dit is het orginele script

PHP:
<?php

//*********** PUT YOUR INFO HERE ***********//
//Configuration
$scdef  =       "His"; 
                                        // ABOVE: Default station name to display when server or stream is down
$scip   =       "relay.fiberhosted.nl";        // ip or url of shoutcast server (DO NOT ADD HTTP:// don't include the port)
$scport =       "XXXX";              // port of shoutcast server
$scpass =       "XXXX";              // password to shoutcast server

$refreshrate =  "60";             // Script/Page refresh time
$bgcolor =      "#E1EBEA";        // page background colour, hex value, default = white, #ffffff

//End configuration
//*********** PUT YOUR INFO HERE ***********//

$scfp = fsockopen("$scip", $scport, &$errno, &$errstr, 30);
 if(!$scfp) {
  $scsuccs=1;
echo''.$scdef.' is Offline';
 }
if($scsuccs!=1){
 fputs($scfp,"GET /admin.cgi?pass=$scpass&mode=viewxml HTTP/1.0\r\nUser-Agent: SHOUTcast Song Status (Mozilla Compatible)\r\n\r\n");
 while(!feof($scfp)) {
  $page .= fgets($scfp, 1000);
 }
 
######################################################################################################################
/////////////////////////part 1 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//define  xml elements
 $loop = array("STREAMSTATUS", "BITRATE", "SERVERTITLE", "CURRENTLISTENERS");
 $y=0;
 while($loop[$y]!=''){
  $pageed = ereg_replace(".*<$loop[$y]>", "", $page);
  $scphp = strtolower($loop[$y]);
  $$scphp = ereg_replace("</$loop[$y]>.*", "", $pageed);
  if($loop[$y]==SERVERGENRE || $loop[$y]==SERVERTITLE || $loop[$y]==SONGTITLE || $loop[$y]==SERVERTITLE)
   $$scphp = urldecode($$scphp);

// uncomment the next line to see all variables
//echo'$'.$scphp.' = '.$$scphp.'<br>';
  $y++;
 }
//end intro xml elements
######################################################################################################################
######################################################################################################################
/////////////////////////part 2\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//get song info and history
 $pageed = ereg_replace(".*<SONGHISTORY>", "", $page);
 $pageed = ereg_replace("<SONGHISTORY>.*", "", $pageed);
 $songatime = explode("<SONG>", $pageed);
 $r=1;
 while($songatime[$r]!=""){
  $t=$r-1;
  $playedat[$t] = ereg_replace(".*<PLAYEDAT>", "", $songatime[$r]);
  $playedat[$t] = ereg_replace("</PLAYEDAT>.*", "", $playedat[$t]);
  $song[$t] = ereg_replace(".*<TITLE>", "", $songatime[$r]);
  $song[$t] = ereg_replace("</TITLE>.*", "", $song[$t]);
  $song[$t] = urldecode($song[$t]);
  $dj[$t] = ereg_replace(".*<SERVERTITLE>", "", $page);
  $dj[$t] = ereg_replace("</SERVERTITLE>.*", "", $pageed);
$r++;
 }
//end song info

fclose($scfp);
}

//display stats
if($streamstatus == "1"){
//you may edit the html below, make sure to keep variable intact
echo'

<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<META HTTP-EQUIV="REFRESH" CONTENT="'.$refreshrate.';URL=/last.php">
<link href="main.css" type="text/css" rel="stylesheet" />
<title>'.$scdef.'</title>
</head>
<body text="" style="background-color:">
<br />
</center>
<span class="boldtype2"><p><b>Song History</b></span>
<br><br>
01. <span class="boldtype3">'.$song[1].'</span><br>
02. <span class="boldtype3">'.$song[2].'</span><br>
03. <span class="boldtype3">'.$song[3].'</span><br>
04. <span class="boldtype3">'.$song[4].'</span><br>
05. <span class="boldtype3">'.$song[5].'</span><br>
06. <span class="boldtype3">'.$song[6].'</span><br>
07. <span class="boldtype3">'.$song[7].'</span><br>
08. <span class="boldtype3">'.$song[8].'</span><br>
09. <span class="boldtype3">'.$song[9].'</span><br>
10. <span class="boldtype3">'.$song[10].'</span><br>


</body>
</html>';

}
if($streamstatus == "0")
{
//you may edit the html below, make sure to keep variable intact
echo'
<html>

<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<META HTTP-EQUIV="REFRESH" CONTENT="'.$refreshrate.';URL=last.php">
<link href="main.css" type="text/css" rel="stylesheet" />
<title>Server Offline</title>
</head>

<body text="" style="background-color:">
<span class="playdisplay"><b>Server Offline or Server maintenance</b> <img border="0" src="/Radiowinamp.gif"></span>
<br>Please try again later.........
</body>

</html>';
}
?>

hij moet dus dit stukje uit de xml halen

[xml] <LISTENERS>
- <LISTENER>
<HOSTNAME>84.31.94.135</HOSTNAME>
<USERAGENT>NSPlayer/12.00.7600.16385 WMFSDK/12.00.7600.16385</USERAGENT>
<UNDERRUNS>0</UNDERRUNS>
<CONNECTTIME>1200</CONNECTTIME>
<POINTER>0</POINTER>
<UID>1600</UID>
</LISTENER>
</LISTENERS>
[/xml]
 
Laatst bewerkt:
Wat geeft
PHP:
print_r($scfp);
terug wanneer je dat op regel 18 zet?

Het is namelijk veel overzichtelijker om het document als XML te lezen dan als string.
 
Ik wil best wat voor je fabriceren, alleen heb ik dan de juiste gegevens nodig om bij de URL te kunnen komen.
Je kunt ze mailen naar thadevil@helpmij.nl

Ik vind de code namelijk nogal omslachtig om een XML te lezen, alleen is het de vraag waar precies die XML ontstaat in de huidige code.
 
Het feit dat het bestand admin.cgi heet doet mij denken dat je in moet loggen om bij dat bestand te komen. En als je dan bijvoorbeeld in je browser ernaartoe navigeert, krijg je wellicht zo het bestand, terwijl je script er vanwege de authenticatie niet bij kan.
 
nee want andere scripts zo als hier boven werken er ook mee.... en daar hebben ze geen problemen en zou je andere foutmelding krijgen niet 404...
 
De basisfunctie aardig herschreven:
PHP:
<?php 
//*********** PUT YOUR INFO HERE ***********//
//Configuration
$url		=	"relay.fiberhosted.nl";	// ip or url of shoutcast server (DO NOT ADD HTTP:// don't include the port)
$port		=	8000;					// port of shoutcast server
$username	=	"USERNAME";				// Administrator username
$password	=	"PASSWORD";				// password to shoutcast server

//End configuration
//*********** PUT YOUR INFO HERE ***********//

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://'. $url .'/admin.cgi?mode=viewxml');
curl_setopt($ch, CURLOPT_PORT, $port);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');
curl_setopt($ch, CURLOPT_USERPWD, $username .':'. $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($ch);
curl_close($ch);

$xml = new SimpleXMLElement($page);
foreach($xml->LISTENERS->LISTENER AS $listener) {
	echo $listener->HOSTNAME .'<br />';
}
?>

Ik vind het in ieder geval een stuk overzichtelijker :)
 
bedankt :D maar als ik nu meer records heb als 1... want in de lijn listeners kunnen er ontelbaar in komen... hoe moet ik dat dan aan pakken ? of zet dit script ze in een aray ?
 
sorry voor dubbel post :$

maar ik ben weer bezig geweest nu moet hij de gegevens van de IP afhalen.... en dat lukt via een bepaalde site maar ook hier komt een xml tevoorschijn..... maar ik denk dat ik het nu wel goed doe aleen hij heeft steets programeer error aan in IE....

PHP:
<?php 
//*********** PUT YOUR INFO HERE ***********//
//Configuration
$url        =   "relay.fiberhosted.nl"; // ip or url of shoutcast server (DO NOT ADD HTTP:// don't include the port)
$port       =   8000;                   // port of shoutcast server
$username   =   "XXXX";             // Administrator username
$password   =   "XXXX";             // password to shoutcast server
 
//End configuration
//*********** PUT YOUR INFO HERE ***********//
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://'. $url .'/admin.cgi?mode=viewxml');
curl_setopt($ch, CURLOPT_PORT, $port);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');
curl_setopt($ch, CURLOPT_USERPWD, $username .':'. $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($ch);
curl_close($ch);
 
 
$xml = new SimpleXMLElement($page);

foreach($xml->LISTENERS->LISTENER AS $listener)
{
    
	
	$ipload = $listener->HOSTNAME .',';
	$loadipfromxml = simplexml_load_file("http://ipinfodb.com/ip_query2.php?ip=". $ipload ."/&timezone=false");
}



 

foreach($loadipfromxml->LISTENERS->LISTENER AS $loadipfromxml2)
for ($r=0; $r<=5; $r++)
{
    
	
	$getland[$r] = $loadipfromxml2->Location id="$r"->CountryName .',';
	$getstad[$r] = $loadipfromxml2->Location id="$r"->City .',';
}
$r++

echo 
$getland[0] 
$getland[1] 
$getland[2] 
$getland[3] ;


?>
 
Als je dat laatste stuk nu hierin veranderd. Je bent een aantal ; vergeten :) Heb 2 methodes neergezet, eentje die de waardes op een nieuwe regel zet en eentje die ze achter elkaar plaatst. Kijk maar even welke je het handigste vind.

PHP:
<?php

$r++;

// Methode 1
echo $getland[0] . "<br />";
echo $getland[1] . "<br />";
echo $getland[2] . "<br />";
echo $getland[3];

// -------OF
// Methode 2
echo $getland[0] . " - " . $getland[1] . " - " . $getland[2]. " - " . $getland[3];

?>


Die $r++ achter de laatste forloop kan ook wel weg (als dit tenminste het eind van je script is). Hij voert immers niet meer uit en is dus eigenlijk nutteloos.


Tipje: Geef volgende keer ook even de foutmelding ook aan, dat maakt het iets makkelijker zoeken voor ons om je te helpen :)
 
hij geeft geen error aan internet explore heeft aan : programeerfout.....
 
Je weet dat je huidige code steeds $loadipfromxml overschrijft en alleen het laatste IP toont?

Als je voor elk IP een XML wilt parsen zul je dat binnen de FOREACH moeten doen van de "listeners"
Van deze code klopt ook helemaal niets
PHP:
foreach($loadipfromxml->LISTENERS->LISTENER AS $loadipfromxml2)
for ($r=0; $r<=5; $r++)
{
    
    
    $getland[$r] = $loadipfromxml2->Location id="$r"->CountryName .',';
    $getstad[$r] = $loadipfromxml2->Location id="$r"->City .',';
}
$r++
 
echo 
$getland[0] 
$getland[1] 
$getland[2] 
$getland[3] ;
Je start een FOREACH met een array die helemaal niet bestaat, daarnaast wordt niet aangegeven wat de FOREACH moet gaan doen (d.m.v. accolades)

Dan start je een FOR-lus (waarom?) welke 5x moet draaien waarbij het land en de stad moet worden achterhaalt.
Maar wat wil je bereiken met het stuk "Location id="$r"->CountryName"? Wat moet het id="$r"-gedeelte doen?
Sowieso werkt het niet want je kunt niet zomaar spaties in een variabele-naam zetten.

Dit lijkt mij betere code:
PHP:
<?php 
//*********** PUT YOUR INFO HERE ***********//
//Configuration
$url		=	"relay.fiberhosted.nl";	// ip or url of shoutcast server (DO NOT ADD HTTP:// don't include the port)
$port		=	8000;					// port of shoutcast server
$username	=	"USERNAME";				// Administrator username
$password	=	"PASSWORD";				// password to shoutcast server

//End configuration
//*********** PUT YOUR INFO HERE ***********//

$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, 'http://'. $url .'/admin.cgi?mode=viewxml');
curl_setopt($ch, CURLOPT_PORT, $port);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');
curl_setopt($ch, CURLOPT_USERPWD, $username .':'. $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($ch);
curl_close($ch);

$xml = new SimpleXMLElement($page);
foreach($xml->LISTENERS->LISTENER AS $listener) {
	$ipdata = simplexml_load_file("http://ipinfodb.com/ip_query2.php?ip=". $listener->HOSTNAME);
	echo 'IP: '. $listener->HOSTNAME .' uit '. $ipdata->Location->City .', '. $ipdata->Location->CountryName .'<br />';
}
?>
Begrijp je zaken niet, vraag het dan zodat we je er mee kunnen helpen in plaats van zelf wat knutselen en hopen dat het goed is. :)
Snap je hoe je een XML kunt lezen en wat de aangeroepen functies doen?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan