Free Ebook Tutorial from Rosihan Ari's Blog

Tutorial Javascript | Tutorial PHP | Tutorial AJAX | Tutorial CSS | Tutorial FPDF | Tutorial Wordpress | Tutorial Java SE


Ebook yang direkomendasikan untuk Anda
Ebook Panduan Praktis OOP di PHP


Membuat Script Penyingkat URL (URL Shortener) dengan API Google


January 12th, 2012 | by rosihanari | Cetak Artikel Cetak Artikel


GampSMS SMS Gateway

Barangkali Anda pernah menjumpai suatu URL yang panjangnya minta ampun yang sulit untuk mengingatnya, padahal URL tersebut berisi artikel atau referensi yang menarik menurut Anda. Kira-kira bisa tidak kita menyingkat URL tersebut sehingga tidak menjadi terlalu panjang sehingga mudah diingat? Tentu bisa dong, dengan URL Shortener yang memanfaatkan API Google hal ini menjadi sangat mudah. Bahkan Anda bisa membuat sendiri script untuk penyingkat URL ini dengan API Google tersebut. Dengan begitu, Anda bisa menempatkan script tersebut untuk dipakai sendiri atau ditaruh di website sehingga bisa dimanfaatkan oleh pengunjung web.

Dalam artikel ini, akan saya paparkan bagaimana cara membuat script atau function di PHP untuk menyingkat URL tersebut yang memanfaatkan API Google.

Sebenarnya Anda bisa membuat scriptnya sendiri setelah ANda mempelajari panduan tentang URL Shortener dari API Google. Namun kalau Anda masih bingung, nanti akan saya sajikan script yang sudah jadi dan contoh implementasi atau pemanfaatannya.

Pertama, kita buat function terlebih dahulu untuk menyingkat URL nya. Berikut ini adalah functionnya:

<?php
function singkatURL($url)
{
   $curlHandle = curl_init();
   // melakukan request ke server Google API
   curl_setopt($curlHandle, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url');
   curl_setopt($curlHandle, CURLOPT_HEADER, 0);
   curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, 0);
   // menentukan tipe konten hasil request yg berupa JSON
   curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
   // parameter yang berisi URL yang akan disingkat
   curl_setopt($curlHandle, CURLOPT_POSTFIELDS, '{"longUrl":"'.$url.'"}');
   curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($curlHandle, CURLOPT_TIMEOUT,30);
   // lakukan request dengan POST method
   curl_setopt($curlHandle, CURLOPT_POST, 1);

   // baca data hasil request yg berupa JSON
   $content = curl_exec($curlHandle);
   curl_close($curlHandle);

   // ekstrak data JSON untuk mendapatkan hasil URL yg disingkat
   $data = json_decode($content);
   return $data->id;
}
?>

Function singkatURL() di atas digunakan untuk menyingkat URL dengan memanfaatkan Google API. Parameter dari function ini adalah URL yang mau disingkat. Function singkatURL() nantinya langsung membuat request ke URL nya Google di https://www.googleapis.com/urlshortener/v1/url melalui POST request via CURL. Data hasil dari request tersebut berupa JSON yang contohnya berbentuk seperti ini:

{
 "kind": "urlshortener#url",
 "id": "http://goo.gl/fbsS",
 "longUrl": "http://www.google.com/"
}

dimana “id” menyatakan URL hasil singkatannya, dan “longUrl” adalah URL aslinya. Dengan perintah

$data = json_decode($content);
return $data->id;

kita akan mendapatkan URL hasil singkatannya yg terdapat dalam “id”.

Nah… functionnya sudah jadi, selanjutnya kita lakukan test apakah function tersebut bisa berjalan. Misalkan kita akan menyingkat URL dari salah satu artikel yang ada di blog ini, yaitu “http://blog.rosihanari.net/cara-mengetahui-lama-eksekusi-execution-time-sebuah-script-php“. Cara menyingkat URL ini dengan function singkatURL() adalah sbb:

<?php
function singkatURL($url)
{
   $curlHandle = curl_init();
   // melakukan request ke server Google API
   curl_setopt($curlHandle, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url');
   curl_setopt($curlHandle, CURLOPT_HEADER, 0);
   curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, 0);
   // menentukan tipe konten hasil request yg berupa JSON
   curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
   // parameter yang berisi URL yang akan disingkat
   curl_setopt($curlHandle, CURLOPT_POSTFIELDS, '{"longUrl":"'.$url.'"}');
   curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($curlHandle, CURLOPT_TIMEOUT,30);
   // lakukan request dengan POST method
   curl_setopt($curlHandle, CURLOPT_POST, 1);

   // baca data hasil request yg berupa JSON
   $content = curl_exec($curlHandle);
   curl_close($curlHandle);

   // ekstrak data JSON untuk mendapatkan hasil URL yg disingkat
   $data = json_decode($content);
   return $data->id;
}

echo singkatURL('http://blog.rosihanari.net/cara-mengetahui-lama-eksekusi-execution-time-sebuah-script-php');

?>

Jika script di atas dijalankan, maka akan muncul output URL hasil singkatannya adalah: http://goo.gl/To7Q8. Jika Anda buka URL singkatan tersebut di browser otomatis akan diarahkan ke URL aslinya. Anda bisa integrasikan function di atas dengan sebuah form untuk memasukkan URL yang akan disingkat. Menarik bukan??? :-)

Nah… selamat mencoba, semoga bermanfaat.




Share ke Facebook Share ke Twitter
Baca Juga Artikel Terkait
Membuat Sendiri Script PHP Penterjemah Teks dengan Google API Translate
Membuat Buku Tamu dengan Akun Facebook (Bag 3)
Google XML Sitemaps, Plugin WordPress yang Google Friendly
Membuat Login Alternatif Dengan Akun Google Open ID
Teknik Mengirim Data (POST Method) Dari Remote Server Dengan CURL

Kata kunci: google api - penyingkat url - url shortener -


Ada 14 komentar dalam artikel ini.



  1. bimosaurus says:

    Mas Rosihan, saya masih rancu penggunaan antara php curl dengan fopen() url, perbedaannya dimana mas, mohon pencerahannya

    • rosihanari says:

      @bimosaurus: curl itu dapat dimanfaatkan untuk request data baik dalam POST atau GET method. Sedangkan fopen() setahu saya itu function untuk membaca file, yang menggunakan GET request. Beberapa hosting mendisabled fitur fopen() karena dirasa kurang aman dibandingkan curl.

  2. oga says:

    wah… makin sip aja pak..
    Maaf pak, sy mau nanya lagi… sy punya tabel tahunajaran status ‘Aktif’.
    Kalau di PHP, scriptnya supaya membuat tampilan tahunajaran itu aktif dan yang lainnya otomatis tidak aktif, itu gimana ya pak? Terimakasih..

  3. Qori El-Hafizh says:

    gimana kalo urlnya gak pake google API melainkan disimpan di database sendiri :)

  4. Timothy says:

    om itu otomatiskah

  5. venazhe says:

    maaf mas rosihanari, sy mau tanya tp agak meleceng dikit dari artikel diatas. Gini mas, sy salah satu pengunjung setia blog mas dan mendapati artikel ini http://blog.rosihanari.net/membuat-script-komentar-ala-blog yang ingi sy tanyakan, bagaimana membuat validasi formnya agar komentar gak bole kosong gitu? sy udah otak atik biar aman, tp gak efektif.

  6. Usep Rizal says:

    Asslm Pak Dosen, newbie izin ikut belajar2 dulu neh, nanti kalo udah agak2 ‘terang’ dikit otaknya, mau beli bukunya.. :)

  7. andrew franico hutasoit says:

    ada tutorial CURL juga mas?

  8. FansWebID says:

    lengkap sekali infonya pak, terimakasih sudah share

  9. ckckckck … emang klo bukan anak kuliahan, susah ngertinya yak bahasa yg bginian .. sukses aja mas buat aktifitasnya ;)

  10. Irwans says:

    Salam kenal Bang! Share ilmunya sangat bermanfaat.
    Ada yg mau ane tanyain. Trend url web sekarang adalah mengambil dari judul artikelnya (dengan mengganti space dengan tanda ‘-’) bukan lagi id-nya contohnya link laman ini http://blog.rosihanari.net/membuat-script-penyingkat-url-url-shortener-dengan-api-google/

    Apakah sudah ada tutorial script phpnya ? Kalo belum boleh gak ane request untuk dibuatkan tutorialnya.

    Makasih banyak sebelumnya.

  11. Wisnu says:

    mas saya mau tanya, kalo source code get theme di curl gimana mas? saya masih bingung mohon pencerahannya



 

Komentar/pertanyaan Anda!

Mohon maaf, komentar/pertanyaan yang menggunakan email palsu atau komentar bernada negatif, cemooh, umpatan, cacian atau sejenisnya secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

Mohon maaf jika seandainya ada beberapa pertanyaan Anda yang tidak direspon atau ditanggapi mengingat banyaknya komentar yang masuk dan keterbatasan kemampuan/ilmu saya dalam menjawab pertanyaan satu persatu. Saya harap Anda bisa memahami dan memakluminya.

Semua komentar atau pertanyaan yg masuk tidak akan langsung tampil di halaman ini, karena akan dimoderasi dahulu.


*