Сегодня 22 | 03 | 2023

Статус 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 не содержит этого дополнения, но всё таки надеюсь, что большинство профессиональных хостингов, таких как timeweb.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 картинки по смыслу.

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

Удачи!

Комментарии   

0 #16 Vik 19.04.2012 23:41
Жаль, некоторые тэги не прошли... В ачстности после
Цитирую Vik:
echo "Техподдержка 111-111-111

нужно добавить
имж срц=\"$img_url\ " бордер=\"0\" титл=\"$alt\" алт=\"$alt\"";
соответственно в стандарте HTML
Цитировать
+1 #15 Vik 19.04.2012 23:36
Спасибо, использовал и чуток переделал код ПХП в части проверок условий:
if (strstr($stat, "online0"))
{
$img_url="../pic/icq_2.gif";
$alt = "Недоступен";
}
if (strstr($stat, "online1"))
{
$img_url="../pic/icq_1.gif";
$alt = "Онлайн";
}
if (strstr($stat, "online2"))
{
$img_url="../pic/icq_0.gif";
$alt = "Офлайн";
}
if (!isset($img_url))
{
$img_url = "../pic/icq_2.gif";
$alt = "Не определено";
}
echo "Техподдержка11 1-111-111 ";
Просто все выполняется именно в ПХП куске, сразу определяется недоступность сервиса. Подставляются свои картинки. Ну и со статусами чуть поигрался, поскольку аська выдает как то некорректно, а именно на "оффлайн" выдает серый, а на "недоступен" красный. Правильней было бы наоборот, что я у себя и реализовал.
Цитировать
-3 #14 Lana!!! 28.09.2011 11:01
Спасибо большое :P очень полезная статья
Цитировать
-2 #13 Сергей 28.08.2011 17:43
Спасибо, работает. ;-)
Цитировать
-2 #12 Руслан 04.11.2010 11:21
Почему вместо 3-х значков, показывает только 2.
Т.е. когда я online и когда меня нет. Значок offline не появляется.
Цитировать
-2 #11 Valera 04.08.2010 09:49
вот счас перегрузил опять 3 онлайна!!!
Цитировать
-2 #10 Valera 04.08.2010 09:46
Цитирую Focus:
Кто кажет? какие три значка? Где?

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

Надо будет придумать как проверять UIN на существование. Хотя, может и не стоит заморачиваться по этому поводу.
Цитировать