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 :
- online:
- type = 1
- offline:
- online:
- type = 2
- offline:
- online:
- 3
- offline:
- online:
- 4
- offline:
- online:
- 5
- offline:
- online:
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.
thank’s tutorialnya prend
By: rioot on 11/Mei/2007
at 3:55 pm
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” :)
By: kod34fr33 on 11/Mei/2007
at 5:53 pm
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
By: rusman on 14/Juni/2007
at 9:23 pm
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 ..
By: andi on 24/Juli/2007
at 2:35 pm
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?
By: dudu on 31/Juli/2007
at 3:39 am
mas…klo mo masukin scriptnya di joomla gimana/dimana yah???
thanx…
btw, salam kenal
By: yudi on 3/Agustus/2007
at 8:38 pm
thanks yaw
By: agus on 6/Oktober/2007
at 9:55 am
terima kasih banyak frend….
By: irwan on 21/Oktober/2007
at 7:19 pm
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
By: rio astamal on 4/Desember/2007
at 11:19 pm
ehmm….thx,
tapi kenapa ya kalo invisible kebacanya kok NOT ONLINE, berarti untuk ngecek invisnya gimana tuh please deh….???
By: imam on 17/Agustus/2008
at 6:29 pm
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
By: seroja on 27/November/2008
at 11:50 am