Stream Daten Auslesen

Hallo ich habe da mal eine algemeine Frage.

Ich habe da so mit PHP1.6.1 eine HP augebaut und wollte einen Stream Stats einbauen (Navbox) das geht ja auch ohne probleme, jedoch um diese Navbox mit leben zu füllen muß mein musik Stream augelesen werden, für titelanzeige hörer zahlen usw.
und das haut nicht hin. also der quellcode von dem auslesen sieht so aus


<?php

//////////////////////////////////open connection\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//connect to shoutcast server
//Configuration
$scdef = "Radio-Magma - der Sound mit biss"; // Default station name to display when server or stream is down
$scip = "s7.pop-stream.de"; // ip or url of shoutcast server
$scport = "7260";     // port of shoutcast server
$scpass = "**********"; // password to shoutcast server
$scdj = "http://s7.pop-stream.de/show.php?server=s7.pop-stream.de&port=7260&data=sendung"; // Dj Anzeige
$scwinamp = "http://s7.pop-stream.de:7260/listen.pls"; // Winamp Stream start
$scmedia = "http://s7.pop-stream.de:7260/listen.m3u"; // Mediaplayer Stream start
$scitune = "http://s7.pop-stream.de:7260/listen.pls"; // iTunes Stream start
$screal = "http://s7.pop-stream.de:7260/listen.ram"; // Realplayer Stream start
$scref = "300"; // refresh der seite
//-------------------Member bereich
$scuser = "member"; // welcher status für memberbereich
$scuser1 = "user"; // welcher status für userbereich
$scinfo = "#ff0000"; // Info farbe
//////////////////////////////////End configuratio\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
$info=$DB->fetch_array($DB->query("SELECT * FROM ".$db_tab['user']." WHERE user_nick='".$USER['nick']."' AND user_email='".$USER['mail']."' AND user_id='".$USER['id']."' LIMIT 1"));

$nick = $USER['nick'];
$mail = $USER['mail'];

//End configuration
$scfp = @fsockopen("$scip", $scport, &$errno, &$errstr, 30);
 if(!$scfp) {
  $scsuccs=1;
 }
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", "CURRENTLISTENERS", "MAXLISTENERS");
 $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)
   $$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]);
  $string1= $maxlisteners-$currentlisteners;
  $song[$t] = urldecode($song[$t]);

$r++;
 }
//end song info

fclose($scfp);
}

//display stats
if($streamstatus == "1"){
if(getrights(''.$scuser1.'')) {
//you may edit the html below, make sure to keep variable intact
$site_body .= '
<meta content="'.$scref.'" http-equiv="refresh">

<table class="contentbody" width="100%" cellspacing="1" cellpadding="4">
<tr>  
  <!-- <script language="JavaScript" src="'.$scdj.'"></script> -->	
	<td class="heads" colspan="2"><script language="JavaScript" src="'.$scdj.'"></script></td>
</tr>
  <tr>
    <td valign="top" class="standard" width="75%"><table width="100%" border="0" cellspacing="1" cellpadding="4">
  <tr>
    <th scope="row"><tr>
	
	<td valign="top" class="standard" align="center" width="100%">
	<font style="font-size:11pt"><b>Zur Zeit l&auml;uft dieser Titel:</b></font><br>
	<font style="font-size:8pt"><span style="color:'.$scinfo.'"><b>'.$song[0].'</b></span></font><br><hr>
	<font style="font-size:10pt"><b>Diese Titel spielten wir vorher</b></font><br>
	<font style="font-size:8pt">
	1. '.$song[1].'<br>
	2. '.$song[2].'<br>
	3. '.$song[3].'<br>
	4. '.$song[4].'<br>
	5. '.$song[5].'<br>
	6. '.$song[6].'<br>
	7. '.$song[7].'<br>
	8. '.$song[8].'<br>
	9. '.$song[9].'</font>
	</th>
  </tr>
</table>
</td>
    
	<td valign="top" class="standard" width="25%"><table width="100%" border="0" cellspacing="1" cellpadding="4">
  <tr>
    <th align="left" class="standard"><img border="0" src="images/anzeige/winamp.gif"> <a target="_blank" href="'.$scwinamp.'"> Winamp Player</a></th>
  </tr>
  <tr>
    <th align="left" class="standard"><img border="0" src="images/anzeige/wmplayer.gif"> <a target="_blank" href="'.$scmedia.'"> Media Player</a></th>
  </tr>
  <tr>
    <th align="left" class="standard"><img border="0" src="images/anzeige/realplayer.gif"> <a target="_blank" href="'.$screal.'">Real Player</a></th>
  </tr>
  <tr>
    <th align="left" class="standard"><img border="0" src="images/anzeige/itunes.gif"> <a target="_blank" href="'.$scitune.'">iTunes Player</a></th>
  </tr>
  <tr>
  <!-- +++++++++++++++++++++++++++++++ Darf nicht verändert oder gelöscht werden ++++++++++++++++++++++++++++++++++++ -->
<td valign="bottom" class="standard" align="center"><br><br><br><br><a href="http://www.kit-power.de" target="_new"><img src="http://www.kit-power.de/content/images/stats.jpg" alt="Kit-power" titel="Kit-power" border="0"  /></a></td>
<!-- +++++++++++++++++++++++++++++++ Darf nicht verändert oder gelöscht werden ++++++++++++++++++++++++++++++++++++ -->
</tr>
</table></td>
  </tr>
</table>



';

}
//--------------------------------------- member bereich
if(getrights(''.$scuser.'')) { 

$fp =@fsockopen("$scip", $scport, &$errno, &$errstr, 3); //open connection
if(!$fp) {
$success=2; //se-t if no connection
}
if($success!=2){ //if connection
fputs($fp,"GET /7.html HTTP/1.0\r\nUser-Agent: XML Getter (Mozilla Compatible)\r\n\r\n"); //get 7.html
while(!feof($fp)) {
$page .= fgets($fp, 1000);
}
fclose($fp); //close connection
$page = ereg_replace(".*<body>", "", $page); //extract data
$page = ereg_replace("</body>.*", ",", $page); //extract data
$numbers = explode(",",$page); //extract data
$currentlisteners=$numbers[0]; //set variable
$connected=$numbers[1]; //set variable

if($connected==1) //if DSP is connected
$wordconnected="yes"; //set variable
else //if no DSP connection
$wordconnected="no"; //set variable
$peaklisteners=$numbers[2]; //set variable
$maxlisteners=$numbers[3]; //set variable
$reportedlisteners=$numbers[4]; //set variable
}
$site_body .= '
<table>
		<tr>
<td width="100%"><img border="0" height="6" width="1" alt="" src="images/blank.gif"/></td>
</tr>
</table>
<table class="contentbody" width="100%" cellspacing="1" cellpadding="4">
<tr>
	<td class="heads" colspan="3">Dj Stream Infos - [Sichtbar ab den Status '.$scuser.']</td>
</tr>
<tr>
	<td class="standard" align="center" width="20%"> Sendet mit '.$bitrate.' kbps                              </td>
	<td class="standard" align="center" width="60%">
	<font style="font-size:8pt"><span style="color:'.$scinfo.'"><b>Sendezeiten bitte in den Kalender eintragen!</b></span></font><br>
	
	
	</td>
	<td class="standard" align="center" width="20%">      '.$currentlisteners.'&nbsp; Hörer Online<br>
	                                                      Max User&nbsp; '.$maxlisteners.'                             </td></tr></table>';

}

}
else

$site_body .= '

<meta content="'.$scref.'" http-equiv="refresh">


<table class="contentbody" width="100%" cellspacing="1" cellpadding="4">
		<tr>
	<td class="heads" colspan="3">Radio Magma</td>
</tr>
<tr>
	 
	<td class="standard" align="center">
	<font style="font-size:11pt"><b>Radio Magma ist Offline</b></font><br>
	<font style="font-size:8pt"><span style="color:'.$scinfo.'"><b>on Air täglich von 16 - 24 Uhr</b></span></font><br>
	</td>
</tr></table>';

?>

Ist in dem ganzen code ein fehler ?
weil der angeblich funktioniert nur be bp wohl nicht.

ist das auslesen von daten bei bp überhaupt erlaubt bzw möglich?
danke für die hilfe

Also was ich weiß, ich finde keine Klasse Namens “DB”

mit DB meinst du daten Bank oder?
und wen ja welche datenbank?
die wo das kit drauf ist?
denn alles was zum Stream gehört ist ja bereits eingetragen.

Da haben wir’s. Du solltest doch eigentlich auch eine Fehlermeldung erhalten haben, die dir sagt, was du wissen musst.

Da haben wir’s. Du solltest doch eigentlich auch eine Fehlermeldung erhalten haben, die dir sagt, was du wissen musst.

ne ebend nicht da wurde immer nur offline angezeigt,
und das forum wo ich es her habe meinte dan bplaced läst das auslesen nicht zu konnte ich mir aber nicht wirklich vorstellen deswegen habe ich hier nochmal nachgefragt.

ich probiere es gleich mal aus

Also dieses Script hat bei uns bisher immer problemlos funktioniert, vielleicht guckst du dir das mal an. Auf meiner alten Seite (die auch bei bplaced lag) hatte ich das Teil drin, als Statusmodul zum damaligen NightPlanetRadio-Stream. Wenn man es leicht modifiziert und sich die Dinge rausnimmt, die man tatsächlich braucht ist das Tool absolut zu empfehlen.

Sorry, da habe ich nicht mitgedacht, das @-Symbol verhindert die Fehlermeldung ja.

Das Problem hier ist, dass fsockopen() deaktiviert ist.

super nun bin ich genau so schlau wie vorher :ps:
$nick = $USER[‚nick‘];
$mail = $USER[‚mail‘];

//End configuration [color=#0000FF]$scfp = @fsockopen("$scip", $scport, &$errno, &$errstr, 30);[/color]if(!$scfp) { $scsuccs=1; } 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); }
habe ich ja noch gefunden aberd das mit fool finde ich nicht oder muß ich das einfügen???

bitte hilfe mir raucht schon der kopf danke

Das Skript funktioniert hier nicht, da essentielle Funktionen aus Sicherheitsgründen serverseitig gesperrt sind.
Betrifft im speziellen die Funktion fsockopen().
Mach das @ davor weg, dann wirft es dir auch die Fehlermeldung aus das diese Funktion hier gesperrt ist.

Das mit dem “fool” ist die Signatur von Scram.

hm kann man das umschreiben das es funz???

was macht das “fsockopen” überhaupt???
vieleicht brauche ich die funkion ja garnicht

fsockopen ist die funktion welche die Verbindung zum Streamserver aufbaut. Sie ist also für dein Script schon wichtig, wohl eher gesagt die wichtigste überhaupt.

Je nachdem wie die Daten vom Streamserver zur verfügung gestellt werden, gibt es vielleicht alternativen, vielleicht aber auch nicht.
Jedoch weiß ich nicht ob es hier überhaupt möglich ist in irgendeiner Form Zugriff auf externe Daten zu erhalten.

mfg Balmung

also ich habe nun mal das skript von kerbination so weit modifiziert wie ich glaube das ich es mußte.

[code]
//Configuration
$scdef = “Radio-Magma”; // Default station name to display when server or stream is down
$scip = “s7.pop-stream.de”; // ip or url of shoutcast server
$scport = “7260”; // port of shoutcast server
$scpass = “XXXXXXXXX”; // password to shoutcast server
$ircsite = “irc.server.net”;
$file = “shout.xml”; // file to write to. remember to chmod 777 to not get errors
$cache_tolerance = 120; // How many seconds old the cache file can get
//End configuration

[/code]nur ob ich nun bei $ircsite das richtige drin habe weiß ich nicht das stand schon und ich weiß nicht womit ich das ersetzen soll.
hochgeladen habe ich ds auch schon aber wie bekomme ich das ding nun in eine Nav box???
es wurde nämlich keine neue zur verfügung gestellt.

Ich hab dir die Erläuterung gerade per PM geschickt.

Das Script funktioniert sowiso nicht…fosckopen ist auf bplaced nicht aktiviert

Richtig. Man muss es auf einen anderen Host auslagern und per include oder IFrame dann bei bplaced einbinden.

Oder via AJAX.

btw: Wenn es lediglich darum geht Status Informationen auszulesen, bietet Shoutcast meist eine spezielle Datei an: /7.html
Im oben genannten Beispiel wäre es: http://s7.pop-stream.de:7260/7.html

mfg Balmung

Ist Ajax bei bplaced nicht verboten? :qst:

AJAX ist clientseitig, also wird nur der Browser belastet. bplaced hat keinen Grund das zu verbieten, und kann es auch gar nicht effektiv vermeiden.

stimmt, allerdings blockieren die meisten Browser AJAx-Aufrufe in eine andere Domain…