Oleh: kod34fr33 | 16/Februari/2007

Kustomisasi Status Yahoo Messenger di halaman web

Huaaahh.. setelah diguncang gempa dan banjir, saya bisa online lagi akhirnya.

Untuk pemanasan, saya mau bahas mengenai cara cek status yahoo messenger secara online (tidak melalui program Messenger di desktop) dan akhirnya cara menampilkannya dihalaman web (dengan PHP tentunya :p )
Cara mencek status ym seseorang dapat dilakukan secara online dengan mengunjungi alamat web berikut:

http://mail.opi.yahoo.com/online?u={username}&m={mode output}&t={type}

{username}: anda ganti dengan yahooID yang ingin anda cek

{mode output}: ada dua mode ditawarkan: ‘g’ untuk keluaran gambar dan ‘a’ untuk keluaran teks

{type}: tipe format keluaran yang anda inginkan untuk mode ‘g’ ada 6 (0-5). Sedangkan untuk mode ‘a’ hanya ada 2 (0-1) pilihan

Oke, sekarang kita lihat output masing type dan mode.

Graphic mode (mode = g)

  • type = 0
    • offline : offline type 0
    • online: online type 0
  • type = 1
    • offline: offline type 1
    • online: online type 1
  • type = 2
    • offline: offline type 2
    • online: online type 2
  • 3
    • offline: offline type 3
    • online: online type 3
  • 4
    • offline: offline type 4
    • online: online type 4
  • 5
    • offline: offline type 5
    • online: online type 5

Text mode (mode = a)

  • type = 0
    • offline : {username} is NOT ONLINE
    • online: {username} is ONLINE
  • type = 1
    • offline: 00
    • online: 01

Sekarang, bagaimana cara menampilkan di halaman web anda?

Untuk mode graphic, cara menampilkannya lebih mudah. Anda cukup menyisipkan alamat tersebut pada properti src di element img. Contoh konkritnya:

<img src="http://mail.opi.yahoo.com/online?u=my_yahoo_id&m=g&t=3" title="menampilkan status YM user my_yahoo_id dengan mode: g type: 3" alt="" />

trus apa gunanya mode text (a) dong?

pertanyaan bagus! Menurut saya text mode digunakan bila anda membutuhkan status YM untuk dimanipulasi, alias tidak digunakan bulat-bulat seperti mode graphic. :p

trus, sekarang bagaimana caranya menyisipkan di halaman web?

cara cukup mudah, bisa dilakukan dengan cara seperti berikut ini :

$status = 'offline'; //set default status
// buka alamat online checker, caranya sama dengen membuka file biasa
// PHP memperlakukan hampir semua source seperti file: buka, lakukan sesuatu(add,read,edit), tutup
$handle = fopen("http://mail.opi.yahoo.com/online?u=my_yahoo_id&m=a&t=1","rb");
if($handle){ //cek apakah var handle true (alamat tersebut dapat diakses, dan handle ada isinya)
   $content = fread($handle,255); //ambil isi return value alamat tersebut
   $status = ($content=='01' ? 'online' : 'offline');
   fclose($handle);
}

//status sudah dapat digunakan sekarang
if($status=='online'){
   //do online logic here
}else{
   //do offline logic here
}

just like that!

Oh ya, saya hampir lupa memberitahukan satu hal penting: menggunakan fopen() untuk membuka URL memerlukan setting allow_url_fopen aktif. dan jelas-jelas di manual PHP diberi catatan: “This setting can only be set in php.ini due to security reasons.” dan mungkin banyak hosting di luar sana yang sudah mematikan setting ini sehingga skrip di atas tidak bisa dijalankan.

Bila setting allow_url_fopen di hosting anda dimatikan, coba ganti potongan skrip diatas dengan yang di bawah ini:

$status = 'offline'; //set default status
$fp = fsockopen("mail.opi.yahoo.com", 80, $errno, $errstr, 30);
if (!$fp) {
} else {
   $out = "GET /online?u=my_yahoo_id&m=a&t=1 HTTP/1.1rn";
   $out .= "Host: mail.opi.yahoo.comrn";
   $out .= "Connection: Closernrn";

   fwrite($fp, $out);
   $tmp = '';
   while (!feof($fp)) {
      $tmp .= fgets($fp, 128);
   }
   $status = substr($tmp,-10,3)=='01' ? 'online' : 'offline';
   fclose($fp);
}

//status sudah dapat digunakan sekarang
if($status=='online'){
   //do online logic here
}else{
   //do offline logic here
}

saya tidak akan menjelaskan lebih detil mengenai potongan skrip di atas, jadi silahkan dicoba dan buka manual PHP untuk penjelasan detilnya. :p

Catatan: hasil googling mengatakan, bahwa bila seseorang login melalui YM dengan checkbox ‘sign in as invisible’ aktif, maka akan terlihat offline dengan menggunakan online checker ini. Berbeda dengan seseorang yg login awal visible kemudian menset ‘appear offline’ atau ‘appear permanently offline’ maka akan terlihat online dengan online checker ini.


Tanggapan

  1. thank’s tutorialnya prend

  2. sim sim… semoga berguna.. klo ada pertanyaan dsb dsb jangan sungkan loh…
    *kalau bisa yaa saya jawab.. kalau ndak yaa saya bilang ndak tahu* :p

    note:
    di snippet untuk fopen menggunakan socket di setiap variabel $out di paling belakang ada ‘…rn”;’
    seharusnya, sebelum karakter ‘r’ dan ‘n’ ada backslash. backslash itu sepertinya di strip oleh wordpress.
    kalau belum tahu mengenai “backslash r” dan “backslash n” cari di wikipedia dengan kata kunci “newline” :)

  3. sebelumnya than’x nya atas tutorial nya mas…aq dah coba mas di wordpress saya, saya hanya bisa sampai ketika saya OL di wordpress saya muncul bahwa saya OL, tapi ketika saya coba chat gak bisa mas…saya coba OL ke yahoo dengan menggunakan account yang lain, kira2 solusi nya giman nya mas….
    mohon petunjuk nya…
    sebelum dan sesudah than’x a lot

    salam persahabatan

  4. Thx atas tutorial nya mas.
    Sebelumnya saya sudah menambah scrip untuk menampilkan status yahoo pada scrip templete. saya yakin udah bener sih.
    Tapi, kok statusnya offline terus yah, meskipun saya lagi online..

    Salam kenal ..

  5. aneh…. koq saya udah salin code nya tapi offline terus yaa status YM nya di website…. padahal ane lagi online di YM!, kenapa yaa? ada yg salah mungkin? di utak-atik sih kalo ID nya ditambahin xxxx@yahoo.com status bisa online tetp kalo user klik ga langsung nge PM ke saya tapi masuk dulu ke menu send messenger to cantct, jadi user mesti nyari ID nya lagi di list contact nya…..napa yaa?

  6. mas…klo mo masukin scriptnya di joomla gimana/dimana yah???

    thanx…
    btw, salam kenal

  7. thanks yaw

  8. terima kasih banyak frend….

  9. fsockopen? kenapa gak terpikir sama sekali ya… :)
    kebetulan hosting di tempat saya dimatikan

    —- alternatif lain adalah menggunakan curl —-

    function get_data_from_net($url) {
    $result = ”;
    if (function_exists(‘curl_init’)) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, false);
    $result = curl_exec($ch);
    curl_close($ch);
    } else {
    return false;
    }

    return $result;
    }

    $status = get_data_from_net(‘http://opi.yahoo.com/online?u=’.$ym[‘ym_admin’].’&m=a&t=1′);
    if ($status == “01”) // online
    // logic if online
    else
    // logic if offline

  10. ehmm….thx,
    tapi kenapa ya kalo invisible kebacanya kok NOT ONLINE, berarti untuk ngecek invisnya gimana tuh please deh….???

  11. By: imam
    -ehmm….thx,
    tapi kenapa ya kalo invisible kebacanya kok NOT ONLINE, berarti untuk ngecek invisnya gimana tuh please deh….???-

    cari tahu dengan konsep webHacking application lebih jauh pak… :D


Tinggalkan komentar

Kategori