PHP-GD retorna status do MSN Messenger , Skype e GTalk

Este artigo mostra como desenvolver um script para exibir o status do Messenger, do Skype ou GTalk de modo personalizado, sem precisar copiar e colar os códigos (e as figuras toscas) exibidas por estes serviços e comunicação. Ao final haverão sugestões de uso e de melhorias nas funcionalidades.

[ Hits: 30.920 ]

Por: Guilherme em 23/09/2009


PHP script - MSN Messenger Live status



<?php
//Status do Messenger (On-line ou Off-line)

/* ******Passo 1 - fazer download da figura******
Nota: a variável ambiente allow_url_fopen do PHP deve estar na posição ON para que permita fazer o download das figuras.
*/

// adaptado de www.php.net/fopen

// coloque na variável $file_source o URL correspondente ao seu status msn messenger live
$file_source = "http://messenger.services.live.com/users/b9f650460adaf84d@apps.messenger.live.com/presenceimage?mkt=pt-br";

// coloque na variável $file_target o caminho absoluto do arquivo GIF a ser gerado
// Nota: utilize o /tmp da sua hospedagem porque não vai gastar espaço na sua hospedagem, hehehehe!

$file_target = "vol/msn_status.gif";
$rh = fopen($file_source, 'rb');
$wh = fopen($file_target, 'wb');
if ($rh===false || $wh===false) {
//echo "error reading or opening file";
//return true;
}
while (!feof($rh)) {
if (fwrite($wh, fread($rh, 1024)) === FALSE) {
//echo 'Download error: Cannot write to file ('.$file_target.')';
//return true;
}
}
fclose($rh);
fclose($wh);
// No error
//return false;
//echo "imagem salva e tudo ok!";

/* Passo 2 - Abre a imagem recém-salva e lê o pixel especificado */
// adaptado de www.php.net/imagecolorat
$im = @imagecreatefromgif ($file_target); /* Attempt to open */
if (!$im) { /* See if it failed */
echo "erro no na captura da imagem";
}

// aqui está a chave do nosso script: o pixel x=5 e y=10 é verde com $rgb == 45 para online. Se estiver offline este pixel fica cinza
$rgb = imagecolorat($im, 5, 10);

if ($rgb == 45) {
echo "Usuário On-line";
// Método retorna TRUE
} else {
echo "Usuário Off-line";
// Método retorna False
}

/*
Pronto, agora o script PHP retorna se você está online ou offline automaticamente. Assim você pode escrever ou não no site o seu status.
Sugestão 1: Para sites com muitos acessos, utilize um "cache" de modo que a consulta ao servidor do MSN só ocorra a cada 30 segundos após a criação do arquivo temporário.
Sugestão 2: Faça deste código um método de um objeto PHP.
Sugestão 3: Se o admin do seu serviço de hospedagem não deixar o Apache escrever na pasta /tmp do servidor, então crie uma pasta na sua conta de hospedagem com permissão de escrita.
*/

?>

Agora vamos ao próximo script.

Página anterior     Próxima página

Páginas do artigo
   1. Por quê e como funciona?
   2. PHP script - MSN Messenger Live status
   3. PHP script - Skype status
   4. PHP script - GTalk status
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Instalando o phpBB num servidor Web

Enganando o proxy Squid (download de arquivos)

Easy Gallery - Componente Joomla

Instalando o CMS XOOPS

Simulando o SSH via WEB

  
Comentários
[1] Comentário enviado por marciolara em 23/03/2011 - 09:56h

Tenho um site e gostaria de inserir os códigos HTML do msn, skype e o talk. O sistema do site é Joomla , e o suporte não está conseguindo. Tem alguma coisa a ver com o sistema Joomla? Uso em meu blog e funciona normalmente. Obrigado.
Márcio O. Lara
Águas Vermelhas-MG

[2] Comentário enviado por douglasjam em 15/02/2012 - 09:11h

Quem quiser um script mais simplificado, segue abaixo:

<?php
if (imagecolorat(imagecreatefromgif("http://messenger.services.live.com/users/<SUA ID>@apps.messenger.live.com/presenceimage?mkt=pt-BR"), 5, 10) == 45)
echo 'Online';
else
echo 'Offline';
?>

[3] Comentário enviado por diegokorvo em 17/10/2012 - 15:16h

corrigi um problema que estava tendo com muitos clientes utilizando este código e fazendo uma pequena modificação.
O status do Msn poderia ficar ausente, ou ocupado também. Então mudei a configuração para a cor de um pixel da imagem Offline

<?
$idMsn = <IDdoMSN>;
if (imagecolorat(@imagecreatefromgif ("http://messenger.services.live.com/users/".$idMsn."@apps.messenger.live.com/presenceimage?mkt=pt-br"), 5, 2) != 46) {
echo "Online";
}
else
{
echo "Offline";
}
?>

[4] Comentário enviado por guiguix em 17/10/2012 - 16:14h

Obrigado douglasjam e diegokorvo, vocês melhoraram o script. Lembro aos visitantes e amantes do PHP que:

1) O GTALK desativou este serviço. Por isso, se você deseja um help desk simplificado, utilize o phpFreeChat (http://www.phpfreechat.net), um projeto gratuito e muito fácil de integrar;

2) Em PHPCLASSES (http://www.phpclasses.org) tem classes prontinhas para visualizar o status do Skype e MSN.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts