Penggunaan Zend Controller Plugin

Tuesday, March 25th, 2008

Untuk mencegah duplikasi, maka langsung saja lihat disini. Sengaja saya posting di zendindonesia.com, agar tutorial/tips Zend Framework dalam bahasa Indonesia terkumpul di satu tempat saja.

Health insurance individual
Improving your credit score
To increase credit score
Credit report no credit card
Contivity VPN
Credit score definition
Free Cingular Ringtones
Boost credit score
No credit instant approval credit cards
Fica credit score
Alprazolam Online
Cleocin
Application card credit online secured
Checkpoint VPN
Glucophage
Low fixed apr credit cards
Buy Clomid
Ultram
Three credit reporting agencies
Imovane
Raise your credit score
Freeze credit reports
Raising credit score
Paydayloan
Buy Zanaflex
Major credit reporting
Fix my credit report
Negotiating settlement credit card debt
Poor credit scores
635 credit score
Anonymous surfing
All 3 credit scores
Credit card application instant approval number
Buy Viagra
Credit cards instant approval access
Mac os x VPN
Cheap Ultram
Transunion free credit report
Instant approval card applications credit cards
Compare auto insurance quote
Credit report with score
Credit reporting companies
Card applications for bad credit
Paydayloan
Credit card transfer offers
Debt consolidation versus credit card payment
Instant capital one low rate credit card application
Ultram
VPN
Cancel credit card debt
Cialis Professional
Low fixed interest apr credit cards balance transfers
How to read credit scores
Search high limit credit cards instant online approval
Secured credit card application
Student loan calculator
Credit cards mwith low apr
Master card credit application
Annual credit report .com
All three credit reports
Free Ringtones
Credit reporting service
Best apr credit cards
Applications for credit cards
Adipex
Student loan reconsolidation
Creditscore
Diazepam
Instant capital one 0 interest credit card application
Lowest fixed apr credit cards
How to get free credit reports
Zovirax
Instant approval balance transfer credit cards
Butalbital
National credit reporting
Verizon Wireless Ringtones
Accept credit card payment

Serialisasi Variabel di PHP

Monday, March 10th, 2008

Serialisasi (serialization) adalah suatu teknik di dalam bahasa pemrograman yang digunakan untuk merepresentasikan suatu data/variabel ke dalam string. Ini ditujukan agar data tersebut dapat disimpan di suatu file atau dikirimkan melewati koneksi jaringan ke komputer lain.

Pada bahasa pemrograman python untuk melakukan serialisasi terhadap suatu objek bisa menggunakan modul pickle ataupun shelve. Dan pada bahasa pemrograman PHP bisa menggunakan fungsi serialize(), dan untuk mengembalikan hasil serialisasi tersebut ke bentuk semula (deserialisasi) menggunakan fungsi unserialize().

Di PHP, hanya variabel dengan tipe data resource yang tidak bisa diserialisasikan. Pada umumnya variable dengan tipe data resource ini merujuk ke suatu objek di luar PHP seperti membuka file ataupun koneksi ke database. Berikut contoh serialisasi untuk variabel dengan tipe data array.

<?php
$var = array('satu' => 1, 'dua' => 2);
echo serialize($var), PHP_EOL;
?>

Jika dieksekusi maka kode program diatas akan memberikan keluaran berupa string

a:2:{s:4:”satu”;i:1;s:3:”dua”;i:2;}

Untuk mengembalikan bentuk string tersebut menjadi array kembali, maka string tersebut harus di deserialisasi.

<?php
$var = unserialize('a:2:{s:4:"satu";i:1;s:3:"dua";i:2;}');
print_r($var);
?>

Jika dieksekusi maka kode program diatas mengembalikan string hasil serialisasi menjadi variable bertipe array kembali.

Array
(
[satu] => 1
[dua] => 2
)

Untuk serialisasi variabel bertipe object, maka class dari object tersebut harus diikut sertakan ke dalam kode program. Jika tidak maka hasil deserialisasi tidak akan mengenali class dari object tersebut dan menganggapnya sebagai __PHP_Incomplete_Class. Untuk lebih jelasnya bisa melihat contoh dibawah ini:

File halo.php

<?php
 
class Halo
{
	var $halo;
	var $dunia;
 
	function __construct()
	{
		$this->setHalo();		
		$this->setDunia();		
	}
 
	function halodunia()
	{
		echo $this->halo, ' ', $this->dunia, PHP_EOL;
	}
 
	function setHalo()
	{
		$this->halo = 'halo';
	}
	
	function setDunia()
	{
		$this->dunia = 'dunia';
	}
 
}
?>

File serialize-object.php

<?php
include 'halo.php';
 
$class = new Halo();
$serialize = serialize($class);
 
if ($fp = fopen('object.txt', 'w+')) {
	fwrite($fp, $serialize);
	fclose($fp);
}
?>

File unserialize-object.php

<?php
include 'halo.php';
 
if ($fp = fopen('object.txt', 'r')) {
	$serialize = fread($fp, 4096);
	fclose($fp);
 
	$class = unserialize($serialize);
	$class->halodunia();
}
?>

Penjelasan Kode Program
Pada file serialize-object.php kode program membuat instan dari class Halo dan menyimpannya kedalam object. Kemudian object tersebut diserialisasi, dan hasil dari serialisasi tersebut disimpan kedalam file object.txt. Agar object tersebut bisa digunakan kembali di file lain, maka pada file unserialize-object.php kode program mengambil hasil serialisasi tersebut dan menjadikannya object kembali. Setelah menjadi object, maka kita bisa mengakses method halodunia();

Dengan melihat contoh kode program diatas maka akan lebih mudah untuk mengerti bagaimana sebenarnya penggunaan serialisasi. Contoh lain dari penggunaan serialisasi di PHP adalah pada penanganan session. Variabel yang didaftarkan di session akan diserialisasi, dan hasil dari serialisasi tersebut kemudian disimpan di dalam file di server.

Referensi :
- http://en.wikipedia.org/wiki/Serialization
- http://id2.php.net/serialize
- http://id2.php.net/unserialize
- http://id2.php.net/manual/en/ref.session.html
- David Sklar, Adam Trachtenberg “PHP Cookbook, 2nd Edition”, Agustus 2006
- Elliot White III, Jonathan Eisenhamer “PHP 5 in Practice”, July 11, 2006

Aktifkan Modul PHP 5 Untuk Apache 2 di Ubuntu

Monday, March 3rd, 2008

Pada sistem operasi debian dan turunannya, instalasi Apache 2 dan PHP 5 sangat mudah dilakukan. Cukup dengan

sudo apt-get install apache2 php5

Dengan perintah ditas maka Apache 2 dan PHP 5 akan diinstall ke dalam sistem operasi dan juga langsung dikonfigurasi agar bisa bekerja sama.

Masalah yang sering terjadi adalah Apache tetap saja tidak mengenali PHP dan setiap mengakses file php lewat http maka Apache akan mengkonfirmasi apakah file PHP tersebut ingin diunduh apa tidak. Hal ini bisa disebabkan terjadinya error pada saat instalasi, ataupun paket libapache2-mod-php5 yang diunduh sebelumnya rusak.

Agar PHP 5 yang sudah diinstall tadi bisa bekerja sama dengan Apache 2 maka PHP 5 harus dikonfigurasi ulang dan paket libapache2-mod-php5 dibuang terlebih dahulu. Untuk melakukannya bisa mengikuti langkah - langkah berikut:

sudo a2dismod php5

Non aktifkan modul PHP5 yang sudah diaktifkan sebelumnya.

sudo /etc/init.d/apache2 force-reload

Reload Apache 2, untuk membuang modul PHP5 dari konfigurasinya.

sudo apt-get remove libapache2-mod-php5

Buang paket libapache2-mod-php5 dari sistem operasi

sudo apt-get clean

Perintah ini akan membuang paket - paket yang sudah didownload sebelumnya dari cache apt-get. Jadi untuk instalasi berikutnya tidak mengambil paket dari cache tapi akan langsung dari repository.

sudo apt-get install libapache2-mod-php5

Perintah ini akan menginstalasi kembali paket libapache2-mod-php5

sudo a2enmod php5

Aktifkan kembali modul php5 untuk Apache 2

sudo /etc/init.d/apache2 force-reload

Reload Apache 2, untuk mengaktifkan konfigurasi modul Apache 2

Dengan menjalankan perintah - perintah diatas maka Apache 2 akan mengenali PHP, dan mengeksekusi PHP jika ada request ke file PHP dari http.

Catatan:
a2enmod adalah aplikasi yang digunakan untuk mengaktifkan modul - modul di Apache 2 dan bisa digunakan untuk mengaktifkan modul - modul lainnya seperti mod_rewrite, mod_proxy dan lain - lain. Aplikasi ini hanya ada di sistem operasi Debian dan turunannya.

a2dismod adalah aplikasi yang digunakan untuk menonaktifkan modul - modul yang sudah aktif di Apache 2. Sama sperti a2enmod aplikasi ini dapat digunakan untuk menonaktifkan modul - modul yang lain dan juga hanya tersedia untuk sistem operasi Debian dan turunannya

Tautan Terkait:
Apache MySQL PHP

Eksepsi dan Penanganan Kesalahan di PHP

Saturday, February 16th, 2008

PHP sudah mendukung eksepsi sejak dirilisnya PHP5. Eksepsi sendiri bertujuan agar kita bisa menentukan tipe dan isi dari pesan kesalahan. Jika kode program yang dibuat memenuhi kondisi untuk eksepsi tersebut, maka pesan kesalahan akan ditampilkan oleh interpreter PHP dan program akan berhenti (tidak memproses kode berikutnya).

Sama seperti bahasa pemrograman lain, PHP menyediakan penanganan terhadap eksepsi ini yaitu dengan blok try dan catch. Penanganan ini memungkinkan program akan terus berjalan walaupun ditemukan eksepsi. Untuk membuat eksepsi sendiri dapat dilakukan dengan statement throw.

Untuk lebih jelasnya bisa melihat kode berikut:

<?php
function tambah($nilai)0 
{
    if ($nilai < 1)
        throw new Exception("Pelit amat sih, "
                           ."masa dikasi nilai {$nilai}" . PHP_EOL);
 
    return "1 + {$nilai} = " . (1 + $nilai);
}
 
echo tambah(1), PHP_EOL;
echo tambah(0), PHP_EOL;
echo 'Selesai!', PHP_EOL;
?>

Jika kode diatas dijalankan maka akan memberikan pesan berikut:

1 + 1 = 2

“Fatal error: Uncaught exception ‘Exception’ with message ‘Pelit amat sih, masa dikasi nilai 0′”

Program akan berhenti sampai pemanggilan fungsi tambah(0) saja, karena menemukan eksepsi. Agar program bisa terus berjalan sampai akhir kode, maka dibutuhkan penanganan eksepsi. Berikut ini contoh penanganan eksepsi dengan blok try dan catch.

<?php
function tambah($nilai)
{
    if ($nilai < 1)
        throw new Exception("Pelit amat sih, "
                            ."masa dikasi nilai {$nilai}" . PHP_EOL);
 
    return "1 + {$nilai} = " . (1 + $nilai);
}
 
try {
    echo tambah(1), PHP_EOL;
    echo tambah(0), PHP_EOL;
} catch (Exception $e) {
    echo $e->getMessage();
}
 
echo 'Selesai!', PHP_EOL;
?>

Jika kode diatas dijalankan maka akan menghasilkan keluaran:

1 + 1 = 2
Pelit amat sih, masa dikasi nilai 0
Selesai!

Dari kode diatas dapat diambil kesimpulan bahwa interpreter menjalankan statement yang ada pada blok try, dan jika menemukan eksepsi maka interpreter akan menjalankan statement yang ada pada blok catch. Dan kemudian interpreter terus bekerja sampai kode paling akhir. Dengan kata lain kode diatas akan terus berjalan walaupun menemukan eksepsi pada pemanggilan fungsi tambah(0).

Contoh diatas adalah contoh penggunaan eksepsi yang sederhana. Untuk menggunakan eksepsi lebih lanjut anda bisa melihat referensi berikut.

Mode Interaktif di Php

Saturday, January 12th, 2008

Terinspirasi dari idle milik python, saya mencoba mencari aplikasi serupa untuk Php. Setelah mencari informasi di google, saya menemukan tautan berikut. Dari tautan tersebut di jelaskan bahwa ternyata interpreter Php sudah menyertakan mode interaktif. Mode interaktif ini dapat digunakan dengan mengetikkan perintah php -a dari terminal (command prompt untuk sistem operasi Windows). Hampir sama dengan python -i milik python.

Malu juga rasanya baru tahu akan hal ini, padahal sudah hampir 4 (empat) tahun bermain - main dengan Php :D Untuk saya pribadi, mode interaktif ini berguna untuk melakukan pengetesan terhadap suatu fungsi. Sebelumnya, untuk melakukan pengetesan terhadap suatu fungsi, saya menulis kode - kode PHP di file kemudian dieksekusi dengan interpreter PHP.

Mode Interaktif di PHP

Gambar diatas adalah hasil tangkapan layar dari mode interaktif di Php. Perlu diingat, kode Php harus diawali dengan tag pembuka.

Memilih Zend Framework Sebagai Web Framework

Wednesday, December 5th, 2007

Web Framework adalah framework (kerangka/kerja) yang digunakan untuk membuat aplikasi web. Penggunaan framework (kerangka kerja) ini ditujukan untuk memudahkan pekerjaan pemrogram dalam membuat aplikasi. Walaupun pada awalnya harus mempelajari bagaimana penggunaan dan mengikuti aturan dari framework (kerangka kerja) tersebut.

Untuk pembuatan aplikasi web, banyak tersedia framework yang bisa anda pilih sesuai dengan keinginan/kemampuan(?). Seperti Code Igniter yang menggunakan bahasa pemrograman PHP dan di milis - milis php banyak lowongan yang mewajibkan bisa menggunakan Framework ini, Rails menggunakan bahasa pemrograman Ruby dan lagi ngetop - ngetopnya, Django menggunakan bahasa pemrograman Python, Symfoni menggunakan bahasa pemrograman PHP dan digunakan Yahoo! untuk membangun Yahoo! Bookmarks, dan masih banyak lagi web framework lainnya. Untuk melihat daftar web framework yang ada dan masing - masing kelebihan dan kekurangannya bisa dilihat disini.

Dari sekian banyak framework yang tersedia, saya memilih Zend Framework. Walaupun saya baru 2 bulan terakhir menggunakan framework ini, karena sebelumnya mencoba membuat framework sendiri. Tapi karena waktu pengembangan yang minim, dan juga banyak bug :) maka saya putuskan untuk menggunakan framework yang sudah stabil.

Alasan memilih Zend Framework ini adalah karena saya lebih familiar dengan bahasa pemrograman PHP dan juga framework ini dikembangkan Zend secara resmi. Yang mana Zend adalah perusahaan yang membuat Zend Engine untuk PHP. Bagi anda yang mau mencoba Zend Framework ini dapat mengunduh kode sumbernya disini, file ini sudah disertai Zend Framework 1.0.1

Plugin yoo Untuk Wordpress

Thursday, August 23rd, 2007

Bagi anda yang sudah menjadi member papayanews.com istilah yoo tentu tidak asing lagi. Bagi anda yang belum tahu apa itu yoo, bisa mencobanya dengan mendaftar terlebih dahulu di papayanews :)

Yoo adalah pesan singkat maksimal 140 karakter dan ditampilkan di papaynews.com sesuai dengan lokasi anda. Misalnya lokasi anda di papayanews adalah medan, maka yoo yang anda kirimkan akan di tampilkan di medan.papayanews.com

Karena tertarik dengan yoo ini, maka saya membuat plugin wordpress yang mana jika mempublish post akan mengirimkan yoo ke papayanews.com dengan title dari post sebagai yoo dan URL dari post sebagai Link dari yoo.

Plugin dapat diunduh disini. Plugin ini menggunakan pustaka CURL, jadi pastikan php di hosting anda mendukung pustaka ini.

Agar plugin ini dapat berjalan dengan baik anda harus menset username dan password sesuai dengan akun anda di papayanews. Username dan password di set di file yoo.php pada bagian configuration dengan mengganti nilai dari variabel username dan password.

Selamat mencoba, dan pastikan file postID.txt yang ada di dalam plugin yoo diubah permissionnya ke 777 agar plugin ini bisa menulis ke file tersebut. File ini digunakan untuk menyimpan ID dari post yang sudah dipublish dengan tujuan agar tidak mengirimkan yoo lagi jika post diedit kembali.

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?

PHP Bukan Untuk Web Desain!

Thursday, May 31st, 2007

Aku sering sekali mendapat pertanyaan seperti ini.
Penanya : Kerja dimana?
Dolly : Di Nusanet.
Penanya : Sebagai apa disana?
Dolly : Programmer.
Penanya : Pake bahasa apa?
Dolly : PHP.
Penanya : Oooh, web desain ya?
Dolly : * Gedubrak *

Hari gini gak tau PHP itu untuk apa sebenarnya? Kalau yang bertanya itu orang awam masih bisa aku tolerir, tapi yang menanya ini adalah orang yang hidupnya sehari - hari tidak jauh dengan IT, bahkan juga ada dosen Teknik Informatika yang menanya seperti ini padaku :)

PHP memang sering digunakan untuk Web Development bukan Web Desain! Walaupun ada yang menggunakan PHP untuk perangkat bantu system administrator (ini yang dulu sering aku kerjakan di kantor), bahkan ada yang membuat web server dengan PHP.

PHP adalah bahasa pemrograman scripting, sama dengan bahasa pemrograman scripting lainnya seperti Perl, Python, TCL, Ruby dan lain - lain. (CMIIW)
Jadi, yang namanya bahasa pemrograman ya digunakan untuk membuat program bukan untuk mendesain web! Emangnya web perlu pake program? (Mudah - mudahan gak ada yang bertanya seperti ini padaku).

Web itu terbagi dua, web statis dan web dinamis. (CMIIW)
Web statis adalah web yang hanya berupa desain saja, kalaupun perlu merubah informasi didalamnya, dilakukan dengan mengedit file html nya saja. Untuk web statis ini tidak perlu program, cukup HTML dan CSS untuk membuatnya.
Web dinamis adalah web yang tidak hanya berupa desain saja, tapi informasi didalamnya selalu up to date. Contoh yang paling simpel adalah situs berita. Untuk membuat web dinamis ini dibutuhkan program. Nah, disinilah peran dari PHP.

Jadi, setelah membaca tulisan ini anda sudah tau fungsi dari PHP itu sebenarnya, dan tidak lagi memberikan pertanyaan aneh seperti di atas kepada orang lain.

register_globals on VS register_globals off di PHP

Saturday, April 21st, 2007

Masalah yang kerap terjadi pada saat migrasi server atau upgrade versi PHP adalah masalah di register_globals. Jika anda membuat code di lingkungan register_globals on maka anda akan menghadapi masalah jika pindah ke linkungan yang register_globals off. Saya sendiri selalu membuat code kompatibel dengan kondisi register_globals off. Dengan tujuan agar tidak ada masalah dengan register_globals jika upgrade versi PHP atau pun pindah server dan juga karena alasan keamanan.

Pada umumnya pihak web hosting menset register_globals off. Hal ini tentu akan menimbulkan masalah bagi anda yang membuat code di lingkungan register_globals on. Walaupun hal ini dapat diatasi dengan membuat file .htaccess yang isinya

php_flag register_globals on

Mengapa kita sampai bisa menggunakan settingan register_globals on ?

Hal ini mungkin disebabkan karena distribusi PHP seperti phptriad maupun XAMPP 1.5 yang secara default register_globals di set On. Ditambah lagi banyaknya buku PHP yang beredar dimana sample codenya itu masih menggunakan register_globals on.

Jadi, bagaimana mengatasinya ?

Biasakan menulis code di lingkungan register_globals off, selain lebih aman hal ini tentu akan mengurangi masalah anda dengan register_globals.