cartman1991 Geschrieben 19. Januar 2010 Geschrieben 19. Januar 2010 Servus, Ich würd gern alle 10 Minuten nen Status Check von nem bestimmten ICQ-User machen, aber ich komm gerade nich so weiter :/ Abfragen tu ich das mit http://web.icq.com/whitepages/online?icq=331854555&img=1 damit erhalte ich dann n "Online-Bild" oder Offline je nachdem. Wenn ich jetzt die URL direkt im Browser eingebe, ändert sich die Adresse auf http://status.icq.com/1/online1.gif Jetzt meine Frage, kann ich diese Adresse irgendwie auslesen ohne dafür n extra Fenster öffnen zu müssen? Bzw. die aktuelle URL des Bildes auszulesen? Mfg Cartman
etreu Geschrieben 19. Januar 2010 Geschrieben 19. Januar 2010 Ein Socket öffnen, die HTTP-Anfragen erzeugen und die Anfragen auswerten. Es gibt auch verschiene fertige Bibliotheken (HttpClients). Mit dem periodischen Anfragen musst du dir noch was anderes einfallen lassen, da Skipte im Allgemeinen einer Beschränkung der Laufzeit unterliegen.
VaNaTiC Geschrieben 19. Januar 2010 Geschrieben 19. Januar 2010 Das beste was ich bisher gefunden hab ist das hier: http://www.icq.com/js/pcc.php?Uin=1509452 Das liefert Dir JavaScript-Variablen, die sich relativ einfach parsen lassen. Die Zeile mit gl_status = gl_pcc_info\[6\] = "1"; ist Dein Freund. 0 = offline 1 = online 2 = unknown, z.bsp. weil Web-Indikator disabled (wie bei mir persönlich)
cartman1991 Geschrieben 20. Januar 2010 Autor Geschrieben 20. Januar 2010 Moin Also das klappt alles soweit sogut, doch wenn ich jetzt versuch den Status in ne Textdatei zu speichern, macht er das einfach nicht D: Hab auch mehrmals Groß und Kleinschreibung überprüft :/ $status = "\n [".$uhrzeit."], Status: ".$check."! "; $protokoll = "Prot.txt"; $fp = fopen($protokoll, "a"); fputs($fp, $status); fclose($fp); [/PHP] Findet ihr vllt. irgendwo n Tippfehler oder was anderes :S? mfg
VaNaTiC Geschrieben 20. Januar 2010 Geschrieben 20. Januar 2010 (bearbeitet) Probier mal diesen Hinweis für fopen() Hinweis: Zusätzlich kann mode der Buchstabe 'b' hinzugefügt werden, der die Behandlung von Binärdateien erlaubt. Dies ist nur auf Systemen sinnvoll, welche zwischen Binär- und Text-Dateien unterscheiden (z.B. Windows. Ist bei Unix sinnlos). Wenn das Feature nicht gebraucht wird, wird es einfach ignoriert. Sie sollten den 'b' Flag verwenden, um Ihre Skripte portabler zu machen. Ansonsten splitte das Problem in zwei Teilprobleme: 1) $status auf dem Bildschirm ausgeben -> prüfen ob OK 2) "TEXT" in Deine Datei schreiben ohne 1) -> prüfen ob wenigstens das OK Bearbeitet 20. Januar 2010 von VaNaTiC
cartman1991 Geschrieben 20. Januar 2010 Autor Geschrieben 20. Januar 2010 (bearbeitet) Hab ich beides getestet, $status, gibt er mir ganz normal aus wie ich's möchte, doch den Text schreibt er nicht in die Datei. Werd auch das gleich mal mit dem "b" ausprobieren Edit: Wegen diesem "b"-mode, soll der dann einfach "hinzugefügt" werden, quasi $fp = fopen($protokoll, "ab"); Bearbeitet 20. Januar 2010 von cartman1991
cartman1991 Geschrieben 20. Januar 2010 Autor Geschrieben 20. Januar 2010 Funktioniert leider auch nicht mit dem b mode :/
VaNaTiC Geschrieben 20. Januar 2010 Geschrieben 20. Januar 2010 Wegen diesem "b"-mode, soll der dann einfach "hinzugefügt" werden, quasi $fp = fopen($protokoll, "ab"); Genau. Laut dem Hinweis und aus eigenen Erfahrungen mit C ist das b bei Windows nicht unwichtig Aber es ist nur ein Versuch. Wetten würd ich nicht darauf! Du kannst Dir auch mal die Error-Logs angucken. Wenn es ein PHP im Apache ist, dann findest Du das unter C:\Programme\Apache Group\Apache\logs In aller Regel sollte allerdings der Fehler auch auf der WebSeite ausgegeben werden.
cartman1991 Geschrieben 20. Januar 2010 Autor Geschrieben 20. Januar 2010 Hab hier auf'm Rechner kein Apache laufen, der Webspace ist von multimania.de Kann ich die Fehlermeldung nicht noch irgendwie erzwingen? :S
VaNaTiC Geschrieben 20. Januar 2010 Geschrieben 20. Januar 2010 Du hast nicht gesagt, dass es auf einem anderen Webserver läuft. Hast Du mit Deinem FTP-Programm die Rechte für das Verzeichnis oder besser nur für die Prot.txt auf 777 gesetzt?
cartman1991 Geschrieben 20. Januar 2010 Autor Geschrieben 20. Januar 2010 :pssst: Das hab ich total vergessen, glaub da wär ich jetz nich mehr drauf gekommen ^^ Danke Hab grad mal zum testen "is_readable", auf "http://www.icq.com/js/pcc.php?Uin=154094527" gemacht und n negatives Ergebnis zurückbekommen :/ Hab bis jetzt mit Copy: copy("http://www.icq.com/js/pcc.php?Uin=459937621", "temp.txt"); und $temp = "http://www.icq.com/js/pcc.php?Uin=459937621"; $page = file_get_contents($temp,'r'); [/PHP] versucht, bekomm aber bei beiden n leeres Ergebnis
cartman1991 Geschrieben 20. Januar 2010 Autor Geschrieben 20. Januar 2010 Bin jetzt selbst draufgekommen, der Webspaceanbieter hat allow_url_fopen auf OFF geschalten :/ Kennste rein zufällig vllt. n Free Webspace anbieter mit viel Speicher der das auf ON hat? :S
VaNaTiC Geschrieben 20. Januar 2010 Geschrieben 20. Januar 2010 Nee, kenn ich leider nicht. Aber wenn Du einen gefunden hast, hab ich Dir das hier gebaut: /** * returns 0 .. UIN offline * 1 .. UIN online * 2 .. UIN unknown (e.g. web-indicator disabled) * -1.. allow_url_fopen is disabled * -2.. fopen failed * -3.. fread failed * -4.. icq-status not found */ function getICQstatus($uin) { if ( ini_get('allow_url_fopen') !== '1' ) return -1; $url = fopen("http://www.icq.com/js/pcc.php?Uin=$uin", 'r'); if ( $url === FALSE ) return -2; $state = -4; while ( !feof($url) && ($state == -4) ) { $txt = fgetss($url, 8192); if ( $txt === FALSE ) $state = -3; else if ( preg_match('/gl_status/i', $txt) ) $state = intval(preg_replace('/\D/', '', $txt))-60; } fclose($url); return $state; } var_dump(getICQstatus(1509452)); [/php]
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden