<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>thinkrooms &#187; Prado Framework</title>
	<atom:link href="http://www.thinkrooms.com/category/it/prado-framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thinkrooms.com</link>
	<description>Web Developer, Web Designer, Internet Solution, Network  and System Integration</description>
	<lastBuildDate>Sun, 08 Nov 2009 04:43:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Yii Framework, new best performance php framework</title>
		<link>http://www.thinkrooms.com/2008/10/08/yii-framework-new-best-performance-php-framework/</link>
		<comments>http://www.thinkrooms.com/2008/10/08/yii-framework-new-best-performance-php-framework/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 01:45:16 +0000</pubDate>
		<dc:creator>tyohan</dc:creator>
				<category><![CDATA[Prado Framework]]></category>
		<category><![CDATA[Recommended]]></category>
		<category><![CDATA[Web Developer]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[yii]]></category>

		<guid isPermaLink="false">http://www.thinkrooms.com/?p=83</guid>
		<description><![CDATA[Pengembang Prado Qiang Zue memilih mengembangkan framework baru dibandingkan meneruskan Prado 3 ke versi 4. Framework baru ini yang diberi nama Yii merupakan turunan dari Prado karena meminjam konsep dan kelebihan dari Prado namun dengan beberapa perubahan untuk kemampuan yang lebih baik. Perubahan paling signifikan dari framework ini adalah performancenya. Hasil tes membuktikan bahwa Yii [...]]]></description>
			<content:encoded><![CDATA[<p>Pengembang Prado Qiang Zue memilih mengembangkan framework baru dibandingkan meneruskan Prado 3 ke versi 4. Framework baru ini yang diberi nama Yii merupakan turunan dari Prado karena meminjam konsep dan kelebihan dari Prado namun dengan beberapa perubahan untuk kemampuan yang lebih baik. Perubahan paling signifikan dari framework ini adalah performancenya. Hasil tes membuktikan bahwa Yii telah menjadi framework dengan performance terbaik saat ini. Meninggalkan Codeigniter yang selama ini merupakan pemegang sabuk juara performance untuk framework PHP.</p>
<p><img style="max-width: 800px; float: none;" src="http://www.yiiframework.com/images/performance.png" alt="" /></p>
<p>Codeigniter memilih tidak menggunakan seluruh kemampuan Object Oriented Programming(OOP) dengan alasan performance, namun Yii mematahkan anggapan bahwa OOP pasti akan mengorbankan performance. Memang bila dibandingkan dengan structural programming besar kemungkinan OOP tertinggal, namun dengan kemudahan pengembangan aplikasi menjadi nilai lebih bagi pengembangan dengan OOP. Yii yang namanya terisipirasi dari Wii yaitu game console revolusioner merupakan framework murni OOP dan hanya berjalan di PHP 5.1 keatas.<br />
Berikut merupakan beberapa fitur dari Yii:</p>
<ol>
<li>Menggunakan pola MVC, pola standar pengembangan aplikasi yang memisahkan tampilan, logic program, dan model.</li>
<li>Menggunakan database abstraction layer seperti Data Access Objects(DAO) dan Active Record untuk memudahkan interaksi dengan database.</li>
<li>Terintegrasi dengan JQuery Javascript Framework. Walaupun menggunakan JQuery sebagai internal javascript library, namun Yii dapat menggunakan library lainnya tanpa terjadi bentrok.</li>
<li>Mendukung Internationalization (I18N) and localization (L10N) untuk memudahkan pengembangan aplikasi dalam multi bahasa dan lokalisasi seperti penggunaan waktu dan tanggal.</li>
<li>Memiliki layer cache untuk cache data, halaman, sebagian, dan keseluruhan aplikasi sehingga dapat meningkatkan performance dengan beragam pilihan media cache. Penggunaan media cache seperti database, APC, memcache, dan sebagainya dengan mudah diatur tanpa melakukan perubahan besar pada kode.</li>
<li>Fitur penanganan error dan logging, sehingga memudahkan pengembang dalam melakukan debugging aplikasi dalam masa pengembangan aplikasi.</li>
<li>Penggunaan theme, memudahkan pengembang aplikasi dalam merancang tampilan aplikasi.</li>
<li>Console, penggunaan perintah pada console untuk melakukan beragam perintah otomatis seperti meng-generate struktur dasar aplikasi, model, crud, dan sebagainya.</li>
<li>Dukungan authentication dan authorization internal<strong> </strong>sehingga memudahkan pengembangan aplikasi dengan fitur autentikasi.</li>
<li>Widget, seperti pada Prado memiliki komponen pada Yii memiliki widget yaitu semacam kontrol yang memiliki fungsi tertentu seperti autocomplete, datapicker, table, dan lain-lain. Menggunakan JQuery sebagai javascript client sidenya.</li>
<li>Dukungan form input dan validasi. Memudahkan pengembang untuk bekerja dengan form pada aplikasi dan melakukan validasi input dari form.</li>
<li>Modular dan mudah ditambahkan dengan dukungan extensi dan komponen tambahan sehingga beragam fitur tambahan dengan mudah dimasukkan.</li>
</ol>
<p>Saat ini Yii masih dalam versi 1 alpha. Namun menurut pengembang framework ini sudah cukup stabil untuk digunakan dalam produksi. Namun karena framework ini masih baru sehingga penggunanya juga masih sangat sedikit. Namun melihat fitur, kemampuan dan merupakan turunan dari Prado saya tidak ragu untuk memulai menggunakan framework ini.</p>
<p>Reference</p>
<ul>
<li><a title="Prado Forum" href="http://www.pradosoft.com/forum/index.php/topic,11022.0.html" target="_blank">http://www.pradosoft.com/forum/index.php/topic,11022.0.html</a></li>
<li><a title="yii framework" href="http://www.yiiframework.com" target="_blank">http://www.yiiframework.com</a></li>
</ul>
<img src="http://www.thinkrooms.com/?ak_action=api_record_view&id=83&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.thinkrooms.com/2008/10/08/yii-framework-new-best-performance-php-framework/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Screen Scrapper, aplikasi sejenis web crawler untuk mengambil data dari website lain</title>
		<link>http://www.thinkrooms.com/2008/08/25/screen-scrapper-aplikasi-sejenis-web-crawler-untuk-mengambil-data-dari-website-lain/</link>
		<comments>http://www.thinkrooms.com/2008/08/25/screen-scrapper-aplikasi-sejenis-web-crawler-untuk-mengambil-data-dari-website-lain/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 13:38:45 +0000</pubDate>
		<dc:creator>tyohan</dc:creator>
				<category><![CDATA[Prado Framework]]></category>
		<category><![CDATA[Web Developer]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.thinkrooms.com/2008/08/25/screen-scrapper-aplikasi-sejenis-web-crawler-untuk-mengambil-data-dari-website-lain/</guid>
		<description><![CDATA[Saya lagi mengerjakan aplikasi torrent search engine dimana aplikasi ini akan melakukan pencarian ke beberapa torrent indexer pada saat user memberi input keyword torrent yang ingin di cari. Intinya aplikasi ini akan mengambil data dari website lain dan menyajikannya ke user langsung dari aplikasi tersebut.Saya ingin menceritakan beberapa konsep dari aplikasi ini dan class PHP [...]]]></description>
			<content:encoded><![CDATA[<p>Saya lagi mengerjakan aplikasi torrent search engine dimana aplikasi ini akan melakukan pencarian ke beberapa torrent indexer pada saat user memberi input keyword torrent yang ingin di cari. Intinya aplikasi ini akan mengambil data dari website lain dan menyajikannya ke user langsung dari aplikasi tersebut.<br />Saya ingin menceritakan beberapa konsep dari aplikasi ini dan class PHP yang saya gunakan untuk membantu fungsi scrapper pada aplikasi ini. Seperti aplikasi web yang selalu saya bangun dengan Prado maka aplikasi ini juga saya bangun dengan Prado. Prado sangat membantu saya fokus pada logic aplikasi, tidak perlu memusingkan masalah template, caching, dan sebagainya.<br />Konsep kerja dari aplikasi ini adalah sebagai berikut:
<ol>
<li>User memasukkan keyword pada form search di aplikasi</li>
<li>Sesuai dengan keyword user maka aplikasi meload halaman results untuk menampilkan hasil pencarian.</li>
<li>Pada halaman results aplikasi akan melakukan AJAX callback ke aplikasi untuk memanggil fungsi screen scrapper untuk mengambil data dari torrent site indexer. Dengan AJAX maka aplikasi dapat mensimulasikan multi threading pada aplikasi.</li>
<li>Aplikasi akan mengambil data sesuai keyword dari torrent indexer seperti mininova, btjungkie, isohunt, dan lain-lain dengan menggunakan class CURL. CURL adalah class PHP yang berfungsi seperti browser sehingga kita dapat mengambil output HTML dari suatu website.</li>
<li>Hasil pengambilan HTML output akan diparser dimana parser harus dibuat masing-masing untuk tiap website yang ingin diambil datanya. Parser menggunakan phpQuery yang merupakan class PHP yang dibangun diatas class DOM untuk mengakses HTML DOM pada hasil HTML output dari website yang diambil datanya.</li>
<li>Hasil parser akan menyimpan data di database untuk digabungkan dengan semua hasil parser dari tiap web yang diambil datanya. Selain itu hasil juga akan menjadi cache bila ada user memasukkan keyword yang sama dalam jangka waktu tertentu.</li>
<li>Setelah proses parser selesai, aplikasi akan melakukan pencarian ke dalam database yang telah di index dengan full-text indexing sehingga memudahkan pencarian.</li>
<li>Hasil pencarian di database ditampilkan kepada user pada halaman results.</li>
</ol>
<p>Jadi dalam aplikasi ini ada  3 class yang berperan penting yaitu CURL, phpQuery, dan DOM. CURL dan DOM merupakan extension default PHP5 sedangkan phpQuery merupakan class tambahan yang merupakan ported jQuery dari javascript ke PHP untuk manipulasi DOM. <br />Saya juga sempat melakukan perbandingan performance antara DOM, phpQuery, Simple HTML Parser, dan DOMXPath dan hasilnya adalah phpQuery lebih cepat dari lainnya. Selain lebih mudah melakukan parsing ternyata performancenya juga cukup baik. Hasil penelusuran saya juga menemukan bahwa untuk pengambilan content dari website lain lebih baik menggunakan CURL dari pada fungsi lainnya seperti fsockopen. Hal ini merupakan hasil test dari developer lain, dan saya tidak melakukan test langsung karena beberapa developer juga meng-amini hal ini.</p>
<p>Aplikasi semacam ini bisa digunakan untuk aplikasi lain seperti mengambil data kurs dari website bank, aggregator blog atau website berita, dan juga pembaca rss feed. Semua tergantung kreatifitas anda.</p>
<img src="http://www.thinkrooms.com/?ak_action=api_record_view&id=76&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.thinkrooms.com/2008/08/25/screen-scrapper-aplikasi-sejenis-web-crawler-untuk-mengambil-data-dari-website-lain/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Kolaborasi Web Designer, Programmer, dan Database Designer menggunakan Prado.</title>
		<link>http://www.thinkrooms.com/2007/11/19/kolaborasi-web-designer-programmer-dan-database-designer-menggunakan-prado/</link>
		<comments>http://www.thinkrooms.com/2007/11/19/kolaborasi-web-designer-programmer-dan-database-designer-menggunakan-prado/#comments</comments>
		<pubDate>Tue, 20 Nov 2007 02:02:06 +0000</pubDate>
		<dc:creator>tyohan</dc:creator>
				<category><![CDATA[IT Solution]]></category>
		<category><![CDATA[Prado Framework]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Developer]]></category>

		<guid isPermaLink="false">http://thinkrooms.com/2007/11/19/kolaborasi-web-designer-programmer-dan-database-designer-menggunakan-prado/</guid>
		<description><![CDATA[Sejak pembicaraan proyek dengan Mas Anton, salah satu pengguna Prado dari Indonesia saya ingin menulis bagaimana cara kolaborasi team antar Web Designer, Programmer, dan Database Designer. Di Indonesia orang masih memandang ketiga profesi di atas tidak berbeda jauh. Terkadang perusahaan atau pemberi proyek mencari profesional IT yang harus memiliki ketiga kemampuan diatas. Kenapa? Mereka ingin [...]]]></description>
			<content:encoded><![CDATA[<p>Sejak pembicaraan proyek dengan Mas Anton, salah satu pengguna Prado dari Indonesia saya ingin menulis bagaimana cara kolaborasi team antar Web Designer, Programmer, dan Database Designer. Di Indonesia orang masih memandang ketiga profesi di atas tidak berbeda jauh. Terkadang perusahaan atau pemberi proyek mencari profesional IT yang harus memiliki ketiga kemampuan diatas. Kenapa? Mereka ingin menghemat pengeluaran dengan membayar 1 orang untuk melakukan 3 pekerjaan diatas. Padahal untuk memperoleh hasil yang lebih maksimal maka pemisahan kerja wajib dilakukan. Hal ini akan memberi kesempatan pada profesional IT untuk lebih berkonsentrasi pada bidang yang lebih disukai.<span id="more-38"></span></p>
<p>Bank NISP salah satu perusahaan yang memperoleh hasil dari pengkategorian pekerjaan. Dengan cepat mereka berkembang dan menjadi salah satu Bank dengan perkembangan yang sangat pesat di Indonesia. Mereka bahkan membayar profesional IT yang kerjaannya cuman memikirkan ide bagus apa yang bisa diimplementasi di perusahaan mereka. Bukan untuk mengerjakan sesuatu. Hal ini membuat mereka dengan cepat melakukan update teknologi dalam perusahaan karena setiap bulan mereka memperoleh ide baru tentang update teknologi yang berkembang sangat cepat.</p>
<p>Saya rasa cukup gambaran pentingnya pembagian kerja yang baik, dan kenapa kerja team lebih baik daripada kerja individual. Di Prado pengembangan aplikasi web based sangat memungkinkan dilakukan pembagian kerja. Dengan sifat Prado yang memisahkan business logic dan presentation logic membuat kita dapat bekerja team langsung secara berbarengan. Seperti yang kita tahu bahwa alur pengembangan aplikasi adalah seperti berikut:</p>
<ol>
<li>Requirement (Project Manager)</li>
<li>Analisa (System Analyst)</li>
<li>Desain (System Analyst, Web Designer, Programmer, dan Database Designer)</li>
<li>Implementasi (Web Designer, Programmer, Database Designer)</li>
<li>Testing</li>
<li>Maintenance</li>
</ol>
<p>saya langsung membahas pada sisi implementasi yaitu pembuatan aplikasi berdasarkan hasil analisa dan desain. Berikut skenario kolaborasi menurut pemikiran saya:</p>
<ol>
<li>Karena dokumen desain telah ada, maka web designer, programmer, dan, database designer tidak perlu saling menunggu. Mereke dapat langsung memulai pekerjaan masing-masing berdasarkan desain yang telah ada. Bila ada perubahan maka bisa meminta System Analyst untuk melakukan perubahan.</li>
<li>Pembagian kerja dengan Prado adalah sebagai berikut:
<ul>
<li>Web Designer melakukan perancangan tampilan XHTML + CSS berdasarkan dokumen desain yang ada dan mempersiapkan layout component template Prado yaitu file TPL, dan PAGE.</li>
<li>Programmer membuat kode program berdasarkan business logic yang ada. Bila membutuhkan perubahan template maka bisa memberitahu pada web designer.</li>
<li>Database designer merancang dan membuat query SQL yang dibutuhkan programmer menggunakan feature Prado SQL MAP sehingga memudahkan programmer dalam menampilkan data yang diinginkan.</li>
</ul>
<p>Dari skenario di atas maka diagram kolaborasi bisa di gambarkan seperti berikut:</p>
<p align="center">SQLMAP    &lt;==========&gt; PHP   &lt;=========&gt; PAGE/TPL<br />
DB DESIGNER                PROGRAMMER          WEB DESIGNER</li>
</ol>
<p>Demikian skenario kolaborasi pengerjaan suatu aplikasi web menurut pemikiran saya. Skenario di atas adalah kolaborasi paling sederhana dan tidak menggunakan metode-metode pengembangan aplikasi seperti Agile, Extreme, USDP, RUP, Prototype, atau metode lainnya yang banyak kita peroleh di bangku kuliah. Improvisasi dan Kreatifitas diperlukan agar membuat metode sederhana diatas dapat berjalan dengan baik. Mohon maaf bila ada penggunaan bahasa yang tidak cocok atau tidak dapat dimengerti. Mohon saran dan kritik bila ada yang salah. Terima kasih.</p>
<img src="http://www.thinkrooms.com/?ak_action=api_record_view&id=38&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.thinkrooms.com/2007/11/19/kolaborasi-web-designer-programmer-dan-database-designer-menggunakan-prado/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tutorial Pembuatan Login Dengan Prado Framework</title>
		<link>http://www.thinkrooms.com/2007/11/16/tutorial-pembuatan-login-dengan-prado-framework/</link>
		<comments>http://www.thinkrooms.com/2007/11/16/tutorial-pembuatan-login-dengan-prado-framework/#comments</comments>
		<pubDate>Sat, 17 Nov 2007 04:30:21 +0000</pubDate>
		<dc:creator>tyohan</dc:creator>
				<category><![CDATA[Prado Framework]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Web Developer]]></category>

		<guid isPermaLink="false">http://thinkrooms.com/?p=37</guid>
		<description><![CDATA[Tutorial ini adalah cara authentikasi pada website dan mengatur hak akses per folder per level user. Contoh ini menggunakan kode program yang saya gunakan dalam aplikasi saya. Mudahan bisa membantu semuanya agar lebih mengerti cara pembuatan authentikasi atau sistem login pada website. Sebelum memulai coding di Prado berikut adalah requirement atau kebutuhan dari sistem yang [...]]]></description>
			<content:encoded><![CDATA[<p>Tutorial ini adalah cara authentikasi pada website dan mengatur hak akses per folder per level user. Contoh ini menggunakan kode program yang saya gunakan dalam aplikasi saya. Mudahan bisa membantu semuanya agar lebih mengerti cara pembuatan authentikasi atau sistem login pada website.<span id="more-37"></span></p>
<ol>
<li>Sebelum memulai coding di Prado berikut adalah requirement atau kebutuhan dari sistem yang harus dibuat atau dilakukan:
<ul>
<li>Sistem login menggunakan database MySQL. Pada database terdapat tabel user yang menyimpan data user yang boleh menggunakan sistem ini. Tabel user minimal memiliki 3 kolom yaitu username, password, dan level. Tabel user menggunakan usernamae sebagai primary key. Untuk kolom level memiliki 2 default yaitu member dan admin. Level adalah hak akses dimana user pada suatu level hanya dapat mengakses folder yang dibolehkan.</li>
<li>Pada file konfigurasi aplikasi Prado yaitu file application.xml masukkan module database, auth manager, dan user. Berikut contoh dari file application.xml pada aplikasi saya:
<pre>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;application id="Help Desk" mode="Debug"&gt;
&lt;paths&gt;
&lt;alias id="page" path="pages" /&gt;
&lt;using namespace="page.*" /&gt;
&lt;using namespace="Application.modules.*"/&gt;
&lt;using namespace="Application.database.*" /&gt;
&lt;using namespace="System.Web.UI.ActiveControls.*"/&gt;
&lt;/paths&gt;
&lt;!-- modules configured and loaded for all services --&gt;
&lt;modules&gt;
<span class="xml-hl-brackets">&lt;</span><span class="xml-hl-reserved">module</span><span class="xml-hl-code"> </span><span class="xml-hl-var">class</span><span class="xml-hl-code">=</span><span class="xml-hl-quotes">"</span><span class="xml-hl-string">System.Data.ActiveRecord.TActiveRecordConfig</span><span class="xml-hl-quotes">"</span><span class="xml-hl-code"> </span><span class="xml-hl-var">EnableCache</span><span class="xml-hl-code">=</span><span class="xml-hl-quotes">"</span><span class="xml-hl-string">true</span><span class="xml-hl-quotes">"</span><span class="xml-hl-brackets">&gt;</span><span class="xml-hl-code">
</span><span class="xml-hl-brackets">&lt;</span><span class="xml-hl-reserved">database</span><span class="xml-hl-code"> </span><span class="xml-hl-var">ConnectionString</span><span class="xml-hl-code">=</span><span class="xml-hl-quotes">"my</span><span class="xml-hl-string">sql:host=localhost;dbname=test</span><span class="xml-hl-quotes">"</span><span class="xml-hl-code">
</span><span class="xml-hl-var">Username</span><span class="xml-hl-code">=</span><span class="xml-hl-quotes">"</span><span class="xml-hl-string">dbuser</span><span class="xml-hl-quotes">"</span><span class="xml-hl-code"> </span><span class="xml-hl-var">Password</span><span class="xml-hl-code">=</span><span class="xml-hl-quotes">"</span><span class="xml-hl-string">dbpass</span><span class="xml-hl-quotes">"</span><span class="xml-hl-code"> </span><span class="xml-hl-brackets">/&gt;</span><span class="xml-hl-code">
</span><span class="xml-hl-brackets">&lt;/</span><span class="xml-hl-reserved">module</span><span class="xml-hl-brackets">&gt;</span><span class="xml-hl-code">
</span>&lt;module id="auth"
class="System.Security.TAuthManager"
UserManager="users"
LoginPage="login" /&gt;
&lt;module id="users"
class="System.Security.TDbUserManager"
UserClass="Application.dbuser" /&gt;
&lt;/modules&gt;
&lt;services&gt;
&lt;!-- page service --&gt;
&lt;service id="page" class="TPageService" BasePath="Application.pages" DefaultPage="home"&gt;
&lt;!-- modules configured and loaded when page service is requested --&gt;
&lt;pages MasterClass="Application.layouts.mainlayout"/&gt;
&lt;/service&gt;
&lt;/services&gt;
&lt;/application&gt;</pre>
<p>Pada contoh file diatas yang perlu diperhatikan adalah pada bagian module yang menyimpan settingan database dan authentikasi. Juga pada bagian path dimana terdapat settingan untuk untuk meload class active record pada folder database di folder protected aplikasi.</li>
<li>Pada folder database di dalam folder protected kita membuat file class UserRecord untuk menyimpan konfigurasi tabel user di database. Berikut adalah contoh dari file UserRecord:
<pre>const TABLE='user';public $username;public $password;public $level;

public static function finder($className=__CLASS__)

{

return parent::finder($className);

}

}

?&gt;</pre>
</li>
<li>File class dbuser yang akan menghandle login ke database yang diturunkan dari class TDbUserManager berikut contoh kode class dbuser
<pre>* User Class mengatur data user yang disimpan di session*/class dbUser extends TDbUser{public function createUser($username)

{

// Gunakan Active Record pada tabel user untuk mencari primary key

// username berdasarkan username yang di input

// fungsi ini dipanggil bila login berhasil atau fungsi validate user dibawahnya menghasilkan nilai true

$userRecord=UserRecord::finder()-&gt;findByPk($username);

if($userRecord instanceof UserRecord) // if found

{

$user=new dbUser($this-&gt;Manager);

$user-&gt;Name=$username;  // set username

$user-&gt;Roles=$userRecord-&gt;level; // set role berdasarkan kolom level pada database tabel user

$user-&gt;IsGuest=false;   // the user is not a guest

return $user;

}

else

return null;

}

/**

* Fungsi pengecekan apakah input username dan password valid

* Fungsi ini dipanggil dari halaman login

* parameter string username

* parameter string password

* mengembalikan nilai boolean true bila user valid.

*/

public function validateUser($username,$password)

{

// gunakan UserRecord Active Record untuk mengecek username dan password pada tabel user.

return UserRecord::finder()-&gt;find('username = ? AND password = ?', array($username, $password))!==null;

}

/**

* fungsi pengecekan level user adalah admin

*/

public function getIsAdmin()

{

return $this-&gt;isInRole('admin');

}

/**

* fungsi pengecekan level user adalah member

*/

public function getIsMember(){

return $this-&gt;isInRole('member');

}

}

?&gt;</pre>
<p>Simpan kode di atas ke file dbuser.php dan tempatkan pada folder sesuai settingan pada file application.xml. Dari contoh saya karena saya mengeset lokasi file class dbuser di application yaitu folder protected maka saya menyimpannya pada folder protected di folder aplikasi yang saya buat. Penyimpanan password pada contoh menggunakan clear text untuk memudahkan pengertian. Disarankan untuk menggunakan hash pada password seperti MD5, SHA1, atau tipe hash lainnya.</li>
<li>Folder member dan admin yang diletakkan didalam folder page aplikasi Prado. Di dalam folder member dan admin kita membuat file dengan nama config.xml. File ini untuk mengatur hak akses ke dalam folder tersebut.Contohnya pada folder admin saya membuat file config.xml dengan isi sebagai berikut: File di atas hanya membolehkan folder tersebut diakses oleh user dengan level admin. Untuk folder member kita bisa menggunakan kode yang sama dengan mengganti allow roles menjadi member.</li>
</ul>
</li>
<li>Setelah file konfigurasi, database, dan class dbuser telah selesai maka kita tinggal membuat halaman login. Pada contoh yang saya gunakan saya menggunakan komponen active control sehingga halaman login saya menggunakan AJAX untuk verifikasi login. Anda tinggal mengganti dengan komponen standar yang bukan active control bila tidak ingin menggunakan feature AJAX. Halaman login memerlukan 2 file yaitu file template dan file controller PHP. Berikut adalah contoh file template halaman login:
<pre>&lt;com:TContent ID="right"&gt;&lt;h3&gt;Login&lt;/h3&gt;&lt;p&gt;&lt;com:TLabel  ID="txtLoginStatus"/&gt; &lt;/p&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tr&gt;

&lt;td width="100px"&gt;User Name&lt;/td&gt;

&lt;td&gt;: &lt;com:TTextBox  ID="txtUser"/&gt;

&lt;com:TRequiredFieldValidator ControlToValidate="txtUser" ErrorMessage="Please provide your username." Display="Dynamic" /&gt;

&lt;/td&gt;

&lt;/tr&gt;

&lt;td&gt;Password&lt;/td&gt;

&lt;td&gt;: &lt;com:TTextBox ID="txtPass" TextMode="Password"/&gt;

&lt;/td&gt;

&lt;/table&gt;

&lt;com:TButton ID="btnLogin" OnCommand="checkLogin" Text="Login"/&gt;

&lt;/com:TContent&gt;</pre>
<p>Contoh diatas dengan asumsi bahwa pada file master template layout terdapat komponen TContentPlaceHolder dengan id right contohnya sebagai berikut:</p>
<pre class="code">&lt;com:tcontentplaceholder id="right"/&gt;</pre>
<p>Pada kode template diatas terdapat komponen validator yang mengharuskan user untuk mengisi textbox txtUser, bila tidak pada saat form di submit maka akan dimunculkan error bahwa textbox txtUser harus diisi. Bila tidak ada kesalahan maka pada saat button Login di klik maka akan memanggil function checkLogin pada file controller PHP.</li>
<li>Berikut merupakan contoh kode pada file controller PHP untuk memproses login:
<pre>
class login extends TPage{function checkLogin($sender,$param){

$authManager=$this-&gt;Application-&gt;getModule('auth'); //memanggil module auth atau class dbuser // mengecek username dan password dengan memanggil function login// yang akan menjalankan function validateUser pada class dbuser yang telah kita buat sebelumnya.

if($authManager-&gt;login($this-&gt;txtUser-&gt;Text,$this-&gt;txtPass-&gt;Text)) //if login success

//masukkan fungsi disini untuk menghandle status bila login sukses

if($this-&gt;user-&gt;isAdmin) //mengecek level user, bila admin maka di redirect ke halaman admin

$this-&gt;response-&gt;Redirect('index.php?page=admin.home');

else //bila bukan admin maka dianggap sebagai member dan di redirect ke halaman member

$this-&gt;response-&gt;Redirect('index.php?page=member.home');

else

$this-&gt;txtLoginStatus-&gt;Text="Login Fail"; //masukkan fungsi disini untuk menghandle status bila login gagal

}

public function onLoad($param){

parent::onLoad($param);

//Check apakah sesi user masih aktif bila iya arahkan ke folder sesuai level user

if(if($this-&gt;user-&gt;isMember)

this-&gt;response-&gt;Redirect('index.php?page=member.home');

else

$this-&gt;response-&gt;Redirect('index.php?page=admin.home');

}

}

?&gt;</pre>
<p>Contoh kode diatas akan memproses input username dan password dengan memanggil fungsi login yang juga menjalankan fungsi validateUser yang telah kita buat pada class dbUser. Bila sukses maka user akan didaftarkan pada session beserta level aksesnya kemudian akan diarahkan ke halaman yang telah ditentukan sesuai hak aksesnya.</li>
</ol>
<p>Itulah tutorial authentikasi pada Prado. Contoh diatas hanya contoh sederhana. Masih bisa ditambahkan atau di modifikasi sesuai kebutuhan. Semoga contoh ini bisa membantu dan memperkenalkan Prado pada para programmer web Indonesia. This is Prado Way..</p>
<img src="http://www.thinkrooms.com/?ak_action=api_record_view&id=37&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.thinkrooms.com/2007/11/16/tutorial-pembuatan-login-dengan-prado-framework/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Pengenalan Prado, PHP Component Framework</title>
		<link>http://www.thinkrooms.com/2007/11/16/pengenalan-prado-php-component-framework/</link>
		<comments>http://www.thinkrooms.com/2007/11/16/pengenalan-prado-php-component-framework/#comments</comments>
		<pubDate>Fri, 16 Nov 2007 06:19:37 +0000</pubDate>
		<dc:creator>tyohan</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Prado Framework]]></category>
		<category><![CDATA[Web Developer]]></category>

		<guid isPermaLink="false">http://thinkrooms.com/?p=36</guid>
		<description><![CDATA[Framework adalah sekumpulan library dan code program yang digunakan untuk memudahkan pengembangan aplikasi. Yang paling populer saat ini adalah .NET Framework yang digunakan untuk pengembangan aplikasi di platform Windows. Nah di PHP juga ada beberapa framework yang dapat memudahkan pengembangan website ataupun aplikasi web based. Beberapa framework tersebut adalah Prado, CakePHP, Symfony, Zend, dan banyak [...]]]></description>
			<content:encoded><![CDATA[<p>Framework adalah sekumpulan library dan code program yang digunakan untuk memudahkan pengembangan aplikasi. Yang paling populer saat ini adalah .NET Framework yang digunakan untuk pengembangan aplikasi di platform Windows. Nah di PHP juga ada beberapa framework yang dapat memudahkan pengembangan website ataupun aplikasi web based. Beberapa framework tersebut adalah <a href="http://www.pradosoft.com" title="Prado Framework" target="_blank">Prado</a>, <a href="http://www.cakephp.org" title="Cake PHP">CakePHP</a>, <a href="http://www.symfony-project.com" title="Symfony Framework" target="_blank">Symfony</a>, <a href="http://framework.zend.com" title="Zend Framework" target="_blank">Zend</a>, dan banyak lagi framework lainnya. Sebagian besar framework PHP menggunakan konsep MVC. Konsep ini memisahkan pengembangan menjadi 3 bagian yaitu pengembangan model/object, visual/design tampilan, dan controller /logika program. Selain framework PHP di dunia pengembangan web juga terdapat Ruby on Rails yang sangat populer. Menggunakan bahasa Ruby dan Rails sebagai frameworknya.</p>
<p>Saya hanya membahas Prado karena framework ini telah saya gunakan selama 1,5 tahun dalam pengembangan website. Framework lainnya hanya saya lihat dan baca reviewnya, untuk mencobanya masih belum tertarik. Prado merupakan framework untuk PHP dimana pengembangan aplikasi web dengan  Prado akan mengubah konsep dan alur kerja pengembangan website dari konsep tradisional PHP menjadi berbasis komponen dan event. Contoh paling simple yang menggunakan konsep yang sama adalah pengembagan website dengan ASP.NET atau pengembangan aplikasi desktop dengan Visual Basic dan Delphi. Jadi pengembangan website hampir sama dengan pengembangan aplikasi desktop.<span id="more-36"></span></p>
<p>Dokumentasi Prado sangatlah baik, mulai dari manual, dokumentasi class, wiki, contoh kode program, hingga step by step contoh pengembangan suatu aplikasi yaitu tutorial pembuatan blog. Semua itu tersedia melalui website Prado atau file Prado yang dapat didownload. Pada versi 3.1.1 tersedia dokumentasi dengan Bahasa Indonesia. Saya sendiri telah merasakan manfaat Prado. Saya telah menyelesaikan 3 aplikasi web, dan saya merasakan perbedaan waktu pengembangan yang jauh lebih cepat dibandingkan teknik pengembangan web tradisional. Coding juga jadi lebih baik, rapi, dan minim error karena kita tinggal menggunakan komponen yang ada. Bukan membuatnya dari awal.</p>
<p>Prado sangat mudah dipelajari, bahkan oleh orang yang tidak memiliki background PHP. Teman saya bahkan dapat membantu saya menyelesaikan satu aplikasi padahal dia tidak pernah mengembangkan aplikasi web. Dia cuma mengenal Visual Basic sebagai bahasa pemrograman dia. Tidak sampai 1 minggu di bisa mengerti bagaimana mengembangan aplikasi web dengan Prado. Tapi tentu saja background PHP sangat diperlukan bila tidak ingin kesulitan untuk penggunaan fungsi-fungsi tertentu di PHP.</p>
<p>Bila sudah menggunakan Prado terkadang pengembang mengalami kesulitan untuk fungsi tertentu. Dukungan komunitas Prado yang kuat melalui forum sangatlah membantu. Bahkan komunitas lokal seperti sub-forum Indonesia juga cukup aktif. Pertanyaan dengan cepat mendapat respon dari komunitas Prado Indonesia.</p>
<p>Teknologi yang digunakan Prado sangat mengikuti perkembangan web. Ajax, UI Component, SQL Data Mapper, Active Record, PDO, dan banyak lagi adalah teknologi yang ditanamkan kedalam Prado. Dan pengembang Prado dengan mudah menggunakan teknologi tersebut dengan cara Prado tanpa dipusingkan kode program dibalik teknologi tersebut. Itulah Prado, walaupun berbasis PHP tapi teknik pengembangan berbeda dengan PHP. It&#8217;s Prado Way not PHP Way. Untuk informasi yang lebih detail langsung aja ke website Prado di <a href="http://www.pradosoft.com" title="Prado Framework" target="_blank">http://www.pradosoft.com </a></p>
<img src="http://www.thinkrooms.com/?ak_action=api_record_view&id=36&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.thinkrooms.com/2007/11/16/pengenalan-prado-php-component-framework/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.373 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-07-31 04:51:15 -->
