Главная Разработчикам Скрипты Отображаем на сайте статус ICQ
Сегодня 23 | 02 | 2012
Отображаем на сайте статус ICQ
Автор: Administrator   
05.04.2009 06:46

Статус ICQ отображаемый на вашем сайте | www.focusoff.ruВы наверняка видели на сайтах изображение всем известного интернет- меседжера ICQ в виде цветочка, цвет которого зависил от того, онлайн ли пользователь или нет. Например это полезно для онлайн консультантов фирмы. Такой сервис предоставляется сайтом мессенджера ICQ. Лежащая на нем библиотека wwp.icq.com/scripts/online.dll перенаправляет на картинку, цвет которой зависит от статуса указанного в параметрах номера пользователя. Код для вставки картинки, представляет из себя всего одну HTML строчку:

<img src="http://wwp.icq.com/scripts/online.dll?icq=ВАШНОМЕР&img=N" border="0" />

ВАШНОМЕР- это номер, проверяемого на статус ICQ. Номер указывается слитно, т.е. без пробелов и дефисов.
N- это целое число от 0 до 27 (может быть, уже и больше), которое указывает на вид (стиль) отображаемой картинки статуса ICQ. Список с изображениями, соответствующих номерам вида, смотрите ниже.

У ICQ есть ещё один сервис, позволяющий отправлять сообщения на номер ICQ через установленный у вас клиент (именно ICQ, а не QIP и т.д.). Ссылку на него можно добавить к картинке- статусу из предыдущей HTML строчки:

<a href="http://www.icq.com/whitepages/cmd.php?uin=ВАШНОМЕР&action=message">
<img src="http://wwp.icq.com/scripts/online.dll?icq=ВАШНОМЕР&img=N" border="0" />
</a>

Теперь, при нажатии на картинку со статусом ICQ у нас будет открываться окно ICQ для отправки сообщений (при условии что ася запущена).

Во всём этом существует небольшая проблема, браузер может поместить картинку в кеш и в дальнейшем загружать её оттуда. Это может привести к тому, что, при смене статуса, страница будет отображать неверную (устаревшую) картинку. Не знаю на сколько это сейчас важно и актуально в каждом конкретном случае, однако, если вам это будет явно мешать, можно использовать небольшой скрипт. Его задача- подмена адреса картинки, каждый раз при обновлении страницы:

<a href="http://www.icq.com/whitepages/cmd.php?uin=ВАШНОМЕР&action=message">
<script type="text/javascript">
<!--
document.write('<img border="0" src="http://wwp.icq.com/scripts/online.dll?icq=ВАШНОМЕР&img=N&rnd='+Math.rnd+'" />')
//-->
</script>
<noscript><img border="0" src="http://wwp.icq.com/scripts/online.dll?icq=ВАШНОМЕР&img=N" /></noscript>
</a>

Всё, теперь проблема решена.

Есть ещё один метод вывода статуса на страницу. Если в первом случае мы использовали обращение к библиотеке (dll), то теперь обращаемся к файлу online.gif с параметрами номера ICQ и номера стиля картинки, так же как и в первом случае. Выглядит это так:

<img src="http://status.icq.com/online.gif?icq=ВАШНОМЕР&img=N" border="0" />

здесь так же  ВАШНОМЕР- номер ICQ и N- номер стиля картинки статуса.

Аналогично примерам, описанным выше, добавляем возможность отправлять сообщения:

<a href="http://www.icq.com/whitepages/cmd.php?uin=ВАШНОМЕР&action=message">
<img src="http://status.icq.com/online.gif?icq=ВАШНОМЕР&img=N" border="0" />
</a>

и боримся с кешированием:

<a href="http://www.icq.com/whitepages/cmd.php?uin=ВАШНОМЕР&action=message">
<script type="text/javascript">
<!--
document.write('<img border="0" src="http://status.icq.com/online.gif?icq=ВАШНОМЕР&img=N&rnd='+Math.rnd+'" />')
//-->
</script>
<noscript><img border="0" src="http://status.icq.com/online.gif?icq=ВАШНОМЕР&img=N" /></noscript>
</a>

Хочу заметить, что работоспособность и достоверность статуса, напрямую зависит от настроек владельца номера ICQ, который указан в ВАШНОМЕР . Тоесть, если у вас в настройках ICQ выключены web сервисы, такие как: "Позволить другим видеть мой статус в сети", "Показывать мой online статус для web и поиска"(в qip), картинка статуса будет отображать вариант "Disabled" независимо от того статуса в котором вы находитесь!

Это примеры стилей картинки статуса:

Значение N Стиль картинок
0 статус-картинка ICQ offline N=0
статус-картинка ICQ online N=0
статус-картинка ICQ disabled N=0
1 статус-картинка ICQ offline N=1 статус-картинка ICQ online N=1 статус-картинка ICQ disabled N=1
2 статус-картинка ICQ offline N=2 статус-картинка ICQ online N=2 статус-картинка ICQ disabled N=2
3 статус-картинка ICQ offline N=3
статус-картинка ICQ online N=3
статус-картинка ICQ disabled N=3
4 статус-картинка ICQ offline N=4
статус-картинка ICQ online N=4
статус-картинка ICQ disabled N=4
5 статус-картинка ICQ offline N=5 статус-картинка ICQ online N=5 статус-картинка ICQ disabled N=5
6 статус-картинка ICQ offline N=6
статус-картинка ICQ online N=6
статус-картинка ICQ disabled N=6
7 статус-картинка ICQ offline N=7 статус-картинка ICQ online N=7 статус-картинка ICQ disabled N=7
8 статус-картинка ICQ offline N=8
статус-картинка ICQ online N=8
статус-картинка ICQ disabled N=8
9 статус-картинка ICQ offline N=9 статус-картинка ICQ online N=9 статус-картинка ICQ disabled N=9
10 статус-картинка ICQ offline N=10 статус-картинка ICQ online N=10 статус-картинка ICQ disabled N=10
11 статус-картинка ICQ offline N=11 статус-картинка ICQ online N=11 статус-картинка ICQ disabled N=11
12 статус-картинка ICQ offline N=12 статус-картинка ICQ online N=12 статус-картинка ICQ disabled N=12
13 статус-картинка ICQ offline N=13 статус-картинка ICQ online N=13 статус-картинка ICQ disabled N=13
14 статус-картинка ICQ offline N=14 статус-картинка ICQ online N=14 статус-картинка ICQ disabled N=14
15 статус-картинка ICQ offline N=15 статус-картинка ICQ online N=15 статус-картинка ICQ disabled N=15
16 статус-картинка ICQ offline N=16 статус-картинка ICQ online N=16 статус-картинка ICQ disabled N=16
17 статус-картинка ICQ offline N=17 статус-картинка ICQ online N=17 статус-картинка ICQ disabled N=17
18 статус-картинка ICQ offline N=18 статус-картинка ICQ online N=18
19 статус-картинка ICQ offline N=19 статус-картинка ICQ online N=19
20 статус-картинка ICQ offline N=20 статус-картинка ICQ online N=20
21 статус-картинка ICQ offline N=21 статус-картинка ICQ online N=21 статус-картинка ICQ disabled N=21
22 статус-картинка ICQ offline N=22 статус-картинка ICQ online N=22
23 статус-картинка ICQ offline N=23 статус-картинка ICQ online N=23 статус-картинка ICQ disabled N=23
24 статус-картинка ICQ offline N=24 статус-картинка ICQ online N=24 статус-картинка ICQ disabled N=24
25 статус-картинка ICQ offline N=25 статус-картинка ICQ online N=25
26 статус-картинка ICQ offline N=26 статус-картинка ICQ online N=26 статус-картинка ICQ disabled N=26
27 статус-картинка ICQ offline N=27 статус-картинка ICQ online N=27 статус-картинка ICQ disabled N=27

Далеко не все картинки имеют прозрачный фон, что делает их неудобными для использования на страничках с фоном отличным от белого. Так же я бы порекомендовал проставить width и height для картинок статуса и прописать alt потому как у многих могут быть отключены картинки (большенство фирм отключают картинки ещё на сервере). Это спасёт ваш дизайн сайта от искажения и даст возможность понять, о чём эта картинка.

Используем PHP для отображения статуса ICQ на вашем сайте

Немного усложним задачу, допустим вам не нравится ни один из предложеных вам сервисом ICQ вариантов отображения статуса.
Допустим вы хотите использовать свои иконки, или определённый текст. На помощ придёт PHP.

Рассмотрим вариант скрипта, с использованием функции Curl. Сразу хочу предупредить, Curl это дополнение (extension) для PHP и не факт, что оно будет установлено на вашем хостинге (сервере). Например пакет Denwer не содержит этого дополнения, но всё таки надеюсь, что большинство профессиональных хостингов, таких как sweb.ru всётаки имеют в своём арсенале такую штуку.

<?php
$curl=curl_init();
curl_setopt($curl, CURLOPT_URL, "http://status.icq.com/online.gif?icq=258158479&img=27");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$stat=curl_exec($curl);
curl_close($curl);
if (strstr($stat, "online1")) {
print "Online!!!";
}

if (strstr($stat, "online0")) {
print "Offline";
}

if (strstr($stat, "online2")) {
print "Disable";
}

?>

Примерно так. Дальше можете с ним поступать как вам вздумается. Если необходимо использовать изображение, замените например print "Online!!!"  на $img_url=img_online.jpg

Если кто то не понял, покажу пример:

<?php
$curl=curl_init();
curl_setopt($curl, CURLOPT_URL, "http://status.icq.com/online.gif?icq=258158479&img=27");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$stat=curl_exec($curl);
curl_close($curl);
if (strstr($stat, "online0")) {
$img_url="offline.jpg";
}

if (strstr($stat, "online1")) {
$img_url="online.jpg";
}

if (strstr($stat, "online2")) {
$img_url="disable.jpg";
}
?>
<img src="<?php echo (isset($img_url)) ? $img_url : 'err.jpg'; ?>" />

Здесь картинка err.jpg служит для того, если вдруг, по каким либо причинам, сервис отображения статуса ICQ будет недоступен, можно указать вместо него например disable.jpg, тем более по смыслу они схожи : ) Остальные 3 картинки по смыслу.

Возражения, исправления, дополнения пишите в комментариях.

Удачи!

Обновлено 17.12.2009 07:48
 

Комментарии  

 
-1 #14 Lana!!! 28.09.2011 12:01
Спасибо большое :P очень полезная статья
Цитировать
 
 
-1 #13 Сергей 28.08.2011 18:43
Спасибо, работает. ;-)
Цитировать
 
 
-1 #12 Руслан 04.11.2010 13:21
Почему вместо 3-х значков, показывает только 2.
Т.е. когда я online и когда меня нет. Значок offline не появляется.
Цитировать
 
 
-1 #11 Valera 04.08.2010 10:49
вот счас перегрузил опять 3 онлайна!!!
Цитировать
 
 
-1 #10 Valera 04.08.2010 10:46
Цитирую Focus:
Кто кажет? какие три значка? Где?

сегодня с утра было не поймешь то нормально то нет!
Цитировать
 
 
-1 #9 Focus 04.08.2010 08:53
Кто кажет? какие три значка? Где?
Цитировать
 
 
-1 #8 Valera 04.08.2010 07:32
у меня почему то по 3 значка кажет одинаковых,поче му бы это???
Цитировать
 
 
-1 #7 Din 16.06.2010 13:24
Оказывается все работает.
Проблема была в том что когда я тестил, то в номер ICQ писал несуществующий UIN.

Надо будет придумать как проверять UIN на существование. Хотя, может и не стоит заморачиваться по этому поводу.
Цитировать
 
 
-1 #6 Focus 16.06.2010 12:26
Цитирую Din:
Почемуто в IE не работает....
Есть мысли почему?


Нет, нету по поводу ИЕ никаких мыслей :-)
А по делу... Возможно в ИЕ отключено в настройках какое нибудь использование активного содержимого, может это какая нибудь "банерорезка" Или неправельные настройки ICQ? Какой именно скрипт не работает? В других браузерах работает?
Цитировать
 
 
-1 #5 Din 16.06.2010 12:20
Почемуто в IE не работает....
Есть мысли почему?
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Реклама
Вкусный корм для кошек от компании проплан всегда с доставкой в зоомагазине.
Перегон автомобилей тойота продажа подержанных авто.