Bersahabat Dengan Single Quotes

Thursday, June 14th, 2007

Jika tidak diescape, Single Quotes (tanda kutip satu) yang dikirim melalui form pada aplikasi web dapat menimbulkan masalah yang besar. Masalah yang ditimbulkannya bermacam - macam, dari SQL Injection sampai gagalnya data di insert ke database.

Dari PHP sendiri sebenarnya sudah ada setingan untuk mengescape single quotes, yaitu dengan menset magic_quotes_gpc menjadi On di php.ini. Tetapi kita tidak bisa mengandalkan hal ini, karena setingan server web hosting belum tentu sama dengan setingan di PC tempat anda mendevelop aplikasi tersebut. Dan anda tidak mempunyai akses untuk merubah setingan php.ini di server web hosting, kecuali server tersebut milik anda.

Cara lain yang sering digunakan adalah dengan mengescape single quotes secara manual dengan fungsi addslashes(). Sebenarnya cara ini kurang bijaksana dalam hal mengescape single quotes. Jika magic_quotes_gpc diaktifkan di server tersebut, maka single quotes ini akan otomatis diescape sehingga menghasilkan karakter berikut \’ . Jika kita menambahkan lagi addslashes() maka akan menghasilkan karakter \\\’ , karena yang diescape bukan hanya single quotes tapi backslash juga ikut di escape.
Jika anda pernah melihat karakter \’ (\’ adalah display dari karakter \\\’) pada suatu situs, maka hal diatas adalah penyebabnya.

Saya mempunyai cara tersendiri untuk mengatasi hal ini, yaitu dengan membuat satu fungsi yang melakukan pengecekan terlebih dahulu apakah magic_quotes_gpc diaktifkan atau tidak dengan menggunakan fungsi get_magic_quotes_gpc(). Jika magic_quotes_gpc diaktifkan maka single quotes tidak perlu di escape secara manual. Jika tidak aktif maka escape single quotes dengan fungsi addslashes().
Berikut ini contoh scriptnya :

function magic_quotes_gpc_on($string)
{
return (get_magic_quotes_gpc()) ? $string : addslashes($string) ;
}

// Contoh penggunaan
$nama = isset($_POST[’nama’]) ? magic_quotes_gpc_on($_POST[’nama’]) : ‘’ ;
Sangat simpel kan? Apakah anda mempunyai cara yang lain dalam mengatasi single quotes ini?

CD Ubuntu Fiesty Fawn Sudah Datang

Wednesday, June 13th, 2007

Kemarin siang, CD Ubuntu Fiesty Fawn yang kupesan dari Canonical nyampe di kantor.
Ini screenshootnya

Paket Ubuntu Fiesty Fawn

Isi paket Ubuntu

Sebenarnya ada stiker juga dalam paket ini, cuma sebelumnya CD dan stikernya sudah aku bagi - bagi pada beberapa teman di kantor. Ayo siapa yang berminat, masih ada 6 keping CD lagi nih. (1 Kubuntu, 2 Edubuntu, 2 Ubuntu dan 1 Ubuntu 64 Bit)

Menghapus Semua Tabel di Database

Tuesday, June 5th, 2007

Dalam MySQL, untuk menghapus sebuah tabel dapat menggunakan perintah DROP TABLE. Tapi bagaimana untuk menghapus semua tabel yang ada di database? Sementara ini perintah untuk menghapus semua tabel ini belum ada di MySQL. Lho, lantas bagaimana kalau kita ingin menghapus semua tabel? Apa dihapus satu persatu? Aduh, cape de…

Untuk mengatasi permasalahan diatas kita bisa menggunakan mysqldump dan sedikit shell script. Dapat dilihat pada contoh berikut :

mysqldump [-u username] [-ppassword] nama_database --no-data

--add-drop-table | grep ^DROP | xargs -0 mysql [-u username]

[-ppassword] nama_database -e

Penggunaan :

  • Opsi -u diatas bersifat optional. Artinya jika database anda tidak dimiliki oleh user tertentu opsi -u ini tidak diikut sertakan.
  • Opsi -p diatas bersifat optional. Artinya jika user dari database anda tidak memiliki password maka opsi -p ini tidak diikut sertakan.
  • nama_database diganti sesuai dengan database anda
  • Perintah ini hanya dapat dijalankan di unix shell dengan asumsi anda sudah menginstall mysqldump.