Membuat Aplikasi PHP -Aman Chapter. 1
Vulnerabilities atau kelemahan keamanan pada aplikasi berbasis web menggunakan PHP merupakan issue yang tak habis-habisnya dibahas. Tulisan kali ini berisi tip dan trik membuat aplikasi PHP yang aman.
1. Perhatikan Register Global selalu dalam kondisi OFF.
Sebenarnya tidaklah selalu benar bahwa jika register global berkondisi on lantas aplikasi PHP yang dibuat tidak aman. Ini semua bergantung kepada bagaimana seorang programmer membuat script-nya.
Berikut contoh kelemahan keamanan yang disebabkan oleh kesalahan dalam penulisan script yang mengakibatkan penyerang dapat dengan mudah memanfaatkan register global berkondisi on.
PLAIN TEXT
PHP:
// lokasi script: http://localhost/login.php
// script login yang dipanggil dari sebuah form untuk masuk kedalam halaman Admin
// set variable $oke manjadi true jika autentifikasi sukses
if (authentifikasi($_POST['user'],$_POST['password']) {
$oke=true;
}
if ($oke) {
// masuk ke halaman admin
}
Sekilas kode script diatas adalah kode yang aman, tetapi sebenarnya sama sekali tidak dengan kondisi register global on. Mengapa? Halaman Admin bisa diakses oleh siapa pun tanpa proses authentifikasi melalui alamat http://localhost/login.php?oke=true.
Bagaimana memperbaiki script diatas? Anda cukup menambahkan inisialisasi diawal seperti berikut:
PLAIN TEXT
PHP:
// Inisialisasi variable $oke
$oke=false;
if (authentifikasi($_POST['user'],$_POST['password']) {
$oke=true;
}
atau
PLAIN TEXT
PHP:
if (authentifikasi($_POST['user'],$_POST['password']) {
$oke=true;
} else { // jika authentifikasi gagal, set variable $oke menjadi false
$oke=false;
}
Contoh script diatas adalah salah satu dari kelemahan keamanan yang disebabkan oleh register global berkondisi on. Di sisi lain, programmer juga harus turut menanggung dosa akibat teknik programmingnya yang membuka kesempatan penyerang untuk mengeksploitasi kelemahan keamanan.
Teknik lain untuk mengamankan aplikasi dari ancaman register global berkondisi on adalah menerapkan apa yang disebut security throuh obscurity (keamanan dengan teknik penyembunyian). Hanya saja, kelemahan keamanan akan segera ditemukan jika aplikasi dibuat menjadi aplikasi opensource, dimana calon penyerang dapat melihat sourcecode-nya secara langsung.
Jadi memang tidak benar 100% kalau kelemahan keamanan aplikasi PHP bermula dari register global berkondisi on. Ekploitasi kelemahan keamanan sistem hanya terjadi akibat kesalahan teknik dalam pembuatan program, dan karena aplikasi dibuat menjadi opensource yang memungkinkan calon penyerang melihat sourcecode nya secara langsung.
Terlepas dari semua itu, programmer haruslah memiliki security mind yang memadai dalam membuat aplikasi, apalagi jika memiliki niat untuk membuatnya menjadi aplikasi opensource. Tetapi programmer juga manusia yang tak luput dari kesalahan. Jadi 100% PHP tidak salah melakukan keputusan untuk membuat default register global berkondisi off sejak versi 4.2.0.
Friday, October 28, 2011
Membuat Aplikasi PHP - Aman chapter 2
Membuat Aplikasi PHP Yang Aman Bag. 2
Sambungan dari:
Membuat Aplikasi PHP Yang Aman Bag. 1
2. Pergunakan Anti SQL Injection
SQL Injection merupakan teknik menyusupkan perintah SQL kedalam query dengan cara memanipulasi input data pada sebuah aplikasi. Anda bisa membaca dan mempelajari bagaimana SQL injection dapat terjadi di SQL Injetion Attack by Example.
Bagaimana menanggulanginya? Berikut adalah fungsi Anti SQL Injection yang sering saya pergunakan.
PLAIN TEXT
PHP:
function anti_sql_injection( $input ) {
// daftarkan perintah-perintah SQL yang tidak boleh ada
// dalam query dimana SQL Injection mungkin dilakukan
$aforbidden = array (
"insert", "select", "update", "delete", "truncate",
"replace", "drop", " or ", ";", "#", "--", "=" );
// lakukan cek, input tidak mengandung perintah yang tidak boleh
$breturn=true;
foreach($aforbidden as $cforbidden) {
if(strripos($input, $cforbidden)) {
$breturn=false;
break;
}
}
return $breturn;
}
Cara memanfaatkan fungsi tersebut adalah sebagai berikut (contoh pada proses login dimana SQL injection kerap dilakukan)
PLAIN TEXT
PHP:
if(anti_sql_injection($_POST['user']) and
anti_sql_injection($_POST['password'])) {
// lakukan proses login
} else {
die();
}
Selain itu, SQL injection juga dapat dicegah dengan pengaturan priveleges pada database yang dipergunakan. Misalnya, bagian situs yang hanya berfungsi memperlihatkan data melalui query select menggunakan user dengan privelege select saja. Bagian situs yang berfungsi untuk memberi kesempatan pembaca untuk berkomentar menggunakan user dengan privelege insert saja dst.
3. Pergunakan session_regenerate_id() Untuk Pembuatan Session
Selintas penggunaan session adalah teknik yang aman untuk menjaga sebuah halaman agar tidak bisa dikunjungi oleh sembarang orang. Misalnya, pemanfaatan session untuk halaman administrasi sebuah situs. Namun, session pun memiliki titik kelemahan yang bisa dieksploitasi attacker dan dipergunakan sebagai senjata untuk menyerang sistem aplikasi.
Cara paling mudah untuk memanfaatkan session sebagai titik kelemahan sistem aplikasi adalah menggunakan metode fixation. Session faxation adalah metode dimana seorang attacker menyerang browser user sebelum login dilakukan. Yaitu dengan memasukkan id session untuk kemudian dimanfaatkan dengan tujuan tertentu.
Berikut adalah ilustrasi bagaimana session fixation dilakukan untuk menyerang keamanan sistem aplikasi berbasis web.
PLAIN TEXT
PHP:
session_start();
if($_SESSION['id_user']<>13) {
// Proses login (authentifikasi)
// Jika login sukses, jalankan perintah dibawah ini
$_SESSION['id_user']=13;
} else {
if($_SESSION['id_user']==13) {
// lakukan proses A
}
Script diatas adalah bagian dimana variable id_user (13) didaftarkan sebagai variable session JIKA pengunjung belum login dan login yang dilakukan sukses. Artinya, jika login pernah dilakukan maka halaman ini tidak akan melakukan proses login dan langsung melakukan proses A.
Langkah selanjutnya, pastikan bahwa browser yang digunakan bersih dari session sebelumnya. Lalu ketikan alamat script diatas dengan menambahkan PHPSESSID=1804.
Misalnya nama file script diatas adalah test.php dan diletakkan di server.com, maka yang harus Anda tuliskan adalah http://server.com/test.php?PHPSESSID=1804 dan lakukan login. Setelah itu, silakan Anda mencoba mengakses alamat tersebut diatas menggunakan browser lain atau komputer lain yang terhubung dengan server.com. Hasilnya, Anda akan melakukan proses A tanpa melakukan login!
Hal diatas terjadi akibat id session yang dipergunakan saat session dibentuk adalah sama dengan id session yang sebelumnya telah diketikkan secara "paksa" dalam URL. Untuk menanggulangi hal ini, diperlukan fungsi untuk meng-generate ulang id session yaitu dengan menggunakan fungsi session_regenerate_id() sehingga bagian script diatas menjadi seperti dibawah ini:
PLAIN TEXT
PHP:
session_start();
if($_SESSION['id_user']<>13) {
// Proses login (authentifikasi)
// Jika login sukses, jalankan perintah dibawah ini
session_regenerate_id();
$_SESSION['id_user']=13;
} else {
if($_SESSION['id_user']==13) {
// lakukan proses A
}
Secara default, penggunaan fungsi session_regenerate_id() tidak serta merta akan menghapus session sebelumnya secara otomatis. Agar session_regenerate_id() menghapus/menghancurkan session sebelumnya, Anda perlu menambahkan parameter boolean true pada fungsi tersebut. Sayangnya, parameter ini hanya bisa digunakan untuk PHP dengan versi 5.1.0 keatas.
Sambungan dari:
Membuat Aplikasi PHP Yang Aman Bag. 1
2. Pergunakan Anti SQL Injection
SQL Injection merupakan teknik menyusupkan perintah SQL kedalam query dengan cara memanipulasi input data pada sebuah aplikasi. Anda bisa membaca dan mempelajari bagaimana SQL injection dapat terjadi di SQL Injetion Attack by Example.
Bagaimana menanggulanginya? Berikut adalah fungsi Anti SQL Injection yang sering saya pergunakan.
PLAIN TEXT
PHP:
function anti_sql_injection( $input ) {
// daftarkan perintah-perintah SQL yang tidak boleh ada
// dalam query dimana SQL Injection mungkin dilakukan
$aforbidden = array (
"insert", "select", "update", "delete", "truncate",
"replace", "drop", " or ", ";", "#", "--", "=" );
// lakukan cek, input tidak mengandung perintah yang tidak boleh
$breturn=true;
foreach($aforbidden as $cforbidden) {
if(strripos($input, $cforbidden)) {
$breturn=false;
break;
}
}
return $breturn;
}
Cara memanfaatkan fungsi tersebut adalah sebagai berikut (contoh pada proses login dimana SQL injection kerap dilakukan)
PLAIN TEXT
PHP:
if(anti_sql_injection($_POST['user']) and
anti_sql_injection($_POST['password'])) {
// lakukan proses login
} else {
die();
}
Selain itu, SQL injection juga dapat dicegah dengan pengaturan priveleges pada database yang dipergunakan. Misalnya, bagian situs yang hanya berfungsi memperlihatkan data melalui query select menggunakan user dengan privelege select saja. Bagian situs yang berfungsi untuk memberi kesempatan pembaca untuk berkomentar menggunakan user dengan privelege insert saja dst.
3. Pergunakan session_regenerate_id() Untuk Pembuatan Session
Selintas penggunaan session adalah teknik yang aman untuk menjaga sebuah halaman agar tidak bisa dikunjungi oleh sembarang orang. Misalnya, pemanfaatan session untuk halaman administrasi sebuah situs. Namun, session pun memiliki titik kelemahan yang bisa dieksploitasi attacker dan dipergunakan sebagai senjata untuk menyerang sistem aplikasi.
Cara paling mudah untuk memanfaatkan session sebagai titik kelemahan sistem aplikasi adalah menggunakan metode fixation. Session faxation adalah metode dimana seorang attacker menyerang browser user sebelum login dilakukan. Yaitu dengan memasukkan id session untuk kemudian dimanfaatkan dengan tujuan tertentu.
Berikut adalah ilustrasi bagaimana session fixation dilakukan untuk menyerang keamanan sistem aplikasi berbasis web.
PLAIN TEXT
PHP:
session_start();
if($_SESSION['id_user']<>13) {
// Proses login (authentifikasi)
// Jika login sukses, jalankan perintah dibawah ini
$_SESSION['id_user']=13;
} else {
if($_SESSION['id_user']==13) {
// lakukan proses A
}
Script diatas adalah bagian dimana variable id_user (13) didaftarkan sebagai variable session JIKA pengunjung belum login dan login yang dilakukan sukses. Artinya, jika login pernah dilakukan maka halaman ini tidak akan melakukan proses login dan langsung melakukan proses A.
Langkah selanjutnya, pastikan bahwa browser yang digunakan bersih dari session sebelumnya. Lalu ketikan alamat script diatas dengan menambahkan PHPSESSID=1804.
Misalnya nama file script diatas adalah test.php dan diletakkan di server.com, maka yang harus Anda tuliskan adalah http://server.com/test.php?PHPSESSID=1804 dan lakukan login. Setelah itu, silakan Anda mencoba mengakses alamat tersebut diatas menggunakan browser lain atau komputer lain yang terhubung dengan server.com. Hasilnya, Anda akan melakukan proses A tanpa melakukan login!
Hal diatas terjadi akibat id session yang dipergunakan saat session dibentuk adalah sama dengan id session yang sebelumnya telah diketikkan secara "paksa" dalam URL. Untuk menanggulangi hal ini, diperlukan fungsi untuk meng-generate ulang id session yaitu dengan menggunakan fungsi session_regenerate_id() sehingga bagian script diatas menjadi seperti dibawah ini:
PLAIN TEXT
PHP:
session_start();
if($_SESSION['id_user']<>13) {
// Proses login (authentifikasi)
// Jika login sukses, jalankan perintah dibawah ini
session_regenerate_id();
$_SESSION['id_user']=13;
} else {
if($_SESSION['id_user']==13) {
// lakukan proses A
}
Secara default, penggunaan fungsi session_regenerate_id() tidak serta merta akan menghapus session sebelumnya secara otomatis. Agar session_regenerate_id() menghapus/menghancurkan session sebelumnya, Anda perlu menambahkan parameter boolean true pada fungsi tersebut. Sayangnya, parameter ini hanya bisa digunakan untuk PHP dengan versi 5.1.0 keatas.
Panduan Belajar PHP
Panduan Belajar PHP
frm : tetangga sebelah
Bermula dari pertanyaan seseorang mengenai bagaimana belajar PHP, maka saya tuliskan beberapa langkah dibawah ini sebagai panduan untuk mempelajari PHP. Semoga bermanfaat.
Catatan: database yang digunakan adalah MySQL.
PHP sebagai server side scripting secara umum digunakan untuk membuat situs dinamis atau aplikasi berbasis web. Jadi langkah awal untuk mempelajari PHP adalah menguasai HTML terlebih dahulu. Tanpa penguasaan HTML dasar, rasanya PHP kurang bermanfaat untuk dipelajari.Links untuk belajar HTML
http://www.w3schools.com/html/default.asp
http://www.html.net/tutorials/html/
http://www.w3.org/TR/1998/REC-html40-19980424/
PHP adalah bahasa pemrograman, artinya untuk menguasai PHP haruslah mengerti algoritma. Minimal yang harus diketahui untuk hal ini adalah apa dan bagaimana menggunakan variable, kondisi atau pencabangan, perulangan dan sub-rutin untuk menyelesaikan suatu masalah. Saat ini sudah banyak buku yang membahas mengenai algoritma dan pemrograman, silakan cari dan pilih sendiri.
Install Apache, PHP dan MySQL pada PC Anda. Saya menyarankan untuk tidak menggunakan installer yang instant (seperti PHPTriad, Wampserver, e-novative dsb), tetapi lebih baik belajar dan mencoba menginstallnya satu demi satu diawali dari Apache, lalu PHP dan MySQL.Link panduan menginstal Apache, PHP dan MySQL
PHP4 http://www.php-mysql-tutorial.com/install-apache-php-mysql.php
PHP5 http://www.webmasterstop.com/86.html
Setelah langkah 1 & 2 sudah dipelajari dan sudah dimengerti (meskipun hanya sedikit) dan langkah 3 sudah bisa Anda lalui. Langkah berikutnya adalah mempelajari sintaks-sintaks dari PHP dan Anda wajib memiliki atau mendownload file Help PHP.Link untuk belajar PHP
http://www.w3schools.com/php/default.asp
Coba untuk membuat form isian sederhana menggunakan PHP beserta HTML yang telah dikuasai. Lalu, tambahkan fitur validasi untuk beberapa atau semua data sehingga tidak boleh kosong saat submit ditekan.Links Tutorial membuat form
http://www.tizag.com/phpT/forms.php
http://www.htmlcenter.com/tutorials/tutorials.cfm/149/PHP/
Pelajari juga teknik session dan atau cookies. Ini penting dan sangat sering digunakan dalam pembuatan situs dinamis atau aplikasi berbasi web. Pada langkah ini, minimal Anda bisa membuat halaman login dengan user dan password yang masih ditulis secara hardcode dalam script.Links tutorial session dan cookies
http://www.phptutorial.info/learn/session.php
http://www.freewebmasterhelp.com/tutorials/cookies
Langkah berikutnya adalah mempelajar seluk beluk mengenai database seperti apa itu database, table, record, field dsb. Download dan pergunakan phpMyAdmin untuk mencoba membuat database, table dan field-fieldnya.
Pelajari SQL khusus untuk empat perintah dasar yaitu SELECT, INSERT, UPDATE dan DELETE. Perintah SELECT adalah perintah SQL yang paling kompleks karena meliputi klausa JOIN (INNER/OUTER), WHERE, GROUP BY, HAVING, ORDER BY dan LIMIT (limit adalah klausa yang diperkenalkan MySQL).Link tutorial SQL
http://www.w3schools.com/sql/default.asp
http://www.webdevelopersnotes.com/tutorials/sql/index.php3
Setelah perintah SQL bisa Anda mengerti (syukur-syukur menguasai), maka pelajari bagaimana PHP berinteraksi dengan MySQL. Pada langkah ini, Anda diharuskan menguasai fungsi-fungsi wajib sehubungan dengan MySQL, yaitu mysql_connect_db, mysql_select_db, mysql_query dan mysql_fetch_object / mysql_fetch_array.Download Help MySQL.
Sampai disini, coba untuk membuat script sederhana untuk input data menggunakan form. Data yang diinput melalui form disimpan dalam database (INSERT). Lalu buat juga script untuk menampilkan data-data yang telah tersimpan dalam database (SELECT). Selanjutnya, buat fasilitas untuk mmenghapus (DELETE) dan mengedit data (UPDATE).
Coba membuat halaman login dimana user dan passwordnya dibaca dari database
Coba gabungkan karya nomor 10 dan 11 sehingga hanya mereka yang login saja yang bisa menghapus/mengedit data.
Sampai disini, Anda bisa dikatakan sudah sampai pada tahap beginner. Selanjutnya banyak-banyaklah bereksperimen dengan membuat proyek-proyek kecil minimal untuk kesenangan Anda sendiri. Saat Anda mengerjakan proyek, disanalah pelajaran demi pelajaran bisa Anda dapat dari berbagai masalah yang muncul.
Selanjutnya, Anda harus mulai mempelajari masalah security seperti masalah Code/SQL Injection, session hijacking, session fixation, teknik enkripsi dsb.
Sempatkan untuk belajar Javascript saat Anda merasa kemampuan PHP yang dimiliki sudah lumayan. Kelemahan dari script PHP adalah tidak dimungkinkannya interaksi pengguna secara on the fly. Nah, kekurangannya inilah yang di “tambal” menggunakan Javascript. Syukur-syukur Anda bisa menguasai AJAX.Link tutorial Javascript
http://www.w3schools.com/js/default.asp
Sempatkan pula untuk mempelajari CSS. Ini penting untuk membuat tampilan/interface situs atau web-based application secara lebih baik.Link tutorial CSS:
http://www.w3schools.com/css/default.asp
Terakhir. Karena PHP lebih banyak hidup di OS Linux, pelajari juga linux barang sedikit. Syukur-syukur kalo Anda ternyata sejak awal belajar di linux
TIPS:
Jangan terlalu memaksakan untuk menghapalkan fungsi, sintaks dari PHP atau MySQL. Manfaatkan file HELP dalam praktek dan latihan. Semakin Anda sering praktek dan melatih diri, maka fungsi dan sintaks yang sering dipakai akan bisa Anda hapal dengan sendirinya.
Jangan terlalu cepat untuk mengambil keputusan untuk bertanya terhadap masalah atau kesulitan yang timbul. Bertanyalah setelah Anda mencoba terlebih dahulu.
Rajin-rajin mengikuti milis atau forum dan selalu ingat, diatas langit ada langit ;)
frm : tetangga sebelah
Bermula dari pertanyaan seseorang mengenai bagaimana belajar PHP, maka saya tuliskan beberapa langkah dibawah ini sebagai panduan untuk mempelajari PHP. Semoga bermanfaat.
Catatan: database yang digunakan adalah MySQL.
PHP sebagai server side scripting secara umum digunakan untuk membuat situs dinamis atau aplikasi berbasis web. Jadi langkah awal untuk mempelajari PHP adalah menguasai HTML terlebih dahulu. Tanpa penguasaan HTML dasar, rasanya PHP kurang bermanfaat untuk dipelajari.Links untuk belajar HTML
http://www.w3schools.com/html/default.asp
http://www.html.net/tutorials/html/
http://www.w3.org/TR/1998/REC-html40-19980424/
PHP adalah bahasa pemrograman, artinya untuk menguasai PHP haruslah mengerti algoritma. Minimal yang harus diketahui untuk hal ini adalah apa dan bagaimana menggunakan variable, kondisi atau pencabangan, perulangan dan sub-rutin untuk menyelesaikan suatu masalah. Saat ini sudah banyak buku yang membahas mengenai algoritma dan pemrograman, silakan cari dan pilih sendiri.
Install Apache, PHP dan MySQL pada PC Anda. Saya menyarankan untuk tidak menggunakan installer yang instant (seperti PHPTriad, Wampserver, e-novative dsb), tetapi lebih baik belajar dan mencoba menginstallnya satu demi satu diawali dari Apache, lalu PHP dan MySQL.Link panduan menginstal Apache, PHP dan MySQL
PHP4 http://www.php-mysql-tutorial.com/install-apache-php-mysql.php
PHP5 http://www.webmasterstop.com/86.html
Setelah langkah 1 & 2 sudah dipelajari dan sudah dimengerti (meskipun hanya sedikit) dan langkah 3 sudah bisa Anda lalui. Langkah berikutnya adalah mempelajari sintaks-sintaks dari PHP dan Anda wajib memiliki atau mendownload file Help PHP.Link untuk belajar PHP
http://www.w3schools.com/php/default.asp
Coba untuk membuat form isian sederhana menggunakan PHP beserta HTML yang telah dikuasai. Lalu, tambahkan fitur validasi untuk beberapa atau semua data sehingga tidak boleh kosong saat submit ditekan.Links Tutorial membuat form
http://www.tizag.com/phpT/forms.php
http://www.htmlcenter.com/tutorials/tutorials.cfm/149/PHP/
Pelajari juga teknik session dan atau cookies. Ini penting dan sangat sering digunakan dalam pembuatan situs dinamis atau aplikasi berbasi web. Pada langkah ini, minimal Anda bisa membuat halaman login dengan user dan password yang masih ditulis secara hardcode dalam script.Links tutorial session dan cookies
http://www.phptutorial.info/learn/session.php
http://www.freewebmasterhelp.com/tutorials/cookies
Langkah berikutnya adalah mempelajar seluk beluk mengenai database seperti apa itu database, table, record, field dsb. Download dan pergunakan phpMyAdmin untuk mencoba membuat database, table dan field-fieldnya.
Pelajari SQL khusus untuk empat perintah dasar yaitu SELECT, INSERT, UPDATE dan DELETE. Perintah SELECT adalah perintah SQL yang paling kompleks karena meliputi klausa JOIN (INNER/OUTER), WHERE, GROUP BY, HAVING, ORDER BY dan LIMIT (limit adalah klausa yang diperkenalkan MySQL).Link tutorial SQL
http://www.w3schools.com/sql/default.asp
http://www.webdevelopersnotes.com/tutorials/sql/index.php3
Setelah perintah SQL bisa Anda mengerti (syukur-syukur menguasai), maka pelajari bagaimana PHP berinteraksi dengan MySQL. Pada langkah ini, Anda diharuskan menguasai fungsi-fungsi wajib sehubungan dengan MySQL, yaitu mysql_connect_db, mysql_select_db, mysql_query dan mysql_fetch_object / mysql_fetch_array.Download Help MySQL.
Sampai disini, coba untuk membuat script sederhana untuk input data menggunakan form. Data yang diinput melalui form disimpan dalam database (INSERT). Lalu buat juga script untuk menampilkan data-data yang telah tersimpan dalam database (SELECT). Selanjutnya, buat fasilitas untuk mmenghapus (DELETE) dan mengedit data (UPDATE).
Coba membuat halaman login dimana user dan passwordnya dibaca dari database
Coba gabungkan karya nomor 10 dan 11 sehingga hanya mereka yang login saja yang bisa menghapus/mengedit data.
Sampai disini, Anda bisa dikatakan sudah sampai pada tahap beginner. Selanjutnya banyak-banyaklah bereksperimen dengan membuat proyek-proyek kecil minimal untuk kesenangan Anda sendiri. Saat Anda mengerjakan proyek, disanalah pelajaran demi pelajaran bisa Anda dapat dari berbagai masalah yang muncul.
Selanjutnya, Anda harus mulai mempelajari masalah security seperti masalah Code/SQL Injection, session hijacking, session fixation, teknik enkripsi dsb.
Sempatkan untuk belajar Javascript saat Anda merasa kemampuan PHP yang dimiliki sudah lumayan. Kelemahan dari script PHP adalah tidak dimungkinkannya interaksi pengguna secara on the fly. Nah, kekurangannya inilah yang di “tambal” menggunakan Javascript. Syukur-syukur Anda bisa menguasai AJAX.Link tutorial Javascript
http://www.w3schools.com/js/default.asp
Sempatkan pula untuk mempelajari CSS. Ini penting untuk membuat tampilan/interface situs atau web-based application secara lebih baik.Link tutorial CSS:
http://www.w3schools.com/css/default.asp
Terakhir. Karena PHP lebih banyak hidup di OS Linux, pelajari juga linux barang sedikit. Syukur-syukur kalo Anda ternyata sejak awal belajar di linux
TIPS:
Jangan terlalu memaksakan untuk menghapalkan fungsi, sintaks dari PHP atau MySQL. Manfaatkan file HELP dalam praktek dan latihan. Semakin Anda sering praktek dan melatih diri, maka fungsi dan sintaks yang sering dipakai akan bisa Anda hapal dengan sendirinya.
Jangan terlalu cepat untuk mengambil keputusan untuk bertanya terhadap masalah atau kesulitan yang timbul. Bertanyalah setelah Anda mencoba terlebih dahulu.
Rajin-rajin mengikuti milis atau forum dan selalu ingat, diatas langit ada langit ;)
Friday, October 21, 2011
window FullScreen dalam Java
Puter – puter cari sana-sini akhirnya ketemu juga. Ketemu apa, ketemu tentang cara membuat sebuah window FullScreen dalam Java. Gini caranya, mudah – mudahan bermanfaat…
Dalam paket java.awt terdapat sebuah class GraphicsDevice yang berhubungan dengan Screen atau tampilan yang ada dilayar, salah satunya adalah FullScreen. GraphicsDevice bukanlah sebuah class yang dapat secara instan dibuat. Maksudnya apa yach, maksudnya kita gak bisa mendeklarasikan variabel GraphicsDevice seperti ini :
// source code
GraphicsDevice device = new GraphicsDevice();
// end source code
Itu adalah suatu kesalahan, karena memang dari sononya “GraphicsDevice” gak bisa dideklarasikan secara instan, untuk mendeklarasikan variabel GraphicsDevice kita perlu bantuan class “GraphicsEnvironment” yang ada dalam paket “java.awt”. Jadi untuk mendeklarasikan variabel “GraphicsDevice”, kita perlu memanggil sebuah metode static milik GE, yaitu “getDefaultScreenDevice()”, tapi sama halnya GD, variabel GE pun tak bisa langsung dideklarasikan secara instan, harus menggunakan metode static milik GE itu sendiri yaitu “getLocalGraphicsEnvironment()”, jadi untuk mendeklarasikannya harus seperti ini :
// source code
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = env.getDefaultScreenDevice();
// end source code
Dan untuk membuat sebuah window dan turunannya (misalnya Frame, JFrame, Dialog) ditampilkan secara FullScreen maka bisa menggunakan metode “setFullScreenWindow(Window namaWindow)” milik “GraphicsDevice”. Jadi misalnya kita mau membuat sebuah JFrame ditampilkan menjadi FullScreen maka harus seperti ini :
// source code
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = env.getDefaultScreenDevice();
JFrame frame = new JFrame(“JUDUL”);
device.setFullScreenWindow(frame);
// end source code
Maka frame akan ditampilkan secara FullScreen, mamun sayangnya bar title akan tetap tampil, jadi untuk menghilangkan bar title, gunakan metode “setUndecorated(boolean set)” milik JFrame, dengan memberi nilai “false”. Sehingga menjadi seperti ini :
// source codeGraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = env.getDefaultScreenDevice();
JFrame frame = new JFrame(“JUDUL”);
frame.setUndecorated(true);
device.setFullScreenWindow(frame);
// end source code
Namun tampilnya window secara FullScreen tergantung pada supportnya platform yang kita gunakan dalam menampilkan sebuah program FullScreen, sehingga untuk mengetahui apakah platform kita mensuport FullScreen gunakanlah metode “isFullScreenSupported()” milik GD, yang akan membawa nilai “true” jika platform mensupport FullScreen, dan “false” jika platform tidak mensupport FullScreen. Sehingga akan lebih baik jika source kodenya kita tambah seperti ini :
// source codeGraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = env.getDefaultScreenDevice();
JFrame frame = new JFrame(“JUDUL”);
frame.setUndecorated(true);
if(device.isFullScreenSupported()) {
device.setFullScreenWindow(frame);
}
// end source code
Ini adalah contoh JFrame yang ditampilkan secara FullScreen :
/**
* FullScreenApp.java
*
* copyright 2007
*/
package wordpress.echo;
import java.awt.BorderLayout;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;
/**
* Membuat aplikasi fullscreen
*
* @author echo
*
*/
@SuppressWarnings(“serial”)
public class FullScreenApp extends javax.swing.JFrame {
private JLabel jLabel1;
/**
* Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
FullScreenApp inst = new FullScreenApp();
inst.setLocationRelativeTo(null);
// membuat frame menjadi fullscreen
GraphicsDevice device = GraphicsEnvironment
.getLocalGraphicsEnvironment().getDefaultScreenDevice();
if(device.isFullScreenSupported()) {
device.setFullScreenWindow(inst);
}
inst.setVisible(true);
}
});
}
/**
* Default constructor
*/
public FullScreenApp() {
super();
initGUI();
}
/**
* Deklarasi komponen GUI
*/
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
BorderLayout thisLayout = new BorderLayout();
getContentPane().setLayout(thisLayout);
super.setUndecorated(true);
this.setTitle(“Full Screen App”);
{
jLabel1 = new JLabel(“” +
“CONTOH APLIKASI FULLSCREEN” +
“
” +
“by ” +
“”
);
getContentPane().add(jLabel1, BorderLayout.CENTER);
jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
}
pack();
this.setSize(416, 332);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Sebelum FullScreen :
Dalam paket java.awt terdapat sebuah class GraphicsDevice yang berhubungan dengan Screen atau tampilan yang ada dilayar, salah satunya adalah FullScreen. GraphicsDevice bukanlah sebuah class yang dapat secara instan dibuat. Maksudnya apa yach, maksudnya kita gak bisa mendeklarasikan variabel GraphicsDevice seperti ini :
// source code
GraphicsDevice device = new GraphicsDevice();
// end source code
Itu adalah suatu kesalahan, karena memang dari sononya “GraphicsDevice” gak bisa dideklarasikan secara instan, untuk mendeklarasikan variabel GraphicsDevice kita perlu bantuan class “GraphicsEnvironment” yang ada dalam paket “java.awt”. Jadi untuk mendeklarasikan variabel “GraphicsDevice”, kita perlu memanggil sebuah metode static milik GE, yaitu “getDefaultScreenDevice()”, tapi sama halnya GD, variabel GE pun tak bisa langsung dideklarasikan secara instan, harus menggunakan metode static milik GE itu sendiri yaitu “getLocalGraphicsEnvironment()”, jadi untuk mendeklarasikannya harus seperti ini :
// source code
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = env.getDefaultScreenDevice();
// end source code
Dan untuk membuat sebuah window dan turunannya (misalnya Frame, JFrame, Dialog) ditampilkan secara FullScreen maka bisa menggunakan metode “setFullScreenWindow(Window namaWindow)” milik “GraphicsDevice”. Jadi misalnya kita mau membuat sebuah JFrame ditampilkan menjadi FullScreen maka harus seperti ini :
// source code
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = env.getDefaultScreenDevice();
JFrame frame = new JFrame(“JUDUL”);
device.setFullScreenWindow(frame);
// end source code
Maka frame akan ditampilkan secara FullScreen, mamun sayangnya bar title akan tetap tampil, jadi untuk menghilangkan bar title, gunakan metode “setUndecorated(boolean set)” milik JFrame, dengan memberi nilai “false”. Sehingga menjadi seperti ini :
// source codeGraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = env.getDefaultScreenDevice();
JFrame frame = new JFrame(“JUDUL”);
frame.setUndecorated(true);
device.setFullScreenWindow(frame);
// end source code
Namun tampilnya window secara FullScreen tergantung pada supportnya platform yang kita gunakan dalam menampilkan sebuah program FullScreen, sehingga untuk mengetahui apakah platform kita mensuport FullScreen gunakanlah metode “isFullScreenSupported()” milik GD, yang akan membawa nilai “true” jika platform mensupport FullScreen, dan “false” jika platform tidak mensupport FullScreen. Sehingga akan lebih baik jika source kodenya kita tambah seperti ini :
// source codeGraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = env.getDefaultScreenDevice();
JFrame frame = new JFrame(“JUDUL”);
frame.setUndecorated(true);
if(device.isFullScreenSupported()) {
device.setFullScreenWindow(frame);
}
// end source code
Ini adalah contoh JFrame yang ditampilkan secara FullScreen :
/**
* FullScreenApp.java
*
* copyright 2007
*/
package wordpress.echo;
import java.awt.BorderLayout;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;
/**
* Membuat aplikasi fullscreen
*
* @author echo
*
*/
@SuppressWarnings(“serial”)
public class FullScreenApp extends javax.swing.JFrame {
private JLabel jLabel1;
/**
* Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
FullScreenApp inst = new FullScreenApp();
inst.setLocationRelativeTo(null);
// membuat frame menjadi fullscreen
GraphicsDevice device = GraphicsEnvironment
.getLocalGraphicsEnvironment().getDefaultScreenDevice();
if(device.isFullScreenSupported()) {
device.setFullScreenWindow(inst);
}
inst.setVisible(true);
}
});
}
/**
* Default constructor
*/
public FullScreenApp() {
super();
initGUI();
}
/**
* Deklarasi komponen GUI
*/
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
BorderLayout thisLayout = new BorderLayout();
getContentPane().setLayout(thisLayout);
super.setUndecorated(true);
this.setTitle(“Full Screen App”);
{
jLabel1 = new JLabel(“” +
“CONTOH APLIKASI FULLSCREEN” +
“
” +
“by ” +
“”
);
getContentPane().add(jLabel1, BorderLayout.CENTER);
jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
}
pack();
this.setSize(416, 332);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Sebelum FullScreen :
Free Download SMS Gateway Source Code With Java
Free Download SMS Gateway Source Code With Java
Pada posting sebelumnya kita sudah sama-sama belajar cara mengetahui handphone yang support sms gateway, bagi yang belum membacanya silahkan baca dulu. Tapi jika Anda menggunakan handphone siemens c55 sudah dapat dipastikan Handphone ini support SMS Gateway, saya juga pernah menggunakan handphone nokia type 6610, nokia type ini juga support, bagi yang menggunakan handphone selain di atas, silahkan dicek dulu menggunakan AT Command.
Bagi yang ingin membuat program SMS Gateway seperti program ramalan SMS Gratis, teman-teman bisa mengubah programnya sesuai kebutuhan, tinggal ganti function saja. Kita bisa mengubahnya untuk keperluan sms gateway perusahaan, sms gateway akademik, atau apapun. Kodenya dapat di download disini:
1. SMS Gateway source code plus Database (14.72 KB)
http://www.ziddu.com/download/4228080/SourceCodeandDatabase.zip.html
2. COMMAPI.ZIP (991.67 KB)
http://www.ziddu.com/download/4228009/commapi.zip.html
3. MySql Connector (268.37 KB)
http://www.ziddu.com/download/4228047/com.zip.html
Setelah semua file di download, langkah selanjutnya adalah :
1. Install java
Jika teman-teman belum punya installer java silahkan download di www.java.com/getjava/ atau semuanya free, karena java adalah program open source dibawah naungan sun microsystem.
2. Install Java Editor
Sebenarnya kita juga bisa menggunakan notepad, tapi akan lebih baik kalo kita menggunakan java editor seperti JCreator Pro atau NetBean. Saya menggunakan JCreator Pro, free download installer JCreator Pro disini alamat www.jcreator.com/download.htm
3. Install MySql
Untuk mengolah database, install MySql. MySql juga bersifat Open Source dan gratis. Kalau belum punya silahkan download MySql Installer di sini dev.mysql.com/downloads/.
4. Install Editor MySql (ex: MySQL Front)
Sebenarnya kita bisa menggunakan PHP Admin atau menjalankannya under dos, tapi akan lebih mudah kalau kita menggunakan MySQl Editor seperti MySql Front atau Editor lainnya. Bagi yang belum punya silahkan download intaller MySql front freeware / free edition di alamat ini http://www.sharewareconnection.com/download-dreamcoder-for-mysql-free-edition-from-sharecon.html
Untuk cara intalasi java, jcreator, mysql, mysql front, tinggal klik Next and Next, Then Finish, mudah kan.
Kalau semua sudah diinstall, langkah selanjutnya adalah installasi program SMS Gateway. Pastikan handphone teman-teman sudah terhubung ke komputer. Langkah-langkah selanjutnya:
1. Ekstrak File smsgatewaysourcodeanddatabase.zip, akan terdapat 2 file, yakni ramalSMS.java dan ramalan.sql
2. Double click di ramalan.sql, lalu tekan tombol OK, lalu tekan tombol F9, maka database ramalan dan semua isinya akan masuk di database di komputer teman-teman.
3. Extract File Commapi. Jar lalu cari file-file dibawah ini lalu copy dan paste dilokasi yang sesuai.
Comm.jar diletakkan di installan/jre/lib/ext
javax.comm.properties diletakkan di installan/JRE/lib
win32com.dll diletakkan di installan/jre/bin
4. Extract Com.zip, akan terdapat satu folder com, lalu letakkan folder com tsb satu folder dengan file ramalSMS.java
5. Buka JCreator, pilih Open file ramalSMS.java, pilih tab Build lalu pilih Compile File, langkah terakhir pilih tab Build lalu pilih Execute File. Maka akan muncul msdos:
a. Tekan angka 1 untuk memulai server sms gateway
b. Masukkan port yang sesuai dengan port hanphone (Pilihan 1 - 10)
c. Masukkan nilai baut yang ingin anda gunakan (1 - 10)
d. Selesai, anda tinggal SMS dengan format yang sesuai (CINTA TGLLHR, KARIR TGLLHR dan UNTUNG TGLLHR)
Kalau program masih tidak jalan, silahkan tinggalkan pesan di blog ini untuk kita diskusikan bareng-bareng. Semoga bermanfaat.
Bagi yang ingin belajar tentang AT Command yang berkaitan dengan SMS Gateway, saya sudah membuat slide-nya, silahkan download di alamat ini
http://www.ziddu.com/download/4286487/ATCOMMAND.ppt.html
Pada posting sebelumnya kita sudah sama-sama belajar cara mengetahui handphone yang support sms gateway, bagi yang belum membacanya silahkan baca dulu. Tapi jika Anda menggunakan handphone siemens c55 sudah dapat dipastikan Handphone ini support SMS Gateway, saya juga pernah menggunakan handphone nokia type 6610, nokia type ini juga support, bagi yang menggunakan handphone selain di atas, silahkan dicek dulu menggunakan AT Command.
Bagi yang ingin membuat program SMS Gateway seperti program ramalan SMS Gratis, teman-teman bisa mengubah programnya sesuai kebutuhan, tinggal ganti function saja. Kita bisa mengubahnya untuk keperluan sms gateway perusahaan, sms gateway akademik, atau apapun. Kodenya dapat di download disini:
1. SMS Gateway source code plus Database (14.72 KB)
http://www.ziddu.com/download/4228080/SourceCodeandDatabase.zip.html
2. COMMAPI.ZIP (991.67 KB)
http://www.ziddu.com/download/4228009/commapi.zip.html
3. MySql Connector (268.37 KB)
http://www.ziddu.com/download/4228047/com.zip.html
Setelah semua file di download, langkah selanjutnya adalah :
1. Install java
Jika teman-teman belum punya installer java silahkan download di www.java.com/getjava/ atau semuanya free, karena java adalah program open source dibawah naungan sun microsystem.
2. Install Java Editor
Sebenarnya kita juga bisa menggunakan notepad, tapi akan lebih baik kalo kita menggunakan java editor seperti JCreator Pro atau NetBean. Saya menggunakan JCreator Pro, free download installer JCreator Pro disini alamat www.jcreator.com/download.htm
3. Install MySql
Untuk mengolah database, install MySql. MySql juga bersifat Open Source dan gratis. Kalau belum punya silahkan download MySql Installer di sini dev.mysql.com/downloads/.
4. Install Editor MySql (ex: MySQL Front)
Sebenarnya kita bisa menggunakan PHP Admin atau menjalankannya under dos, tapi akan lebih mudah kalau kita menggunakan MySQl Editor seperti MySql Front atau Editor lainnya. Bagi yang belum punya silahkan download intaller MySql front freeware / free edition di alamat ini http://www.sharewareconnection.com/download-dreamcoder-for-mysql-free-edition-from-sharecon.html
Untuk cara intalasi java, jcreator, mysql, mysql front, tinggal klik Next and Next, Then Finish, mudah kan.
Kalau semua sudah diinstall, langkah selanjutnya adalah installasi program SMS Gateway. Pastikan handphone teman-teman sudah terhubung ke komputer. Langkah-langkah selanjutnya:
1. Ekstrak File smsgatewaysourcodeanddatabase.zip, akan terdapat 2 file, yakni ramalSMS.java dan ramalan.sql
2. Double click di ramalan.sql, lalu tekan tombol OK, lalu tekan tombol F9, maka database ramalan dan semua isinya akan masuk di database di komputer teman-teman.
3. Extract File Commapi. Jar lalu cari file-file dibawah ini lalu copy dan paste dilokasi yang sesuai.
Comm.jar diletakkan di installan/jre/lib/ext
javax.comm.properties diletakkan di installan/JRE/lib
win32com.dll diletakkan di installan/jre/bin
4. Extract Com.zip, akan terdapat satu folder com, lalu letakkan folder com tsb satu folder dengan file ramalSMS.java
5. Buka JCreator, pilih Open file ramalSMS.java, pilih tab Build lalu pilih Compile File, langkah terakhir pilih tab Build lalu pilih Execute File. Maka akan muncul msdos:
a. Tekan angka 1 untuk memulai server sms gateway
b. Masukkan port yang sesuai dengan port hanphone (Pilihan 1 - 10)
c. Masukkan nilai baut yang ingin anda gunakan (1 - 10)
d. Selesai, anda tinggal SMS dengan format yang sesuai (CINTA TGLLHR, KARIR TGLLHR dan UNTUNG TGLLHR)
Kalau program masih tidak jalan, silahkan tinggalkan pesan di blog ini untuk kita diskusikan bareng-bareng. Semoga bermanfaat.
Bagi yang ingin belajar tentang AT Command yang berkaitan dengan SMS Gateway, saya sudah membuat slide-nya, silahkan download di alamat ini
http://www.ziddu.com/download/4286487/ATCOMMAND.ppt.html
Subscribe to:
Comments (Atom)
