Probleme mit Tutorial "Auf der HP anzeigen, was Winamp macht"

Moritz123

Erfahrenes Mitglied
Hallo!

ich beziehe mich auf: http://www.tutorials.de/tutorials77346.html

Ich habe das früher auf meiner lokalen Maschine perfekt mit AppServ am laufen gehabt. Leider ist mir die Festplatte abgeraucht und ich musste neu installieren. Als WAMPP habe ich diesmal statt Appserv XAMPP gewählt und konnte die alten Daten wieder herstellen.
Aber: seit dem ich XAMPP laufen habe, erhalte ich statt des Titels nur den HTTP-Response-Code in der Ausgabe:
Wenn ich mit folgender Funktion den Titel abfrage...
PHP:
function httpQ($command, $arg)
{
  $pass = "test";
  $port = 4800;
  $fp = fsockopen("127.0.0.1", $port, &$errno, &$errstr);
  
  if(!$fp) 
  {
    echo "$errstr($errno)\n";
  }
  else 
  {
    if(($arg == "")) 
    {
      $msg = "GET /$command?p=$pass HTTP/1.0\r\n\r\n";
    }
    else 
    {
      $msg = "GET /$command?p=$pass&a=$arg HTTP/1.0\r\n\r\n";
    }

    fputs($fp, $msg);
    while(!feof($fp)) 
    {
      return fgets($fp,128);
    }
  }
  fclose($fp);
}
... erhalte ich den folgenden Response-Code, statt ein "vernünftiges" Ergebnis:
Code:
HTTP/1.0 200 OK

Als Argumente schicke ich folgendes an die Funktion:
PHP:
$titel = "";
					$titel = httpQ(getcurrenttitle, $titel);
					echo $titel;
					$titel = explode(".", $titel);
					$titel = explode("-", $titel[1]);
					$titel[0] = trim($titel[0]);
					$titel[1] = trim($titel[1]);
Ich finde das recht merkwürdig - kann das mit der PHP-Konfiguration zusammenhängen?

Nachtrag: Ich habe spasseshalber mal folgendes gemacht:
PHP:
include("http://localhost:4800/getcurrenttitle?pass=test");
Und siehe da: es klappt. Nur kann ich das auf meinem "richtigen" Webserver so natürlich nicht laufen lassen.Ich kapier das nicht.... :confused:
 
PHP:
$antwort = file_get_contents('http://localhost:4800/getcurrenttitle?pass=test');
Das sollte es tun :)

Ich kann mir ehrlich gesagt nicht vorstellen, dass die Funktion httpQ mal geklappt haben sollte. Normalerweise wird als erste Zeile immer der Antwortheader zurückgegeben. Kann natürlich sein, dass am Winamp-Plugin was geändert wurde.
 
Doch sie hat es.
Nach dem ersetzen erhalte ich folgenden Fehler:
Code:
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: gethostbyname failed in F:\apachefriends\xampp\htdocs\www\mssparty\index.php on line 47

Warning: fsockopen() [function.fsockopen]: unable to connect to http://127.0.0.1:4800 in F:\apachefriends\xampp\htdocs\www\mssparty\index.php on line 47
Der Vorgang wurde erfolgreich beendet. (0) 
Warning: fclose(): supplied argument is not a valid stream resource in F:\apachefriends\xampp\htdocs\www\mssparty\index.php on line 70
Turbonegro - Are You Ready (For Some Darkness)
Wobei die letzte Zeile vom include() herstammt.
Ich raff es nicht. Kann man in der Apache- oder PHP-Konfig irgendwo was dementsprechendes einstellen? Ich kann mir nicht erklären, warum es mit dem Appserv-Paket ging und jetzt nicht. Komisch...
 
Uhh.. hab mal wieder nicht richtig gelesen! Manchmal könnt ich mir echt mit der flachen hand voll vor die Stirn schlagen... danke-es geht.
 
Fragt mich jetzt bitte nicht woran das liegt, aber so sollte das nun gehen:

Code:
function httpQ($command)
{
  $pass = "pass";
  $port = 4800;
  $fp = fsockopen('localhost', '4800', $errno, $errstr, 30);
  
  if(!$fp) 
  {
    echo "$errstr ($errno)\n";
  }
  else 
  {
      $msg = "GET /$command HTTP/1.0\r\n\r\n";
    fputs($fp, $msg);
    while(!feof($fp)) 
    {
    	$var[] = fgets($fp,128);
    }
    return $var[4];
  }

  fclose($fp);
}

echo httpQ("getid3tag?p=pass&tags=t,a,y,g,l&delim=<br>");

Die änderungen im Folgendem:
Bei der Funkton httpQ habe ich $arg rausgenommen. Stattdessen muss nun der komplette Query String (im Beispiel "getid3tag?p=pass&tags=t,a,y,g,l&delim=<br>") beim Aufruf übergeben werden. Diesen kann man in der httpQ Referenz nachlesen.
Desweiteren wird das ergebniss in ein Array gesteckt, und das 5. Element ($var[4]) zurückgegeben. Dieses enthält nämlich die gewünschten Daten. Sollte das nicht der fall sein, einfach ne andere Zahl ausprobieren. $var[0-3] sind einfach nur Response Codes wie "HTTP/1.0 200 OK".

Villeicht kann der Tutorial Schreiber ja sein Tutorial ergänzen oder wie auch immer. ;)
 
Zurück