Zum Inhalt springen

[PHP] ICQ Status protokollieren


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von VaNaTiC
Link zu diesem Kommentar
Auf anderen Seiten teilen

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" :D ausprobieren :)

Edit:

Wegen diesem "b"-mode, soll der dann einfach "hinzugefügt" werden, quasi

$fp = fopen($protokoll, "ab");

Bearbeitet von cartman1991
Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

: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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...