Kamis, 04 November 2010

11.Menangani bug dan error pada PHP

Programmer PHP yang hebat juga bisa membuat kesalahan saat membuat program PHP lho. Namanya juga manusia, ya kan? Karena itulah PHP memiliki kemampuan bawaan untuk menangkap error dan melakukan sesuatu terhadap error tersebut bila diperlukan. Nah sebagai pelengkap dari tulisan sebelumnya mengenai cara setting error pada script PHP, tulisan kali ini akan membahas masalah error ini secara lebih komprehensif.
Tindakan yang dilakukan PHP tersebut bisa saja hanya menampilkan pesan kesalahan (error message), atau hingga mengirimkan email lengkap tentang error tersebut pada administrator website.
Agar mudah melakukan hal tersebut, PHP memiliki berbagai perintah khusus untuk menangani error ini yang bisa kamu pakai untuk menangkap dan memperbaiki error yang terjadi. Kamu bahkan bisa juga membuat fungsi mekanisme penanganan error sendiri bila diperlukan.

Saat script PHP kamu mengalami error, maka script tersebut secara otomatis akan menampilkan pesan-pesan yang mengindikasikan penyebab error dan bila perlu akan menghentkan eksekusi script tergantung tingkat keseriusan error yang terjadi.
Perhatikan, perilaku script seperti ini hanya bisa kita gunakan saat pengembangan software saja, dan sebaiknya tidak terjadi ketika script PHP sudah digunakan oleh user yang sesungguhnya. Bayangkan saja, suatu ketika terjadi error pada script PHP kamu dan ada seorang user yang mengakses. Saat itu sang user akan memperoleh pesan kesalahan yang njelimet dalam "bahasa mesin" yang jelas mereka tidak pahami. Hal tersebut sangat tidak profesional kan?
Setelah script tersebut digunakan oleh user, maka kamu harus mengganti pesan-pesan kesalahan terebut dengan pesan yang lebih manusiawi, misalnya "Telah terjadi kesalahan, silakan hubungi webmaster:.

Pada dasarnya ada 3 jenis error pada PHP:

  1. Pesan (notice)
  2. Peringatan (warning)
  3. Fatal errors

Kita akan bahas pada tulisan selanjutnya ya.

web asal
Prothelord.com

12.Menangani MySQL Injection pada PHP

Kalau kamu sudah menggunakan database MySQL misalnya untuk login member, maka kemungkinan besar web kamu bisa dimasukkin oleh orang yang tidak berhak menggunakan sebuah teknik hack yang dikenal dengan MySQL Injection. PHP menyediakan sebuah fungsi yang menarik untuk mengatasinya. Mari kita lihat...
Sebelum kita belajar menggunakan fungsi PHP tersebut, ada baiknya saya coba sedikit ceritakan tentang MySQL Injection terlebih dahulu.

Pada dasarnya, MySQL Injection adalah sebuah cara memanipulasi query yang kita kirimkan ke tabel database MySQL kita sehingga query yang kita kirimkan diartikan lain oleh script PHP dan database MySQL kita.

Manipulasi ini bisa dilakukan untuk sekedar login secara ilegal, atau lebih parah lagi bisa digunakan untuk mendelete isi tabel yang kita miliki. Bahaya kan? Secara sederhana, caranya bisa saya gambarkan seperti ini.

Misalnya aja kamu memiliki query form login user sederhana menggunakan PHP dengan kode seperti ini:

$nama = "bambang";
$query = "SELECT * FROM pelanggan WHERE user = '$nama'";
echo "Normal: " . $query . "
";

// user input yang menggunakan MySQL Injection
$nama_manipulasi = "' OR 1'";

// Query untuk perbandingan
$query_manipulasi = "SELECT * FROM pelanggan WHERE user = '$nama_manipulasi'";

// tampilan query dengan injection
echo "Injection: " . $query_manipulasi;
Tampilan hasil eksekusi adalah seperti ini:

Normal: SELECT * FROM pelanggan WHERE user = 'bambang'
Injection: SELECT * FROM pelanggan WHERE user = '' OR 1''

Tampilan query pertama normal-normal aja, database akan memilih pelanggan yang bernama bambang.

Namun demikian, MySQL Injection telah membuat query kita melakukan hal yang berbeda. Hanya dengan menambahkan tanda kutip tunggal, si pemanipulasi telah mengakhiri string query kita dengan sukses sehingga menjadi seperti ini:

$user = ''

dan kemudian menambahkan OR 1 ke dalam statemen WHERE kita yang membuat artinya menjadi SELALU BENAR. Perhatikan hasil akhir query kita setelah di inject:

$user = '' OR 1

SELALU BENAR!

Jika script PHP kita sebelumnya hanya mengijinkan pelanggan yang ada dalam tabel MySQL saja yang masuk (dalam kasus ini yang bernama bambang), maka dengan trik ini, kita tidak memerlukan nama pelanggan untuk bisa masuk ke dalam login member. Karena dengan klausul OR 1, hasil query kita selalu benar.

Ok deh, dalam tulisan selanjutnya kita akan bahas cara menanganinya.

Mudah-mudahan bermanfaat.

web asal
Prothelord.com

13.Cara setting error message PHP pada php.ini

Minggu lalu kebetulan saya membantu salah seorang teman programmer untuk menyelesaikan aplikasi PHPnya dengan cepat. Saya agak heran mengapa pengerjaannya agak tersendat selama ini. Setelah saya perhatikan, saat dia selesai membuat script, kemudian hanya mendapati layar kosong alias blank saat script PHPnya dijalankan. What's wrong? Sebagaimana layaknya pengerjaan script pada proses development, teman saya itu mengerjakan di PCnya yang sudah diinstall XAMPP.
Nah herannya,screen browsernya blank ketika mengekesekusi file php yang dibuatnya. Saya langsung curiga kalau setting display erroornya dibuat off. kebayang kan, memperbaiki script tanpa mengetahui petunjuk sedikitpun di mana letak kesalahannya.... fiuhhh mengerikan. Kalau saya sendiri pasti udah putus asa jauh jauh hari sebelumnya ya :).
Nah, kemudian saya minta dia mengecek file php.ini yang ada di direktori xampp-nya. Setelah di buka, saya minta cek di baris yang ada tulisan display_errors, dan ..... benar saja, isinya masih off.
Langsung saja saya minta diubah menjadi on, dan restart server XAMPP-nya...
Dan hasilnya, errornya langsung bermunculan, ternyata penyebab scripnya ndak jalan adalah query MySQLnya masih kurang tepat....
Ok, pelajarannya adalah, jangan pernah lakukan development dan debugging script tanpa error message ya :).
Perlu diingat, bahwa untuk server komersial, memang sebaiknya setting error messagenya dibuat off. Tujuannya adalah:
1. Kenyamanan pengunjung, agar mereka tidak perlu melihat pesan error yang mengerikan itu.
2. Mempersulit proses hack di website kita.
Mudah-mudahan bermanfaat.

web asal
Prothelord.com

14.Forwarding Halaman Pakai PHP

Another letter yang menanyakan tentang forwarding halaman menggunakan PHP.
Ini emailnya:

Eh, mau nanya nih, kalo buka

http://www.juventus.com

itu kan ada yang bahasa Indonesia, terus kalo di klik, pas loading jadi juventus.co.id. Kok bisa gitu ya?

Mestinya MU Arsenal Liverpool juga pake bahasa Indonesia. Korea Jepang saja ada.



Jawaban saya seperti ini:

Nampaknya mereka menggunakan fasilitas redirect berdasarkan IP pengunjungnya.
Kita bisa mengetahui alamat IP pengunjung menggunakan PHP dan kemudian mencari negara asal alamat IP tersebut.
Jika misalnya ditemukan negaranya adalah Indonesia, maka pengunjung tersebut akan langsung di redirect ke co.id.
Secara singkat kira2 begitu .

Nah, sebagai tambahan, PHP memang memiliki fasilitas untuk mengetahui alamat IP pengunjung website kita. Kita bisa menggunakan variabel $SERVER['REMOTE_ADDR'] untuk mengetahui alamat IP tersebut.
Langkah berikutnya adalah mencari negara asal IP tersebut.

web asal
Prothelord.com

1.OOP PHP

OOP PHP adalah kependekan dari Object Oriented Programming PHP. Tutorial ini, seperti juga tutorial di Prothelon.com lainnya ditujukan buat kamu yang masih newbie dengan Pemrograman berbasis Obyek (OOP).

Saya menulis tentang OOP PHP ini karena beberapa waktu yang lalu ada yang minta melalui shout box kalo ndak salah namany Farah.

Ok Farah, kita mulai yah.

PHP selain mendukung pemrograman terstruktur yang sudah kamu pelajari di tutorial dasar PHP, juga mendukung Object Oriented Programming atau yang juga dikenal sebagai OOP. Meskipun dukungan terhadap OOP pada PHP tidak sekuat Java, tetapi PHP sudah cukup mature dalam mendukung OOP. Kamu bisa memperoleh banyak class yang kamu perlukan di internet untuk membuat program kamu.

Sebelumnya perlu saya sampaikan, bahwa pembuatan program berbasis OOP ini akan sangat terasa manfaatnya kalau kamu membuat program berskala besar atau program-program yang nantinya akan sering kamu ulangi pembuatannya dengan beberapa penyesuaian kecil, namun untuk program berskala kecil, mungkin lebih baik pake yang pemrograman terstruktur.

Object Oriented Programming adalah sebuah cara membuat program berbasis obyek, artinya kamu harus mengubah cara berpikir kamu menjadi berbasis obyek. Namun sebelum kita melangkah labih jauh, kamu akan saya kenalin dulu dengan beberapa istilah baru yang akan sering kamu gunakan dalam OOP yaitu class, object, encapsulation, inheritance dan polymorphism.

Nah, sebenarnya kemampuan sebuah bahasa pemrograman dalam mendukung OOP ditentukan oleh kemampuan mereka dalam mendukung kelima istilah yang sudah saya sebutkan dalam paragraf sebelumnya itu. Mungkin juga kamu pernah atau akan bertanya-tanya apa bedanya OOP dengan fungsi. Nah nanti akan kita lihat perbedaannya yah.

Ok, sampai di sini dulu bagian pertama OOP PHP ini.

Sampai ketemu di tutorial tentang perbedaan Class OOP dan Fungsi PHP. Penasaran kan?

web asal
Prothelord.com

2.Perbedaan Class OOP dengan Fungsi

Dalam tutorial OOP PHP sebelumnya, kita sudah belajar tentang 5 istilah kunci dalam OOP. Namun sebelum kita membahas lebih lanjut kelima istilah tersebut, kita akan mempelajari dulu konsep OOP alias Object Oriented Programming. Konsep ini tentu saja berlaku umum baik untuk PHP maupun pemrograman lain yang mendukung OOP seperti Java.

Ingat ini. Sebenarnya OOP adalah cara berpikir dalam membuat program.

Sebenarnya dalam banyak hal, program kita tidak akan berbeda jauh dengan metode terstruktur yang mungkin selama ini kita kenal. Namun yang penting adalah cara berpikirnya. Ingat kata kunci ini: Berpikir secara obyek. Gampangnya kalau kita membuat sebuah program, maka kita akan membuat berbagai class yang akan sering kita gunakan dan class itu akan kita buat menjadi obyek itu bisa kita kembangkan lagi nantinya.

Untuk menjelaskannya, biasanya berbagai buku atau tutorial akan menggunakan contoh obyek seperti kucing, rumah atau mobil. Karena penjelasan itu memang menggambarkan proses pembuatan program berbasis OOP yang mirip cara berpikir kita sehari-hari. Kalo ndak percaya, coba aja beli buku OOP atau baca tutorial OOP.

Namun saya pernah merasakan sendiri bahwa penjelasan langsung dengan contoh riil di dunia nyata tersebut menjadi contoh abstrak di dunia pemrograman. Lha iya kan, masak kita akan membikin kucing atau rumah atau mobil dengan PHP? Makanya saya coba njelasinnya sedikit berbeda. Saya akan mulai bukan dari contoh riil yang malah jadi abstrak tadi, tetapi dari membandingkan beberapa cara berpikir dalam membuat program. Selanjutnya baru kita lihat proses berpikir OOP dengan membandingkannya ke kehidupan sehari-hari tadi.

Mudah-mudahan bisa lebih clear.

Ok, untuk mempermudah membayangkan perbedaan cara membuat program biasa dan OOP, saya akan sampaikan beberapa perbandingan antara cara berpikir dalam pemrograman. Siap?

Di awal karir kita (kita? Lu aja kali, gua kagak. Awas jangan ngomong gitu yah :)), umumnya kita akan membuat program tanpa fungsi. Misalnya kita akan membuat sebuah program kalkulator. Dalam contoh ini kita akan fokus dalam pembuatan tampilannya.

Bayangkan sebuah kalkulator. Udah? Nah, kita pasti perlu membuat tampilan depannya yang mirip kalkulator kan? Di mana ada beberapa tombol angka dan operasi matematikanya serta layar yang akan menampilkan apapun yang kita pencet di tombol itu dll. Nah, dalam pembuatan program kalkulator tersebut, kita akan membuat sebuah program panjang yang menuliskan semua kode untuk membuat tampilan. Mulai dari kotak luarnya, diteruskan layarnya, tombol 1, tombol 2, tombol 3, dst, serta tombol operator -, +, x dan : serta sebuah tombol = yang Anda buat lebih besar dari yang lain karena sering dipakai.

Nah, setelah Anda agak canggih dalam membuat program, Anda pasti tahu bahwa pembuatan tombol itu adalah proses berulang yang sebenarnya bisa kita buatkan fungsi dengan variabel input tulisan yang akan ditampilkan. (Ingat contoh ini sangat disederhanakan lho, jadi jangan protes). Maka kita akan membuat fungsi tombol tersebut. Di sini kita akan membuat 2 jenis fungsi yaitu tombol kecil dan tombol besar (tombol besar tentu saja buat si “sama dengan” tadi itu).

Kemudian, setelah belajar OOP, maka kamu akan membuat sebuah sebuah class yang bernama tombol. Class ini sudah kita desain agar dapat kita bikin obyek tombol berbagai ukuran, warna, tulisan yang menyertainya dan event yang terjadi kalau kita pencet tuh tombol. Dengan OOP, maka class kita tadi akan memiliki sifat-sifat pemrograman OOP yang tentu saja akan membantu kita untuk membuat program berbasis PHP.

Penjelasan mengenai perbedaan antara class dengan fungsi secara sederhana adalah pada sifat-sifat OOP yang sudah pernah kita sebutkan dalam tutorial OOP sebelumnya.

Dengan adanya sifat-sifat itu, maka pembuatan program akan jauh lebih mudah. Contohnya, kalau kamu membuat program dan memerlukan fungsi tertentu, maka kamu bisa membuat sendiri fungsi kamu atau akan lebih mudah dengan mencari di Internet. Setelah kamu download, maka kamu akan perlu mempelajari fungsi itu dan cara penggunaannya serta bila perlu memodidikasi core programnya. Ini berbeda dengan class pada OOP. Dengan class, kita cuman butuh tahu sifatnya aja.


Penjelasan mengenai class ini akan membawa kita pada penjelasan yang menggunakan obyek sehari-hari.

Ok, mudah-mudahan penjelasan dengan membandingkan ini bisa membantu kamu buat sedikit memahami OOP. Berikutnya kita akan belajar konsep berpikir dalam OOP dengan contoh obyek sehari-hari. Ini kamu perlukan untuk menyambung penjelasan tentang sifat class tadi. Penting lho. So don’t miss it.

web asal
Prothelord.com

3.Konsep OOP

Dalam tutorial OOP PHP sebelumnya, kamu udah belajar tentang perbedaan Class dan Fungsi dalam konsep OOP dibandingkan pemrograman terstruktur yang pernah kamu pelajari selama ini. Sekarang, saya akan melanjutkan dengan penjelasan standar tentang konsep OOP yang umumnya memberi contoh dengan membuat asosiasi dengan benda-benda sehari-hari.



Saya pernah mendengar dan membaca beberapa asosiasi obyek pada OOP dengan kucing, mobil dan rumah dalam usaha untuk menjelaskan konsep OOP. Dari semua itu, menurut saya yang paling mudah di pahami adalah asosiasi dengan pembuatan rumah. Jadi kita akan mulai penjelasan konsep OOP kita dari sana sajalah (ya sajalah, masa saja dong).


Ok, mari kita mulai.


Bayangkan kamu dah cukup punya uang dan pengen membangun sendiri rumah idaman kamu, bukannya membeli jadi dari developer. Di sini saya asumsikan kamu udah beli tanahnya dan siap membangun.


Kamu pergi ke toko bangunan dan membeli semua bahan yang kamu perlukan yaitu batu bata, semen, pasir, kayu, dan material lainnya. Setelah semua siap, kamu berencana akan menggunakan jasa tukang membuat bangunan untuk membangun rumah kamu. Tentu saja tukang tersebut dengan bayaran yang sudah kalian sepakati akan mulai membangun rumah kamu.


Mereka mencampur air dengan semen dan pasir agar menjadi adonan semen yang kemudian akan digunakan untuk merekatkan batu bata dan membentuk dinding rumah kamu. Setelah dinding siap, mereka mulai memasang jendela kayu, pintu kayu dan atap dari genteng. Setelah semua terpasang, mereka akan mulai dengan proses finishing. Dinding akan di perhalus dan di cat, serta lantai dipasangin keramik. Semua diperbagus agar rumah kamu berdiri dengan indahnya.


Nah, proses pembangunan rumah itu sangat baik untuk menggambarkan konsep OOP. Perhatikan, rumah kamu itu tadi disusun dari berbagai macam obyek seperti batu bata, semen, air, cat dan sebagainya.


Kalau kamu pernah tanya sama tukang yang membangun rumah kamu memgenai susunan kimiawi semen, kira-kira bagaimana reaksinya? Yak tepat sekali, pada umumnya mereka akan menatap kamu dengan pandangan heran dan mungkin sedikit kesal. Yang pasti, hampir semua tukang bangunan tidak akan mengenal susunan kimiawi semen. Si tukang bangunan itu juga kemungkinan besar belum permah membuat batu bata, susunan kimiawi air, cat dan bagaimana proses pembuatan keramik untuk lantai rumah kamu.


Fakta ini tolong diingat: Rumah kamu dibangun dari berbagai obyek yang tidak diketahui cara pembuatan dan susunan kimiawinya oleh si tukang bangunan. Tukang bangunan itu tidak mengetahui detil dari bahan bangunan yang dia pergunakan. Dia tidak mengerti detil obyek yang dia gunakan. Si tukang hanya tahu cara menggunakannya tapi sudah bisa membuatkan sebuah rumah yang indah buat kamu.


Dengan pemrograman OOP, kamu kemungkinan besar akan melakukan hal yang sama dengan tukang bangunan itu. Kamu akan berkeliaran di Internet mencari berbagai obyek (ini nanti akan kita sebut class) yang kamu perlukan untuk membuat program idaman kamu jadi.


Kamu tidak perlu tahu detil obyek/class itu. Kamu cuma perlu tahu cara menggunakannya dalam program. Gitu tuh konsep OOP.


Selesai.


Kedengaran menyenangkan? Kita akan lanjutkan dalam tutorial berikutnya yang masih akan menjelaskan tentang konsep OOP yaitu Class PHP dan Object PHP.

web asal
Prothelord.com