see4far: imagecratefrom...

Hallo!

Kann mir jemand sagen, wie ich meinen Online-/Offline-Status von ICQ mit PHP einlesen kann? Also über:
http://wwp.icq.com/scripts/online.dll?icq=135948530&img=2
oder
http://web.icq.com/whitepages/online?icq=135948530&img=2

Weis nur nicht wie ich ein solches Bild nach PHP rein krieg ...

Vielleicht kann mir ja jemand helfen.

Danke.

Simon Fabian

  1. Hallo!

    Kann mir jemand sagen, wie ich meinen Online-/Offline-Status von ICQ mit PHP einlesen kann?

    so: http://www.php-faq.de/q/q-code-icq.html

    Also über:

    http://wwp.icq.com/scripts/online.dll?icq=135948530&img=2
    oder
    http://web.icq.com/whitepages/online?icq=135948530&img=2

    Weis nur nicht wie ich ein solches Bild nach PHP rein krieg ...

    Was bringt Dir das? Du willst ja nicht das bild sondern die Information, dazu reicht der Bildname! Udn genau so funklitoniert das mit obigem Link, ob das tatsächlich heute oder morgen noch funktioniert steht aber in den Sternen!

    Grüße
    Andreas

    1. Ich will wie du schon richtig erkannt hast, halt den Text haben, aber irgendwie funzt das script bei mir nicht. Stattdessen steht dann in der $request-Variable am Ende:
      "Location: http://status.icq.com/online.gif?icq=135948530&img=5"

      Was mache ich falsch? Oder funktioniert es schon jetzt nicht mehr?

      see4far

      1. Meine natürlich die $response-Variable.

        see4far

      2. Hallo!

        Ich will wie du schon richtig erkannt hast, halt den Text haben, aber irgendwie funzt das script bei mir nicht. Stattdessen steht dann in der $request-Variable am Ende:
        "Location: http://status.icq.com/online.gif?icq=135948530&img=5"

        Sieht so aus als hätten die das mal wieder geändert, und das wird nicht das letzte mal bleiben. Ändere im Script die alte host-Adresse(web.icq.com) in die neune (status.icq.com), und passe den Pfad an.

        Bitte lies http://www.php3.de/manual/de/function.fsockopen.php INKLUSIVE KOMMENTARE!

        Was mache ich falsch? Oder funktioniert es schon jetzt nicht mehr?

        sieht fast so aus.

        Grüße
        Andreas

        1. tut mir leid, aber irgendwie klappt das nicht so ganz, wie du meinst.
          Wäre echt nett, wenn du mir einfach mal den Code so hinschreiben würdest, wir er richtig lauten muss. Wenn ich nämlich den Host auf status.icq.com abändere, kommt erst recht nichts raus.

          Besten, allerbesten Dank.

          see4far

          1. Hi!

            tut mir leid, aber irgendwie klappt das nicht so ganz, wie du meinst.
            Wäre echt nett, wenn du mir einfach mal den Code so hinschreiben würdest, wir er richtig lauten muss.

            Nö, sorry.

            Wenn ich nämlich den Host auf status.icq.com abändere, kommt erst recht nichts raus.

            Du mußt auch den Pfad anpassen, lies bitte den geposteten Link zum Manual-Kapitel von fsockopen.

            Grüße
            Andreas

            1. War mir eigentlich klar, deshalb egal ...

              Aber das Problem ist ja nicht, dass ich den Pfad nicht austauschen könnte, sondern vielmehr, dass ich auch nur die Adresse kenne, die da drin steht. Und in dem Manual steht eigentlich auch nicht über ICQ oder bin ich doch neuerdings blind?

              see4far

              1. Hi!

                Aber das Problem ist ja nicht, dass ich den Pfad nicht austauschen könnte, sondern vielmehr, dass ich auch nur die Adresse kenne, die da drin steht.

                Der server sendet eine Weiterleitung zu einem Server, so das online-Script zu erreichen ist. Genau das war location.... den host habe ich Dir rausgeschnitten, dern mußtest Du im Scrip tersetzen, selbiges mit dem Pfad, "/whitepages/online?icq=$uin&img=5" ist z.B. ein Pfad(mit Parameter).

                Und in dem Manual steht eigentlich auch nicht über ICQ oder bin ich doch neuerdings blind?

                Nein. Aber das ganez hat hrzlich weniog mit ICQ zu tun, außer den Hostnamen und den Pfad. Es wird ein HTTP-Request an den ICQ-Server gesendet. Und genau unter demn link ist erklärt wie sowas funktioniert, mit vielen Beispielen(in den Kommentarten)

                Grüße
                Andreas

                1. Aber das Problem ist ja nicht, dass ich den Pfad nicht austauschen könnte, sondern vielmehr, dass ich auch nur die Adresse kenne, die da drin steht.
                  Der server sendet eine Weiterleitung zu einem Server, so das online-Script zu erreichen ist. Genau das war location.... den host habe ich Dir rausgeschnitten, dern mußtest Du im Scrip tersetzen, selbiges mit dem Pfad, "/whitepages/online?icq=$uin&img=5" ist z.B. ein Pfad(mit Parameter).

                  Ich find das ja immer doof, wenn ich andere so nerve, aber es muss halt sein. Also, wir sind uns doch einig, dass das Script unter http://www.dclp-faq.de/q/q-code-icq.html eigentlich funktionieren sollte. Tuts aber nicht. Momentan kriege ich auch diesen Location-String nicht mehr. Und ich wollte eigentlich jetzt nur wissen was daran falsch ist. Wenn ich momentan echo $response; reinschreibe, dann kommt immer ne Fehlerseite, obwohl ich persönlich jetzt einen String erwarten würde. Vermutlich ist aber genau das die Weiterleitung oder vertue ich mich da? Wenn aber bei der Weiterleitung eine Fehlerseite kommt, scheint die URL auch nicht mehr zu funktionieren. Also müsste ich quasi eine "neue" URL benutzen. Ich hoffe du hast jetzt verstanden wo mein Problem liegt. Tut mir echt leid, dass ich es irgendwie nicht so verstehe, wie du mir es erklären willst, wäre aber trotzdem toll, wenn du mir auf die Sprünge helfen würdest.

                  see4far

                  1. Hi!

                    Ich find das ja immer doof, wenn ich andere so nerve, aber es muss halt sein. Also, wir sind uns doch einig, dass das Script unter http://www.dclp-faq.de/q/q-code-icq.html eigentlich funktionieren sollte. Tuts aber nicht. Momentan kriege ich auch diesen Location-String nicht mehr. Und ich wollte eigentlich jetzt nur wissen was daran falsch ist. Wenn ich momentan echo $response; reinschreibe, dann kommt immer ne Fehlerseite, obwohl ich persönlich jetzt einen String erwarten würde. Vermutlich ist aber genau das die Weiterleitung oder vertue ich mich da? Wenn aber bei der Weiterleitung eine Fehlerseite kommt, scheint die URL auch nicht mehr zu funktionieren. Also müsste ich quasi eine "neue" URL benutzen. Ich hoffe du hast jetzt verstanden wo mein Problem liegt. Tut mir echt leid, dass ich es irgendwie nicht so verstehe, wie du mir es erklären willst, wäre aber trotzdem toll, wenn du mir auf die Sprünge helfen würdest.

                    Ich sage s jetzt zum dritten mal, lese das Manual und versuche das Beispiel zu verstehen. Das Problem ist die Pfad-Angabe, der alte Pfad hinter HEAD... stimmt nicht mehr und muss gegen den welchen Du zwischenzeitlich als Location-Header vom Server erhalöten hast austauschen. Die Host-Adresse hatte ich wi egeat bereits genannt. Du wirst es nur lösen klönnen wenn Du das Beispiel im Manual verstehst. Und wenn alle Stricke reißen mach es wie alle anderen und Binde das Bild direkt in die Homepage ein!

                    Grüße
                    Andreas

                    1. Danke. Ich hatte die ganze Zeit nicht verstanden, dass ich diese Adresse nun da einsetzten sollte. Nun aber das nächste Problem. Als $response kommt jetzt folgendes zurück:
                         HTTP/1.1 404 Not Found
                         Date: Sat, 15 Feb 2003 21:42:10 GMT
                         Server: Apache
                         Connection: close
                         Content-Type: text/html; charset=iso-8859-1
                      Also Seite nicht da. Mein Fehler?

                      see4far

                      1. Hi!

                        Danke. Ich hatte die ganze Zeit nicht verstanden, dass ich diese Adresse nun da einsetzten sollte. Nun aber das nächste Problem. Als $response kommt jetzt folgendes zurück:
                           HTTP/1.1 404 Not Found
                           Date: Sat, 15 Feb 2003 21:42:10 GMT
                           Server: Apache
                           Connection: close
                           Content-Type: text/html; charset=iso-8859-1
                        Also Seite nicht da. Mein Fehler?

                        sieht so aus, poste mal Deinen Code!

                        Grüße
                        Andreas

                        1. War wirklich mein Fehler :-)
                          So gehts:
                          <?PHP

                          function GetICQ($uin) {
                              if (!is_numeric($uin)) return FALSE;

                          $fp = fsockopen('status.icq.com', 80, &$errno, &$errstr, 8);
                              if (!$fp) return FALSE;

                          $request = "HEAD /online.gif?icq=135948530&img=5  HTTP/1.0\r\n"
                                        ."Host: status.icq.com\r\n"
                                        ."Connection: close\r\n\r\n";
                              fputs($fp, $request);

                          do {
                                  $response = fgets($fp, 1024);
                              }
                              while (!feof($fp) && !stristr($response, 'Location'));

                          fclose($fp);

                          if (strstr($response, '4367')) return 'online';
                              if (strstr($response, '4349')) return 'offline';
                              if (strstr($response, '4386')) return 'disabled';
                              return $response;
                          }

                          // Aufruf:
                          echo GetICQ(135948530);

                          ?>

                          Die Funktion gibt mir nun
                          Location: /5/online1.gif  für online und
                          Location: /5/online0.gif  für offline zurück.

                          Jetzt kann ich das ja einfach mal einsetzten. Danke dir vielmals für deine gute Hilfe.

                          see4far

                          1. Wieso funktioniert das so nicht:

                            if ($response == "Location: /5/online1.gif ") return 'online';
                                if ($response == "Location: /5/online0.gif ") return 'offline';
                                if ($response == "Location: /5/online2.gif ") return 'disabled';
                                return FALSE;

                            Also am Ende der Function ...

                            see4far

                            1. Hi!

                              Wieso funktioniert das so nicht:

                              vermutlich wegen eiens Leerzeichens oder zeilenumbruches. Sehe dir die Funktion trim() an.

                              if ($response == "Location: /5/online1.gif ") return 'online';
                                  if ($response == "Location: /5/online0.gif ") return 'offline';
                                  if ($response == "Location: /5/online2.gif ") return 'disabled';
                                  return FALSE;

                              Aber ich wäre da vorsichtig, ich würde eher auf das Vorhandensein von 'online0' etc suchen. Im alten code:

                              if (strstr($response, '4367')) return 'online';

                              wurde nach vorhandesein von 4367 geguckt. Im Manual zu strstr() steht genau wie das funktioniert.

                              Viele Grüße
                              Andreas

                              1. So habe ich es jetzt auch gemacht.

                                Nochmals besten Dank.
                                see4far

                  2. Momentan kriege ich auch diesen Location-String nicht mehr.

                    Komisch, wenn ich das Script hochlade, kommt doch das mit der Location. Was ist denn der Unterschied zwischen meinem Rechner und dem Server. Ich hab doch hier auch PHP am laufen und normal funzt es auch.

                    ssee4far