WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » Icq status auslesen ? » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

Icq status auslesen ?
von adik
ich hatte gerade erst kürzlich selber mal danach recherchiert und das gefunden:

http://www.icq.com/js/pcc.php?Uin=18006683

man erhält die daten als javascript variablen, aber das kann man ja konvertieren.

z.b. so:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62:
<?
$file = fopen("http://www.icq.com/js/pcc.php?Uin=18006683","r"); 
while ($line = fgets($file, 1024)) { 
    $cont[] = $line;
} 
fclose($file);
for($i=0;$i<count($cont);$i++){
	$t = "";
	$t = explode("=",$cont[$i]);
	if(count($t) > 2){
		$str = "";
		for($j=2;$j<count($t);$j++){
			$str .= $t[$j]."=";
		}
		$icqarr[(str_replace(" ","",$t[0]))] = 	str_replace(
													"\n",
													"",
													str_replace(
														"\r\n",
														"",
														str_replace(
															"/whitepages",
															"http://www.icq.com/whitepages",
															html_entity_decode(
																str_replace(
																	"src=\"/img","src=\"http://www.icq.com/img",
																	str_replace(
																		"&#38;",
																		"&",
																		str_replace(
																			"&#47;",
																			"/",
																			str_replace(
																				"\";",
																				"",
																				str_replace(
																					"\";   ",
																					"\";",
																					substr(
																						substr(
																							$str,
																							0,
																							-1
																						),
																						2
																					)
																				)
																			)
																		)
																	)
																)
															)
														)
													)
												);
	}
}

print_r($icqarr);
?>
von Andreas248
Hallo,

hätte da mal 2 Fragen zu dem letzten Code:
1. kann ich damit statt on und off auch abwesend mit abrufen?
und
2. hat jemand eine Idee, wieso der Status erkannt wird, wenn ich über ICQ rein gehe, nicht aber, wenn ich die gleiche ICQnr über Trillian nutze?

Danke im Voraus für die Antwort(en)!

Nachtrag:
Also hiermit funktioniert der 3. Status bei mir leider nicht:

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22:
<?php
$icq = "XXXXXXXXX";

$fp = fsockopen ("status.icq.com", 80, &$errno, &$errstr, 30) or die("[ERROR - Could not connect to server (status.icq.com)]");  
fputs($fp, "GET /online.gif?icq=$icq&img=5&online= HTTP/1.0\n\n");

while(!feof($fp) && !$icq_finished) {
    $line = fgets ($fp,128);
    if (substr($line,0,9) == 'Location:') {
        if (substr($line,13,11) == 'online1.gif') { $online = "1"; $icq_finished = true;} 
        elseif (substr($line,13,11) == 'online0.gif') { $online = "0"; $icq_finished = true;}
        elseif (substr($line,13,11) == 'online2.gif') { $online = "2"; $icq_finished = true;}
     }
    }
         fclose($fp);
         
if($online == "1") { echo("Online"); } 
elseif($online=="0") { echo("Offffffline"); } 
elseif($online=="2") { echo("anders"); }
else { echo("da stimmt was nicht"); }

?>
von MCM
So, will nun mal dieses alte Thema noch mal hervorziehen, da ich soein script jetzt auch brauchte, hb ich mal in nem anderem Forum nachgefragt und dort konnte man mir weiterhelfen. Also, folgender Code, dann klappt es

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31:
<?php
$icq = "331715700";

$fp = fsockopen ("status.icq.com", 80, &$errno, &$errstr, 30) or die("[ERROR - Could not connect to server (status.icq.com)]");  
fputs($fp, "GET /online.gif?icq=$icq&img=5&online= HTTP/1.0\n\n");

while(!feof($fp) && !$icq_finished) {
    $line = fgets ($fp,128);
    if (substr($line,0,9) == 'Location:') {
        if (substr($line,13,11) == 'online1.gif') { // online
            $online = "1";
            $icq_finished = true;

        } else { 

            $online = "0";
            $icq_finished = true;
	}
     }
    }
         fclose($fp);
         
if($online == "1") { 
    echo("Online"); 
} elseif($online=="0") { 
    echo("Offffffline"); 
} else { 
    echo("da stimmt was nicht"); 
}

?>


Musst halt nur die Textausgabe durch Bilde ersetzten. Kompletten Code gibts bei http://www.qatlantis.com/IMIndicator.php zum runterladen, allerdings noch mit allen möglichen Anhang, der eigentlich unnötig ist ;)
von Xeal
@ MCM:
Ich will aber nunmal nicht die standart bilder...
Auch wenn sie neutral sind
von MCM
Außerdem gibts unegefähr 25 verschiedene fertige Bilder von denen, wozu dann was eigenes. Einiges von denen ist sogar noch recht neutral


---
cya MCM

[Je mehr Bürger mit Zivilcourage ein Land hat, desto weniger Helden wird es einmal brauchen]
[by Franca Magnani]
von MCM
Hi,
was du dort hast (@ acid) ist ein bild.

Setzt das mal in ein bild tag, so etwa

1:
<img src="http://web.icq.com/whitepages/online?icq=125520245&img=20" border="0">


Und dann hats du das Standardbild.

---
cya MCM

[Je mehr Bürger mit Zivilcourage ein Land hat, desto weniger Helden wird es einmal brauchen]
[by Franca Magnani]
von languitar
Ich hab glaub ich gerade eine Lösungsmöglichkeit gefunden. Weiß nur noch nicht wie das in PHP zu realisieren ist:
Die Whitepages benutzen folgende Abfrage:
1:
http://people.icq.com/whitepages/online/1,,,00.gif?icq=125520245&img=20

Wenn der user online ist wird auf http://status.icq.com/20/online1.gif weitergeleitet, bei offline auf http://status.icq.com/20/online0.gif und bei allem anderen auf http://status.icq.com/20/online2.gif . Das muss jetzt nur noch abgefragt werden und dann kann man die neuen Bilder da drüberlegen.
von languitar
HG schrieb am 03.05.2003 16:26
Ich hab das mal gestestet, und es erscheint, daß der ICQ-Server folgendes zurückgibt:
1: 
2: 
3:
Location: http://status.icq.com/online.gif?icq=158610375&img=5


Ich denke, daß du aus diesem String erstmal rausziehen musst, ob online oder nicht, und dann das entsprechende Bild in den HTML-Code einfügen musst.

=> das Skript kommt an den verschiedenen if's mit return werten vorbei und gibt dann anschließend false zurück.


Wie willst du aus dem String denn den Status auslesen? Der steht da doch gar nicht drin.

Ich bin noch mal über diesen Link gestolpert. Der sagt zumindest schon mal was, auch wenn's überall nur offline ist: http://alfaweb.ch/cgi-forum/php_icq-status-abfragen.php
von Xeal
lies mal den threat genau durch ...
Ich will nämlich nicht die standart on/off pics...
von acid
ihr koennt das auch sehr viel einfacher machen und einfach den link hier als bild einbinden
http://wwp.icq.com/scripts/online.dll?icq=UIN&img=5

anstatt UIN halt die icq nr, dan zeigt es euch an, z.b. ne gruene blume falls on, ne rote falls off, ne graue falls er den status disabled hat,
ueber img koennt ihr verschiedene bilder auswaehlen die den status anzeigen,
glaub 1 bis 15 is moeglich.
von HG
Ich hab das mal gestestet, und es erscheint, daß der ICQ-Server folgendes zurückgibt:
1: 
2: 
3:
Location: http://status.icq.com/online.gif?icq=158610375&img=5


Ich denke, daß du aus diesem String erstmal rausziehen musst, ob online oder nicht, und dann das entsprechende Bild in den HTML-Code einfügen musst.

=> das Skript kommt an den verschiedenen if's mit return werten vorbei und gibt dann anschließend false zurück.
von languitar
nee, die übergibst du ja im aufruf der Funktion.
Zeigt der das Echo denn an?
von Andreas S
Ich hab so den Verdacht dass ICQ das Verfahren schon wieder umgestellt hat und deshalb das Script nicht mehr geht.
von Xeal
kann es nicht auch einfach sein, dass die variable $uin nicht definiert wurde ?!
von languitar
bau mal in die funktion ganz ans ende sowas wie wie echo "blablabla"; ein. Wenn der das nicht macht is nen Syntaxfehler in der Funktion drin.
von Xeal
nö, nur ne leere seite
von Andreas S
Bekommst du irgendeine Fehlermeldung?
von Xeal
Also ich kann mir nicht helfen, aber es funtzt mal wieder net *g*
Kennen wir ja schon ;)
Hier der code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>&gt;&gt; Xeal.de </TITLE>
<link rel="stylesheet" type="text/css" href="css.css">
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 5.50.4134.600" name=GENERATOR>
</HEAD>
<BODY bgColor=#F2F0F1 leftMargin=0 topMargin=0 MARGINHEIGHT="0" MARGINWIDTH="0">
<table width="135" border="0">
<tr>
<td>
<div align="center"></div>
<?
function GetICQ($uin) {
if (!is_numeric($uin)) return FALSE;

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

$request = "HEAD /whitepages/online?icq=$uin&img=5 HTTP/1.0rn"
."Host: web.icq.comrn"
."Connection: closernrn";
fputs($fp, $request);

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

fclose($fp);

if (strstr($response, '4367')) return '<img src="icqon.jpg" border=0>';
if (strstr($response, '4349')) return '<img src="icqoff.jpg" border=0>';
if (strstr($response, '4386')) return '<img src="icqdis.jpg" border=0>';
return FALSE;
}

// Aufruf:
echo GetICQ(158610375);


?>
</td>
</tr>
</table>
</BODY></HTML>

Weiss jemand wo der Fehler ist ??
von michaelh
Nützlich.
von Andreas S
1:
return 'online';

abändern in:
1:
return '<img src=\"images/online.gif\" border=0>';


und das gleiche mit den zwei (offline & disabled) anderen...
von Xeal
Wie muss man das jetzt verändern, um ein bestimmtes bild anzeigen zu lassen ??
von pizzataxi
Great, ich glaub dass ich das sehr gut einsetzen kann... Danke!!!
von Andreas S
Da kann euch geholfen werden

http://www.dclp-faq.de/q/q-code-icq.html
von pizzataxi
Fänd ich auch interessant wie das geht...
von Xeal
Hallo.
Ich will meinen icq status auf meiner page anzeigen lassen. Aber ich möchte nicht diese unschönen online/offline bildchen von icq.com verwenden...
Kann mir jemand verraten wie das in icq geht ?

Nach oben