Showing posts with label Php. Show all posts
Showing posts with label Php. Show all posts

Friday, September 3, 2010

Easy Gammu Installer

Alhamdulillah… kini sudah ada software installer Gammu 1.25 yang mudah-mudahan bisa memudahkan Anda untuk melakukan instalasi Gammu 1.25. Installer ini saya buat dengan menggunakan script PHP yang dijalankan via browser.

Anda kini tidak perlu repot-repot menghapalkan command-command seperti gammu identify, gammu smsd inject, dll., tak perlu pula bolak-balik ke command prompt, atau bahkan mengutak-atik file SMSDRC maupun GAMMURC yang cukup memusingkan. Yang Anda lakukan hanyalah mengisi parameter konfigurasi via form, simpan… dan lakukan test koneksi, pengiriman, dan menerima sms dll hanya dengan mengklik tombol yang disediakan. Mudah bukan??

Berikut ini adalah langkah-langkah instalasi Gammu 1.25 menggunakan Easy Gammu 1.25 Installer.



Di sini saya sengaja memilih versi Gammu 1.25 karena saya rasa versi inilah yang paling stabil dibandingkan versi terbaru.

Langkah Instalasi Installer

Anda cukup double click pada file installer.

Gammu Installer

Gammu Installer

Gammu Installer

Arahkan direktori instalasi ke folder WWW jika Anda menggunakan AppServ atau HTDOCS jika menggunakan XAMPP.

Gammu Installer

Selesai !!!

Setting Gammu

Sekarang langkah berikutnya untuk instalasi Gammu dan konfigurasinya. Caranya cukup mudah, yaitu tinggal buka browser dan arahkan URL nya ke http://localhost/gammu.

Gammu Installer

Langkah 1. Setting GAMMURC, cukup masukkan nomor port dan jenis connection

Gammu Installer

Langkah 2. Lakukan test koneksi Gammu dengan HP (hanya dengan klik tombol)

Gammu Installer

Langkah 3. Jika langkah No. 2 sukses, buat database Gammu. (masukkan username dan password koneksi MySQL, masukkan pula nama database Gammu yang akan dibuat)

Gammu Installer

Langkah 4. Setting konfigurasi SMSDRC (masukkan parameter-parameter yang dibutuhkan ke dalam form)

Gammu Installer

Langkah 5. Buat service Gammu hanya dengan mengklik tombol

Gammu Installer

Langkah 6. Jalankan service Gammu hanya dengan mengklik tombol

Gammu Installer

Langkah 7. Lakukan test pengiriman SMS

Gammu Installer

Langkah 8. Lakukan test penerimaan SMS

Gammu Installer

Langkah 9. Hentikan service Gammu hanya dengan mengklik tombol.


Wednesday, July 7, 2010

Sedikit Bumbu Keamanan PHP


Saat kita mulai membuat aplikasi berbasis web dengan menggunakan PHP tentu kita akan berfokus pada cara pembuatannya, bagaimana mengimplementasikan logika sehingga menghasilkan suatu karya (sistem) yang berjalan sesuai dengan keinginan dan kebutuhan kita.

Tapi ada kalanya kita perlu membalik pola pikir tersebut dengan memandang sebagai seorang user (pengguna aplikasi) yang mungkin memiliki waktu lebih banyak dalam penggunaan aplikasi tersebut. Dalam hal ini banyak hal yang mungkin tidak kita perhatikan dari aplikasi buatan kita tersebut oleh karena itu ada pepatah "Tidak ada sistem yang sempurna." tetapi penulis akan memberikan sedikit informasi keamanan dasar sehingga kita bisa sedikit melangkah menuju kesempurnaan tersebut.


Beberapa hal yang perlu diperhatikan dalam langkah percobaan para cracker untuk memboikot akses website kita antara lain :
1. Melalui URL (method GET)
2. Melalui media input yang terdapat dalam form (method POST)

Sebagaimana kita ketahui bahwa terdapat 2 cara umum pengiriman variable dalam PHP yaitu GET dan POST sehingga perlu penanganan khusus dalam penerimaan serta pengiriman variable tersebut.

Untuk method POST :
Method POST merupakan penangkapan variable dari media input yang terdapat dalam FORM.

1. Batasi jumlah karakter (maxlength)
Pembatasan jumlah karakter dalam media input sangat penting sehingga tidak dimungkinkan penulisan script seperti javascript pada inputbox tersebut.
Contoh implementasi :
Titik rawan : Input Login (username dan password), Input search

2. Lapisi dengan penahan kutip atau addslashes()
Fungsi PHP ini akan membantu kita menambahkan tanda kutip (') pada setiap karakter garing (/) sehingga dapat mencegah timbulnya efek SQL injection. Saya rasa teknik hacking ini cukup populer diantara anda. Penambahan kutip akan membuat garing menjadi bertipe string sehingga tidak dianggap sebagai salah satu perintah query pada MySQL / SQL.
Contoh implementasi : addslashes($_POST['_username'])
Titik rawan : Form Login

3. Lapisi dengan penahan tag atau htmlspecialchars()
Untuk mencegah terjadinya teknik hacking xss atau javascript injection maka ada baiknya kita menambahkan fungsi tersebut. Hal ini akan membuat tag html maupun javascript memiliki tipe data string sehingga tidak akan dieksekusi oleh browser.
Apabila script dimungkinkan dalam media input sehingga masuk ke dalam database dan saat browser membuka halaman yang terkontaminasi tersebut maka browser akan melakukan eksekusi terhadap perintah tersebut yang biasanya dalam bentuk javascript.
Contoh implementasi : htmlspecialchars($_POST['pesan'])
Titik rawan : Form Login, Form Kontak Admin

4. Perhatikan nama media input
Sudah saatnya kita berusaha sedikit lebih unik dalam menentukan nama pada media input kita sehingga mempersulit beberapa tools penjahat yang menggunakan library (kamus kata) dalam penentuan nama variable incarannya. Misalnya pada media input login tambahkan garis bawah. Tentu anda memiliki ide sendiri dalam
mengimplementasikan hal ini.
Contoh implementasi :
Titik rawan : Input Login (username dan password)

Untuk method GET :
Method get merupakan penangkapan variable yang berasal dari URL.

1. Gunakan .htaccess
Sebenarnya ini adalah sebuah metode yang menjadikan website kita seakan memiliki
struktur direktori yang luas, padahal itu adalah variable. Sehingga memecah
konsentrasi dari pengunjung yang berniat isenk. Bila halaman tidak ditemukan maka
kita dapat meredirectnya ke halaman 404 kesayangan kita.

Implementasi :


RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [L]


RewriteEngine on
RewriteCond %{HTTP_HOST} ^mydomain.com$ [NC]
RewriteRule ^(.*) http://www.mydomain.com/$1 [L,R=301]

Untuk lebih jelasnya dapat dilihat disini :
http://www.ilmuwebsite.com/tutorial-php/membuat-url-mod-rewrite-part-1-http-conf

2. Hindari $_REQUEST()
Metode ini digunakan untuk menangkap variable dalam bentuk POST dan GET. Ada kalanya kita membutuhkan metode penerimaan variable dengan menggunakan fungsi ini, tetapi batasilah penggunaannya karena tanpa disadari suatu saat anda akan mendapatkan masalah karena hal ini. Dan bila kita telah terlanjur menggunakannya pada seluruh aplikasi kita maka kita akan sulit untuk merubah (Bisa, dengan memilah mana yang tidak perlu dan benar-benar menggunakan.).

Tambahan :
1. Session dan Cookies timeout
Gunakan timeout pada session atau cookies terutama untuk pengenalan login. Session merupakan penanda dari sisi server dan akan hilang apabila browser ditutup, sedangkan cookies adalah pengenalan dari sisi browser dan bila tidak diset timeout maka status akan terus login (pada pengenalan login.), tentu saja anda tau kemungkinan-kemungkinan yang akan terjadi selanjutnya.

Mungkin sampai disini dulu, karena sudah waktunya berangkat kerja. Bila ada yang ingin ditambahkan silahkan ditambahkan karena pengetahuan kita tidak akan habis dengan saling berbagi.

Penulis : Sofian Oktavianus

Saturday, July 18, 2009

Open Source Photo Gallery Designed with Mootools Javascript Library


(E) 2 Photo Gallery adalah sebuah galeri open source yang dibangun dengan Javascript Mootools Perpustakaan yang kompak, modular, Object-Oriented javascript framework. Dirancang untuk memungkinkan Anda untuk meng-upload foto ke folder yang dikehendaki, memberitahu (E) 2 Galeri Foto apa folder untuk melihat dan secara otomatis akan mengambil foto dengan menggunakan PHP.

Download source code lengkap disini

atau

http://www.ziddu.com/download/5665824/e2_photo_gallery_full.zip.html

Friday, May 29, 2009

Perbandingan Toko Online dengan Template dengan Bukan Template


Bila Anda ingin membuat Toko Online, saat ini sudah banyak program-program gratis alias template yang siap saji seperti Joomla, OS Commerce dan Zen Chart. Anda hanya perlu membayar NAMA DOMAIN + HOSTING saja, untuk awalnya Rp. 500.000 per tahun juga sudah mencukupi untuk meletakkan Toko Online Anda.

Tetapi ada juga perusahaan web development yang mematok harga dari Rp. 5 Juta s/d Rp. 25 Juta untuk membuat Toko Online. Kalau dibanding dengan pembuatan toko online dengan template, harga ini seperti bumi dan langit, mahal sekali.

Saya ingin menceritakan pengalaman pribadi saat mengurus BUKUKITA.COM, karena semua script tersebut dibuat dari awal dan butuh waktu 6 bulan sehingga bisa launching. Dan sampai saat ini situs tersebut saya yakin terus dikembangkan.

Bila kita mengembangkan sendiri situs Toko Online, tidak tergantung pada template gratisan, maka kita bisa menambah fitur yang sesuai dengan situasi dan kondisi di mana kita ingin berjualan. Di BUKUKITA.COM banyak sekali fitur-fitur yang tidak ada di template gratisan seperti memberikan poin setiap pembeli membeli buku dan kemudian poin itu bisa digunakan untuk membeli buku, hadiah yang diundi per bulan dan bisa dipilih sendiri, dan fitur blog untuk para member sehingga mereka bisa saling berhubungan satu sama lain. Dengan kata lain, situs yang dibuat dan dikembangkan sendiri akan sangat fleksibel menghadapi segala macam perubahan di masa yang akan datang.

Tentu saja kita harus mempunyai modal yang cukup bila ingin membuat dan mengembangkan sendiri. Bagaimana dengan mereka yang mempunyai modal pas-pasan? Apakah masa depan Toko Online yang dibuat dengan template akan tidak cerah?

Bagi mereka yang memiliki modal pas-pasan dan tidak mempunyai pengalaman, tidak ada salahnya mencoba membuka toko online dengan template seperti os commerce atau zen chart. Hitung-hitung mencari pengalaman dan belajar berbisnis online. Kalau memang nanti sukses dan mempunyai modal yang besar, tentu anda bisa menyewa programmer yang sangat ahli dengan bayaran tinggi untuk merombak situs Anda tersebut. Kalau Anda saat ini menggunakan Zen Chart, Anda bisa mengontak programmer Zen Chart untuk merombak situs sesuai dengan keinginan Anda. Ini bisa saja, jadi jangan juga berkecil hati.

Jadi kalau ingin membuat dan mengembangkan situs Toko Online sendiri, ada beberapa syarat yang mungkin saya bisa berikan di sini:

* Butuh Modal dan Waktu untuk membuat Toko Online
* Butuh seorang Sistem Analis yang tahu seluk beluk pembuatan Toko Online
* Butuh seorang Programmer ahli untuk mengimplementasikan apa yang dirancang oleh Sistem Analis
* Harus kreatif dan inovatif sehingga fitur-fitur selalu ditambah dan diperbaharui, ini akan membuat Toko Online anda unik dibanding dengan yang lain

Jadi kalau kita lihat syarat-syarat tersebut, mereka yang membuat Toko Online sendiri biasanya adalah perusahaan yang memang mempunyai modal.

Tetapi bila Anda masih blank dan tidak mempunyai pengalaman, jangan ragu untuk menggunakan template yang siap saji. Jalankan saja toko online tersebut sehingga Anda mempunyai pengalaman dan bisa menjadi sistem analis nantinya untuk mengembangkan dan membesarkan toko online anda sendiri yang mempunyai fitur-fitur unik dibanding dengan toko lainnya.

Pilihan sekarang ada di tangan Anda :)

Semoga Bermanfaat,

Sumber: www.babastudio.com

Monday, January 26, 2009

Kartu Master Card Gratis Dari Payoneer

12012009 Beberapa hari yang lalu, pulang kampung, nyampe rumah, eh disambut Payoneer debit card….
Wuihhh…
Seneng banget….
Mau???
Ikutin aja tulisan di bawah ini...

Sebagai tambahan sedikit, ini GRATIS lho….

Langkah Pertama Daftar dulu di FriendFinder.com karena bila anda mendaftar langsung di Payoneer, anda tidak akan menemukan negara Indonesia.

Lalu klik Join Now
Isilah data-data Anda dg lengkap
I am a : Man jika Anda laki-laki, Woman jika Anda perempuan
Interested in meeteng a : Man jika ingin mencari/berteman dg laki-laki, woman dg perempuan, atau bisa Anda pilih dua-duanya.
For : Friendship (berteman), Dating (ketemuan), Serious relationship (hubungan serius), Marriage (menikah), bisa Anda pilih lebih dari satu, pilih semuanya juga bisa.
Birthdate : Tanggal lahir Anda.
Country : Negara Anda.
Zip/Postal code : Kosongkan saja, jika Anda berada selain di Amerika ( US only )
Email Address : Isikan email Anda
Username : username Anda antara 4 sampai 16 karakter

Lalu klik Click Here and Have Fun

Setelah itu Anda masuk ketahap berikutnya.
City : Kota tempat tinggal Anda
Closest City: Sama seperti diatas
State: Propinsi Anda
Your Height : Tinggi Anda
Your Body Type : Tipe badan Anda
Your Race : Ras Anda atau suku Anda biasanya kalau Indonesia adalah Asia
Marital Status : Status pernikahan Anda
Your Religion : Agama Anda
Your Education : Pendidikan terakhir Anda
Your Occupation : Pekerjaan Anda
Introduction Title : Judul tentang diri Anda
Tell others about yourself : Ceritakanlah tentang diri Anda, misalnya: I am a good women, I like travelling and my hobby reading, computer, sports, and others, i love new friend men or women, buatlah suka-suka Anda, minimumnya 50 karakter.
Jika Anda sudah memiliki foto uploadlah foto Anda, klik browse lalu carilah file yg berisi foto Anda. Jika Anda belum punya fota bisa Anda kosongkan dulu, nanti dikemudian hari bisa Anda isi kembali.
Setelah itu klik Click to Join. Maka akan ada email masuk di email anda.
Setelah itu bukalah email Anda, lalu klik Activate Now
Maka Anda sudah diaktivasi, jika Anda ingin login isilah dg username dan password yg ada di email Anda.

Setelah itu keluarlah dulu, dengan klik log out.

LANGKAH KEDUA: klik untuk membuat affiliasi sumber dollarnya.
Klik
pada Menu : Affiliates
Lalu klik Affiliate Signup.
Isilah data-data tsb dg benar.
Preferred Program: Pilihlah no 1
First Name: Nama pertama Anda
Last Name: Nama akhir Anda
URL: Website/blog Anda, wajib Anda isi.
Desired Password : Password yg Anda inginkan
Preferred Newsletter Language: English
Email Address: Masukkan email Anda
Secondary Email Address: Email Anda yg lain, boleh juga dikosongkan
Checks Payable To: Nama lengkap Anda sesuai KTP
Street Address: Alamat Anda sesuai KTP
City: Kota tempat tinggal Anda
State/Province: Provinsi tempat Anda tinggal
Country: Negara Anda
ZIP/Postal Code: Kode Pos kota Anda
What is your business tax classification? Kosongkan saja karena untuk warga Amerika saja
Tax ID or Social Security Number: Kosongkan saja karena untuk warga Amerika saja
Phone Number: No telp Anda, misalnya no telp Anda: 031 1234567 maka buat 6231 1234567 atau no hp Anda 081xxxxx maka buat 6281xxxxx.( harus pakai kode 62, yaitu kode telphone Indonesia)
Which Instant Messenger do you use? Pilih saja None
Use ePassporte : Pilih saja No
Please give us your comments: Buatlah komentar Anda misalnya: Heloo. I like it. Thank You,
Setelah itu klik Click Here for the Last Step
Lalu klik kotak kecil yg ada tulisan
Yes, I have read and accepted the Affiliate Agreement, ……..
Lalu klik Submit.
Setelah itu klik Account Information
Lalu klik yg warna biru di tulisan Here is your account information. Click here to update your information.
klik Payoneer: Signup to be paid by Prepaid MasterCard®.You will be directed to a FriendFinder page hosted by Payoneer, where you can sign up for a card.
Lalu isilah data-data Anda di Payoneer tsb, setelah Anda Isi tunggulah kira-kira 20 hari kartu Anda sampai di rumah Anda, setelah kartu debit Anda sampai lalu aktivasilah ikuti petunjuk yg ada disurat yg dikirim bersama dg kartu Anda. Nah gampangkan..
Lihatlah kembali email Anda, disana Anda akan diberikan username dan password untuk affiliate. Login sebagai member dg login sebagai affiliate itu beda.

Selamat Mencoba.

Tuesday, December 30, 2008

Script pengatur waktu Session, Logout Otomatis

Banyak hal terjadi jika seseorang telah berhasil login sebagai user, dan tentunya login ini ada ketika user akan memanfaatkan layanan dari suatu website, bukan karena sebab yang lain, seperti tingkat sekuritas yang buruk. Selalu ada masa idle. Idle di sini bermakna user tidak melakukan apa-apa sama sekali di website tersebut, tidak berpindah halaman, tidak memasukkan input pada form manapun, dan tidak ada hal apapun yang menyebabkan sebuah halaman website terrefresh, dengan kata lain user tidak melakukan apa pun pada website yang sedang dia kunjungi. Sungguh user yang aneh. :D~~. Tapi hal seperti ini dapat terjadi jika user sedang asik mengunjungi website yang lain, dan lupa akan website yang dia kunjungi sebelumnya. Tentunya keadaan user pada website yang dikunjungi sebelumnya dianggap sebagai condition yang idle oleh website tersebut. Tidak ada hal apapun yang terjadi di website sebelumnya. Atau kondisi lain, dimana seorang user yang telah 10 menit meninggalkan pc-nya dalam keadaan lupa melogout accountnya. Sungguh terlalu. Di sinilah fungsi pengatur waktu session benar-benar dibutuhkan.

Ada dua cara untuk mengatur waktu session, yang pertama adalah merubah konfigurasi session timeout pada php.ini, cara yang terakhir yaitu dengan memanfaatkan fungsi time() dan variable session yang telah teregistrasi, dengan kata lain cara yang terakhir ini adalah merancang barisan code yang dapat mengatur waktu session. Penulis tidak akan menjelaskan cara yang pertama. Tapi yang akan penulis jelaskan adalah cara yang kedua. Penulis akan mengambil sebuah contoh kasus, ini untuk memudahkan penjelasan secara logika, dan penjelasan alur dari cara kerja script yang akan dibuat.
Kasusnya seperti ini, “Ketika user telah berhasil login, akan ada sebuah session yang digunakan sebagai patokan untuk membandingkan berapa lama user telah berada pada halaman website tersebut. Apabila waktu time() yang berjalan lebih besar dari nilai session dari variable yang dijadikan sebagai patokan nanti maka user tersebut akan secara otomatis terlogout”.

Secara struktur, algoritmanya akan seperti ini :

  1. Sediakan sebuah variable x, berisi waktu sekarang ditambah 30 detik.
  2. Jadikan variable x tersebut sebagai session, yang akan membypass valuenya pada setiap halaman, dengan kata lain, isi variable x tersebut dapat ditampilkan di halaman mana pun.
  3. Bandingkan waktu sekarang dengan nilai dari variable x tersebut.
  4. Jika waktu sekarang lebih kecil dari nilai variable x tersebut, maka si user masih dalam keadaan login.
  5. Jika waktu sekarang lebih besar dari nilai variable x tersebut, maka keadaan si user adalah logout.
  6. Jika user melakukan refresh halaman, berpindah halaman, mengisi form, sebelum masa sessionnya habis maka waktu login di tambah 10 menit berikutnya.

Ya, untuk algoritma di atas penulis bagi menjadi 2 function, yakni function login_validate() dan login_check(). Langsung saja persiapkan script yang dibutuhkan :

File index.php :


require_once "functions.php";
if (( $_POST['username'] == 'admin' ) && ( $_POST['password'] == 'admin'))
{
$_SESSION['user'] = $_POST['username'];
login_validate();
header("location: admin.php");
}

else if ( empty($_POST['username']) && empty($_POST['password']) )
{
header("location: login.php");
}

?>

Selanjutnya file intinya yaitu,
functions.php :


session_start();

function login_validate() {
$timeout = 30;
$_SESSION["expires_by"] = time() + $timeout;
}

function login_check() {
$exp_time = $_SESSION["expires_by"];
if (time() < $exp_time) {
login_validate();
return true;
} else {
unset($_SESSION["expires_by"]);
return false;
}
}
?>

Kemudian admin.php, barisan code dalam admin.php ini penulis ibaratkan seperti kondisi dari admin yang telah berhasil login. Jika lebih dari 30 detik maka user secara otomatis akan di logout. Nilai 30 detik ini diambil dari variable $timeout yang ada di functions.php.

File Admin.php :


require_once "functions.php";

if (ISSET($_SESSION['user']))
{
if (!login_check()) {
header("Location: logout.php");
exit(0);
}
else {
echo "Jika tidak ada kegiatan sama sekali, anda akan logout secara otomatis ... ";
}
}

else
{
echo "Anda tidak berhak untuk ngapa-ngapain ... !! :D";
}

?>

Selanjutnya halaman login usernya, login.php :








username
password






Terlihat jelas pada baris ke 4 di atas, halaman login page memiliki action, menuju index.php, yang kemudian menghasilkan 2 variable POST, yaitu $_POST[‘username’], dan $_POST[‘password’]. Kedua variable inilah yang kemudian dicek pada halaman index.php.

Dan yang terakhir adalah logout.php :


require_once "functions.php";

unset($_SESSION['user']);
session_destroy();
header("location: login.php");

?>


Cara kerja source code di atas cukup sederhana, lihat barisan code index.php,

......
if (( $_POST['username'] == 'admin' ) && ( $_POST['password'] == 'admin'))
{
$_SESSION['user'] = $_POST['username'];
login_validate();
header("location: admin.php");
}

else if ( empty($_POST['username']) && empty($_POST['password']) )
{
header("location: login.php");
}
....

Penjelasannya adalah sebagai berikut, Jika user memasukkan username dan password yang cocok ( dalam kasus ini username dan passwordnya adalah admin ) maka user akan diberikan sebuah variable session, yakni $_SESSION['user'], dan akan ditambahkan sebuah variable baru yang nantinya variable ini berfungsi sebagai timer, yakni

$timeout = 30;

Variable tersebut berada dalam fungsi login_validate() pada script functions.php. Sedangkan masih dalam fungsi login_validate, lompat ke barisan code dibawahnya yaitu :

$_SESSION["expires_by"] = time() + $timeout;

Disinilah letak timer yang sebenarnya, kehebatan dari session adalah dapat melakukan passing value walaupun halamannya berbeda. Jelasnya $_SESSION["expires_by"] mengambil nilainya dari waktu ketika user pertama kali login yaitu time() di tambah dengan 30 detik kedepannya, yakni isi dari variable $timeout.

Nah, dari situ, lihat ke bagian fungsi yang ada di bawahnya, pada functions.php :

...
function login_check() {
$exp_time = $_SESSION["expires_by"];
if (time() < $exp_time) {
login_validate();
return true;
} else {
unset($_SESSION["expires_by"]);
return false;
}
}
....

Ya, lihat baris :
$exp_time = $_SESSION["expires_by"];

Varibale $exp_time itu memiliki nilai dari $_SESSION["expires_by"],
Untuk kejelesannya penulis berikan contoh seperti ini, jika user login pada waktu jam 5, maka $_SESSION["expires_by"] berisi jam ke 5, menit ke 0, dan detik ke 30. Dan secara alami pun diketahui bahwa yang namanya waktu pasti akan terus bertambah tentunya. Tapi karena berada dalam fungsi, variable $_SESSION["expires_by"] ini tidak akan bertambah, walaupun time() terus berlanjutnya.

Lompat ke baris selanjutnya :
if (time() < $exp_time) {
login_validate();
return true;

Dalam baris tersebut sederhananya adalah, jika waktu yang sekarang berjalan lebih kecil nilainya dari nilai yang ada pada $_SESSION["expires_by"], maka tambahkan 30 detik lagi, dan jika waktu pada time() sama dengan nilai $_SESSION["expires_by"] maka user akan otomatis logout

Selanjutnya ...
...
else {
unset($_SESSION["expires_by"]);
return false;
}
...

Jika waktu yang sekarang berjalan itu lebih besar dari nilai yang ada pada $_SESSION["expires_by"], maka lakukan logout.

Script tersebut dapat di download di sini
http://networkandgame.890m.com/ilmuwebsite/article/session-time-by-alk.zip
Cukup jelas ya. Jika ada yang di tanyakan, silahkan layangkan pertanyaan ke email penulis.

Redirect Halaman Kompleks

Lagi-lagi penulis coba untuk membayar hutang. :D. Hutang mengenai tutorial yang membahas redirect halaman secara kompleks. Sebelum menuju inti pembahasan, penulis akan beri penjelasan apa dan bagaimana contoh kasus dari redirect halaman secara kompleks ini.
Mungkin ada sebagian orang yang pernah mencoba searching di google mengenai artikel yang dia cari, namun ketika mendapatkan artikel tersebut, web tersebut hanya membolehkan user yang sudah teregistrasi saja yang dapat mengakses artikel tersebut. Maka, langkah selanjutnya yang dilakukan oleh user tersebut adalah meregistrasikan dirinya untuk menjadi member pada website tersebut, pada form yang letak halamannya berbeda dengan artikel yang dicari. Namun setelah proses registrasi selesai, dan proses login berhasil, user secara otomatis di redirect ke halaman yang dia tuju sebelumnya. Ini adalah contoh kecil dari redirect kompleks. Contoh lainnya, ketika user yang akan mencoba untuk mendownload sebuah file pada halaman tertentu di suatu website, user tersebut diharuskan untuk login terlebih dahulu, tapi setelah login user langsung diredirect secara otomatis menuju halaman download. :D. Pada tutorial kali ini, penulis akan coba jawab itu berbagai persoalan tersebut. Mari .. mari ... :D

Ya, persiapkan terlebih dulu databasenya :

create database simple_cms ;
use simple_cms ;
create table user( id int(5) PRIMARY KEY auto_increment, username varchar(20), password varchar(50));
create table article (id int(5) PRIMARY KEY auto_increment, penulis varchar(20), judul varchar(200), isi text);

insert into user values ('','admin',md5('admin'));
insert into article values('','Loka Dwiartara','Kegantengan Abadi','Kegantengan abadi terpancar dari kekerenan sejati. Aura kegantengan selalu terpancar dari kerennya seseorang. :D. Kadang banyak yang berpikir keindahan secara fisik itu melebihi dari segalanya. Kita tahu bahwa b_scorpio itu tidak ganteng, tapi setidaknya tolong hargai dia :D'), ( '','Loka Dwiartara','PHP is powerfull easy language ... ', 'Kekerenan php dalam menangani pengembangan sistem informasi berbasis website patut di acungi 4 jempol kaki dan tangan, kehebatannya melebihi b_scorpio yang tidak pandai menggaet i#a, wanita yang dia suka. ;D~~~, peace ... damai ... ') ;

Selanjutnya, config.php :

$host = "localhost";
$username = "root";
$password = "";
$database = "simple_cms" ;

$connect = mysql_connect($host, $username, $password);
mysql_select_db( $database , $connect) or die ("MySQL is error!!");
?>

Kemudian, halaman login.php :






username
password






Selanjutnya, file cek.php, disinilah redirect kompleks halaman berada :


session_start();
require_once "config.php";

if (ISSET($_POST['username']) && ISSET($_POST['password']) )
{
$username = $_POST['username'];
$password = md5($_POST['password']);
$session_halaman = $_SESSION['halaman'];

$cekuser = "select username, password from user where username = '$username' and password = '$password'";
$query_cekuser = mysql_query($cekuser);
$exist = mysql_num_rows($query_cekuser);

if ($exist >= 1)
{
$_SESSION['user'] = session_id();
header("location: index.php?view=page&id=$session_halaman");
}

else
{
header("location: login.php");
}

}

?>

Dan halaman index.php, untuk menampilkan artikelnya :


session_start();
require_once "config.php";
if (!ISSET($_REQUEST['id']) )
{
$list_article = "select * from article";
$query_list_article = mysql_query($list_article);
echo "

Article Today

";

if (ISSET($_SESSION['user']))
{
echo "

Welcome back User. Do you want logout ? :D~~

";

}


while ($showlist = mysql_fetch_array($query_list_article))
{
$id = $showlist['id'];
$penulis = $showlist['penulis'];
$judul = $showlist['judul'];
$isi = $showlist['isi'];
$panjangartikel = strlen($isi);
$isi_dipotong = substr($isi, 0, 60);
$isi_fix = substr($isi, 0, strrpos($isi_dipotong, " "));
$isi_fix .= "...";

echo "$judul

Oleh : $penulis

$isi_fix selengkapnya



";


}
}

else if (ISSET($_REQUEST['view']) && ISSET($_REQUEST['id']) )
{

$id = $_REQUEST['id'] ;
if (!ISSET($_SESSION['user']))
{
$_SESSION['halaman'] = $id ;
echo "Login dulu dong di sini";
}

else
{
$list_article = "select * from article where id = '$id' ";
$query_list_article = mysql_query($list_article);

while ($showlist = mysql_fetch_array($query_list_article))
{
$id = $showlist['id'];
$penulis = $showlist['penulis'];
$judul = $showlist['judul'];
$isi = $showlist['isi'];

echo "

Article Today

";

echo "$judul

Oleh : $penulis

$isi



";


}

echo "Kembali...";
}

}

?>


Terakhir adalah, file logout.php :


session_start();
unset($_SESSION['user']);
session_destroy();
header("location: index.php");
?>

Hmmm.. panjang juga scriptnya. :D~ Penulis coba jelaskan beberapa baris yang penting saja. Lihat ke halaman index.php, di situ terdapat baris seperti ini :

....
else if (ISSET($_REQUEST['view']) && ISSET($_REQUEST['id']) )
{

$id = $_REQUEST['id'] ;
if (!ISSET($_SESSION['user']))
{
$_SESSION['halaman'] = $id ;
echo "Login dulu dong di sini";
}


...

else if (ISSET($_REQUEST['view']) && ISSET($_REQUEST['id']) )
Ini berarti, jika user mengklik salah satu artikel di halaman index,

if (!ISSET($_SESSION['user']))
dan jika user belum login,

$_SESSION['halaman'] = $id ;
maka, rekam halaman yang akan dibuka, simpan halaman tersebut ke dalam variable session.

echo "Login dulu dong di sini";
Persilahkan user untuk login dulu.

Nah selanjutnya, jika user telah login maka artikel langsung di perlihatkan seluruhnya, seperti pada baris ini

....
else
{
$list_article = "select * from article where id = '$id' ";
$query_list_article = mysql_query($list_article);

while ($showlist = mysql_fetch_array($query_list_article))
{
$id = $showlist['id'];
$penulis = $showlist['penulis'];
$judul = $showlist['judul'];
$isi = $showlist['isi'];

echo "

Article Today

";

echo "$judul

Oleh : $penulis

$isi



";


....

Kemudian untuk script cek.php

if (ISSET($_POST['username']) && ISSET($_POST['password']) )
Jika user telah mengisi password dan username,

....

$cekuser = "select username, password from user where username = '$username' and password = '$password'";
maka buat sebuah query yang akan menyeleksi apakah username dan passwordnya ada.

...

$query_cekuser = mysql_query($cekuser);
Jalankan querynya ...

$exist = mysql_num_rows($query_cekuser);
Apakah username dan password yang dimasukkan tersebut ada dalam database?

if ($exist >= 1)
{
Jika ada,

$_SESSION['user'] = session_id();
maka buat session baru untuk user

header("location: index.php?view=page&id=$session_halaman");
Redirectkan si user ke halaman yang dia tuju sebelumnya ... Ya, disinilah letak dari redirect kompleksnya. :D. Cukup manfaatkan saja session yang ada untuk meredirect user ke halaman yang dituju.

}

else
{
header("location: login.php");
jika username dan password salah, persilahkan user untuk login ulang.

}

}
Untuk screenshoot demonya seperti ini :


Ini adalah halaman pertama kali


Ketika salah satu link akan diklik, maka user diperintahkan untuk login terlebih dahulu


Setelah login berhasil maka user secara otomatis langsung di redirect ke halaman tujuan yang awal.


Yup, penulis kira sudah cukup jelas untuk redirect kompleks. Jika ada yang ditanyakan silahkan kirim email ke alkemail@gmail.com. Selamat mencoba.

Script tersebut dapat di download di sini
http://networkandgame.890m.com/ilmuwebsite/article/redir-complex-by-alk.zip

Greetz : b_scorpio, abuzahra, peterpanz, kandar, phii_, syahrilrohman, ivan, dr.emi, safril, najwa. Special for jojo. :). Hi, Jo! Have a nice day.

Sunday, October 19, 2008

Mengenal Zend Framework - PHP MVC Framework

Struts adalah biang MVC di dunia pemrograman Java / J2EE, kalau PHP sekarang sudah ada Zend neh... bagi yang belum tahu Zend bisa baca neh.

Di dalam dunia PHP sebenarnya banyak juga framework-framework yang bermunculan.
Saat ini framework yang terkenal adalah CakePHP, Prado, CodeIgniter, Symfony, dan Zend Framework, di mana masing-masing memiliki keunggulannya tersendiri dan di antara framework itu Zend merupakan salah satu framework yang

mengimplementasikan MVC pattern untuk pengembangan aplikasi web di mana Zend Framework memisahkan bagian yang menjadi controller, model dan view.
Pada artikel ini penulis akan memperkenalkan salah satu framework populer tersebut yang dibuat oleh Zend sendiri yang merasa perlu untuk membuat suatu framework serta library yang dibangun di atas teknologi php5 dengan mendayagunakan kelebihan pemrograman berorientasi objek yang telah disediakan serta menghasilkan library yang lebih maju dan lengkap untuk mendukung kebutuhan developer php pada saat ini yang mulai beralih ke pembuatan aplikasi web 2.0.


Definisi Zend Framework menurut dokumentasinya:

“Zend Framework adalah framework open source dan berkualitas tinggi untuk membangun aplikasi web dan web service dengan PHP”

Zend Framework memiliki keunggulan-keunggulan seperti berikut:

  • Dibuat oleh Zend, pengembang engine PHP
  • Dibangun diatas teknologi php 5
  • Lisensi Open Source berbasis BSD yang fleksibel baik untuk pengembangan aplikasi open source maupun komersial
  • Dokumentasi lengkap (lebih dari 500 halaman)
  • Proses pengembangan Zend Framework menyertakan unit test yang lengkap, mencakup 84% kode yang ada
  • Library yang menyediakan fungsi yang lengkap sehingga hampir semua kebutuhan pengembangan aplikasi web dapat terpenuhi
  • Mendukung pengembangan aplikasi MVC
  • URL yang bagus dan search engine friendly

Macam-macam library yang disediakan oleh Zend Framework:

  • Core Infrastructure
    • Zend_Cache, Zend_Config, Zend_Console_Getopt, Zend_Log, Zend_Memory
    • Zend_Debug, Zend_Environment, Zend_Loader, Zend_Registry, Zend_Version
    • Zend_Filter, Zend_Validate
  • Documentation
    • Improved correctness, readability, and more examples
    • Additional coverage by translation teams
    • Web application development tutorial
  • Internationalization (i18n) & Localization (l10n)
    • Zend_Date
    • Zend_Locale
    • Zend_Measure
    • Zend_Translate
  • Mail, Formats, & Search
    • Zend_Json, Zend_Pdf
    • Zend_Mail, Zend_Mime
    • Zend_Search_Lucene
  • Model-View-Controller (MVC)
    • Zend_Controller, Zend_Controller_Action, Zend_Controller_Dispatcher, Zend_Controller_Plugin, Zend_Controller_RewriteRouter, Zend_View
    • Zend_Http_Request, Zend_Http_Response
  • Web & Web Services
    • Consuming services: Zend_Feed, Zend_Rest_Client, Zend_Service, Zend_XmlRpc_Client, Zend_Gdata, Zend_Http_Client
    • Exposing services: Zend_Http_Server, Zend_Rest_Server, Zend_Server_Documentor, Zend_Server_Reflection, Zend_Soap_Server, Zend_XmlRpc_Server
    • Zend_Uri

Jadi hampir semua yang Anda perlukan sebagai pengembang aplikasi web masa depan (Web 2.0) telah disediakan oleh PHP.
Pertama kali bertemu dengan Zend, penulis merasa familiar dengan konsep framework ini, karena sedikit ada kemiripan dengan Struts di mana ada Controller, Action lalu konsep forward ke view yang sesuai.


Saturday, October 11, 2008

Koneksi PHP dengan Oracle

Dalam tutorial ini, kita akan menggunakan tabel oracle berikut sebagai source datanya. Nama tabel adalah test.

nama
kota
Prothelord
New York
Strawberi
Bangkok



Tujuan kita adalah menampilkan data nama dan kota dari tabel tersebut. Namun sebelum mulai, kamu perlu mencari informasi terlebih dahulu tentang informasi login ke Oracle yang biasanya disebut dengan TNS name (kamu bisa bandingkan dengan user, password dan IP dariMySQL server). TNS name terdiri dari :

- IP server Oracle
- Port yang dipakai (kalau MySQL 3306, ingat kan?)
- SID
- User
- Password
Cobalah tanyakan sama Oracle admin di tempatmu tentang informasi tersebut.

Kalau sudah dapat, cobalah edit program berikut dengan konfigurasi TNS Name yang kamu peroleh dari admin Oracle kamu. Dalam contoh kali ini, kita menggunakan konfigurasi TNS name sebagai berikut:

- IP: 10.2.2.2
- Port : 1523
- SID : TEST
- User : namamu
- Password : pwd

Berikut contoh program untuk mengakses tabel Oracle:


”) ;
}
ocilogoff($c1) ;
?>
Setelah selesai, simpanlah dengan nama coba_oracle.php dan panggil dari browser. Kamu seharusnya akan melihat hasil sebagai berikut :


Prothelord,New York
Strawberi,Bangkok


Dah, cuman gitu doang kok. Gampang yach ?

Selamat mencoba, dan semoga bermanfaat.

Perbedaan Class OOP dengan Fungsi

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

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

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

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

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

Mudah-mudahan bisa lebih clear.

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

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

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

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

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

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

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


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

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

menyembunyikan lokasi image

Image / gambar merupakan salah satu file yang wajib ada dalam sebuah website. Pernahkah kita menemukan adanya website yang tidak menggunakan image sama sekali? Pasti tidak bukan. Sekecil apapun, suatu image wajib hukumnya ada dalam suatu website. Pengunaan image pada website membuat source kode tempat image tersebut akan terlihat. Misalnya image tersebut kita letakkan pada folder “images”. Untuk melihat dimana seorang webmaster meletakkan image suatu gambar sangatlah mudah. Cukup dengan klik kanan pada image tersebut lalu pilih menu properties. Secara otomatis akan terlihat di folder mana webmaster tersebut meletakkan image.

Hal ini tentu membuat para webmaster penasaran bagaimana cara menyembunyikan source kode image tersebut. Nah mari kita belajar cara menyembunyikan lokasi image dengan PHP.

Keterangan lebih lanjut tentang artikel ini silahkan download disini


Saturday, September 20, 2008

Membuat Zip dengan PHP

Awalnya penulis penasaran dengan Joomla bagaimana cara Joomla mengekstrak file ZIP. Contohnya pada saat kita menginstall themes baru di Joomla. Kita cukup memasukkan file zip dan secara otomatis Joomla akan mengekstraknya. Nah, disinilah penulis mencoba mengutak-atik isi joomla, Tetapi tidak bisa menemukan script apa yang dipakai joomla untuk mengekstrak ZIP tersebut. Penulis mencoba mencari di google, bertanya sana-sini, tetapi tetap tidak bisa menemukan cara membuat zip dengan php. Akhirnya penulis menyerah.

Ingin tau lebih lanjut, Silahkan Download Sourcenya disini...


Sunday, August 24, 2008

Progress Bar dengan PHP

Anda tentunta sudah tau akan progress bar. Disini Saya akan memberikan anda source code untuk ini. Untuk tanpilannya sebagai berikut:


Anda bisa mendownload code lengkapnya disini

Thursday, August 21, 2008

Multi Languagedengan PHP

Banyak website yang memberikan kemudahan bagi para visitornya untuk mengerti dan paham tentang isi website mereka. Salah satunya adalah menyediakan fitur Multi language. Multi Language artinya lebih dari 1 bahasa. Jadi dengan mengadopsi beberapa bahasa, suatu website dapat memancing visitor dari berbagai negara untuk berkunjung ke website tersebut.

Bagaimana cara membuat Multi language tersebut? Sebenarnya cara membuatnya
sangat mudah. Yang diperlukan adalah file yang berisi variabel-variabel bahasa
tersebut. Contoh berikut merupakan script dengan bahasa indonesia dan bahasa
inggris.

english.php

<?php
$home = "Home";
$faq = "FAQ";
$tes = "Test English";
?>

indonesian.php

<?php
$home = "Menu Utama";
$faq = "Pertanyaan dan Jawaban";
$tes = "Tes Bahasa Indonesia";
?>

Setelah melihat kedua script diatas, Saya yakin Pembaca pasti sudah paham langkah
apalagi yang selanjutnya dilakukan. Langkah selanjutnya adalah membuat session
yang akan meng-includekan file-file diatas pada setiap halaman web yang akan
kita buat.

<?php
session_start();
$_SESSION['lang'] = $a;
?>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>
<form name="form1" method="post" action="?lang=">


Ganti Bahasa :

<select name="menu1" onChange="MM_jumpMenu('parent',this,0)">
<?php
if(($_GET['lang'] == "indonesian") || (empty($_GET['lang']))) {
?>
<option value="?lang=indonesian" selected>Indonesian</option>
<option value="?lang=english">English</option>
<?php
} else {
?>
<option value="?lang=indonesian">Indonesian</option>
<option value="?lang=english" selected>English</option>
<?php
} // end else
?>
</select>
</form>
<p>
<?php
if($_GET['lang'] == "english") {
$a = include "language/english.php";
} else if ($_GET['lang'] == "indonesian") {
$a = include "language/indonesian.php";
} else {
$a = include "language/indonesian.php";
}
print "$language $home<br>$faq<br>$tes";
?>

Penjelasan kode diatas :

Pada indonesian.php dan english.php kita variabelkan kata-kata yang ingin kita
masukkan ke dalam web. Dalam contoh diatas saya menggunakan 3 kata yakni home,faq,dan
tes. (Ingat.!!! Script diatas hanya contoh. Anda bisa kembangkan sendiri. Karena
setiap orang mempunyai gaya memprogram yang berbeda). Pada index.php kita buat
pilihan. Jika pilihannya bahasa indonesia, maka Session akan meng-include file
indonesian.php dan sebaliknya Jika pilihannya bahasa inggris, maka Session akan
meng-include file english.php. Anda dapat menambah-nambah sendiri bahasa yang
lain.


Untuk lebih memudahkan, Silahkan download Source contoh programnya disini

Thursday, August 7, 2008

Membuat Grafik Data Vertikal dengan PHP

Membuat Grafik Data Vertikal dengan PHP


dengan format Graphic Batang

ni cara bikin grafik sederhana tanpa gambar di PHP, dengan bentuk vertikal

pertama kita butuh sql data dari database:
bikin database, dengan nama: graph_dbase

ni bwat table SQL na:

Code:

CREATE TABLE `report_toko` (
`id` int(11) NOT NULL auto_increment,
`nama_toko` varchar(255) NOT NULL default '',
`laba` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Dumping data for table `report_toko`
--

INSERT INTO `report_toko` VALUES (1, 'Toko A', 100000);
INSERT INTO `report_toko` VALUES (2, 'Toko B', 25000);
INSERT INTO `report_toko` VALUES (3, 'Toko C', 15000);
INSERT INTO `report_toko` VALUES (4, 'Toko D', 5000);


wuki singkat saja, gw mao bikin koneksi dlo:

Code:

$varData = array('localhost', 'root', '', 'graph_dbase');
list($host, $user, $pass, $db) = $varData;
$con = mysql_connect($host, $user, $pass);
mysql_select_db($db, $con) or die('ERROR DBASE CON');


ambil query untuk jumlah terbesar dari laba (MAX) dan total seluruh laba (SUM) dalam baris table:

Code:
$qry = mysql_query("SELECT * FROM report_toko") or die('ERROR REPORT DATA');
//ambil data MAX dari laba
$max = mysql_query("SELECT MAX(laba) FROM report_toko") or die('ERROR MAX DATA');
list ($most_value) = mysql_fetch_row($max);
mysql_free_result($max);

//jumlahkan (SUM) seluruh nilai laba dalam baris data sebagai ttlLaba
$sum = mysql_query("SELECT SUM(laba) AS ttlLaba FROM report_toko") or die('ERROR SUM DATA');
$ttl = mysql_fetch_array($sum);


sebagai keluaran data, gw memanfaatkan table bwat bikin graphic na menjadi vertical. Jadi kaga make fungsi2 gambar lib dari PHP.

Code:





">





%
px; line-height:1px; font-size:1px;">








sebagai penentu tinggi dari graphic na ada pada baris:

Code:
$graphLineValue = round(($row[laba] * 100) / $most_value);

NOTE: round = pembulatan digit angka dibelakang koma

sedangkan untuk perhitungan nilai persentase na ada pada baris:

Code:
$percent = round(($row[laba] * 100) / $ttl[ttlLaba], 2);


jadi kalo di preview di browser, jadi ke gini:



Download disini bwat source code na

Lebih dalam dengan OOP



Apa sih OOP itu ? Untuk apa ?
OOP singkatan dari Object Oriented Programming, keistimewaan dalam pembungkusan memudahkan para programmer mengarungi lautan kehidupan dalam meng-coding ria bersama istri tercintanya, sebuah mesin penuh dengan baut, komputer :D~. Ada beberapa istilah inti dari keistimewaan OOP ini, yang paling menarik adalah class, property, method, inheritance, polymorphisme, dan encapsulation. Apa itu ?!! :D~
Class ini merupakan template untuk objek yang akan dibuat nantinya. Kalau diambil contoh dalam kehidupan sehari-hari. Hmmmm … contoh kasusnya memasak mie. :D~.
Templatenya adalah satu keutuhan cara memasak si mie tersebut.
Sedangkan property-nya atau variable adalah berapa banyak bumbu pedas yang dibutuhkan, berapa banyak minyak yang dibutuhkan, berapa banyak air yang dibutuhkan, berapa banyak bawang gorengnya, etc.
Method sendiri itu sama halnya dengan fungsi yakni bagaimana caranya mie dimasak. Seperti, apakah bumbunya akan dimasukkan kedalam mangkuk terlebih dahulu, atau apakah bumbunya akan di satukan dengan air yang berada di dalam panci. Atau mungkin bisa saja bumbunya langsung dimasukkan kedalam perut yang memasaknya. :D~ ( kebanyakan coding jadi stress ) :D
Inheritance, dalam istilah bahasa indonesianya dikenal dengan turunan. Jelasnya turunan ini berasal dari suatu kelas induk. Kalo diambil contoh dalam memasak mie, masing-masing orang punya keunikan tersendiri dalam memasak mie, seperti dalam memasak mie ada orang yang mengikuti aturan memasak mie, ada juga yang senang di tambah dengan telur, atau mungkin kalo ada yang suka bisa saja martabak keju dimasukkan kedalam mie tersebut. Tapi penulis nggak yakin rasanya, akan seperti apa nantinya :D~~
Sedangkan polymorphisme itu gaya dalam memasak mie itu sendiri, bisa saja ketika memasak mie telurnya itu ditambah dengan kecap manis, atau sambal pedas, atau mungkin terasi. Bisa saja. Iya kan ??~ :D Atau juga, ada yang suka mienya pedas, atau mungkin saja ada yang senang dengan mie rasa manis, mie ditambah gula-gula. Semua bisa saja terjadi.

Nah dari situ timbul satu pertanyaan besar, sebenarnya OOP itu untuk apa sih ? Apakah OOP itu sebagai standarisasi cara memasak mie. :D~
OOP sering digunakan dalam pembuatan aplikasi besar, dimana ketika penambahan fitur terbaru fungsi encapsulation atau pembungkusan dalam class ini sangat berperan penting. Keuntungan lain adalah maintenance ketika ada bug yang bercokol dalam coding ataupun maintenance jenis lain. Dengan mudah terkontrol. Dan menghasilkan coding yang lebih efisien. Contoh nyata OOP yaitu button. Turunan button seperti bit button, push button dan lain-lain. Dimana button-button tersebut sebenarnya adalah bentuk lain dari button induk yang telah di berikan fitur-fitur tambahan.

Implementasinya sudah jelas bukan ? Sekarang penulis akan memberikan sedikit contoh coding menggunakan OOP dalam pembuatan guest book. Dan juga akan dikenalkan sedikit mySQLi API yakni library atau pustaka yang digunakan oleh OOP dalam menghandle database nantinya.

Yups, langsung saja.
Pertama, buat databasenya terlebih dahulu.

File db.sql :
create database oop1 ;
use oop1 ;
create table gb ( id int(5) auto_increment primary key , nama varchar(50), email varchar(50), lokasi varchar(75), komentar text );


Kedua file class.konek.db.php :

/*
ILMUWEBSITE E-LEARNING COMMUNITY
Tutorial PHP - Object Oriented Programming
by : Al-k [ Loka Dwiartara ]
email : alkemail@gmail.com
homepage : http://www.ilmuwebsite.com
*/

// Class atau Template
class konek_ke_database
{

// property
private $host;
private $username;
private $password;
private $koneksinya;
private $database;

// method
function __construct($hostnya, $usernamenya, $passwordnya)
{
$this->host = $hostnya ;
$this->username = $usernamenya ;
$this->password = $passwordnya ;
$this->koneksinya = mysql_connect($this->host, $this->username, $this->password) or die("mySQL Errorrojing !!!");
}

function databasenya($pilihdatabase)
{
$this->database = $pilihdatabase;
}

public function seleksi_database()
{
mysql_select_db($this->database, $this->koneksinya ) or die ("Nggak bisa konek euy!!!");
header("location: index.php");
}

}

?>

Kemudian file class.isi.db.php, script ini yang nantinya sebagai tulang punggung antara form isian, dan databasenya :



/*
ILMUWEBSITE E-LEARNING COMMUNITY
Tutorial PHP - Object Oriented Programming
by : Al-k [ Loka Dwiartara
email : alkemail@gmail.com
homepage : http://www.ilmuwebsite.com
*/

require_once "class.konek.db.php";

// Class
class displayDatabase extends konek_ke_database
{

// property
private $perintah;
private $nama;
private $email ;
private $lokasi ;
private $isikomentar;

// method
public function filter_database($nm_user, $email_user, $lokasi_user, $komentar_user)
{
$this->nama = wordwrap(strip_tags($nm_user, ''), 80,"n",1);
$this->email = wordwrap(strip_tags($email_user, ''), 80,"n",1);
$this->lokasi = wordwrap(strip_tags($lokasi_user, ''), 80,"n",1);
$this->isikomentar = wordwrap(strip_tags($komentar_user, ''), 80,"n",1);
}

function insert_database($tabel)
{
$this->perintah = "insert into $tabel values ('','$this->nama', '$this->email', '$this->lokasi', '$this->isikomentar')";
$run_perintah = mysql_query($this->perintah);
if ($run_perintah)
{
// print "Isi Database Berhasil";
}
}

}

?>

Dan terakhir adalah file index.php :


/*
ILMUWEBSITE E-LEARNING COMMUNITY
Tutorial PHP - Object Oriented Programming
by : Al-k [ Loka Dwiartara ]
email : alkemail@gmail.com
homepage : http://www.ilmuwebsite.com
*/

require_once "class.isi.db.php";

$nama = $_POST['nama'];
$email = $_POST['email'] ;
$lokasi = $_POST['lokasi'];
$komentar = $_POST['komentar'];

if ($_REQUEST['comment'] == "yes")
{

if (ISSET($_POST['nama']))
{
$mahasiswa = new displayDatabase("localhost","root","");
$mahasiswa->databasenya("oop1");
$mahasiswa->seleksi_database();
$mahasiswa->filter_database($nama,$email,$lokasi,$komentar);
$mahasiswa->insert_database("gb");
}

}

else
{
// Database dalam OOP
// mySQLi API

$mysqli = new mysqli("localhost", "root", "", "oop1");
if (mysqli_connect_errno())
{
echo("Nggak bisa konek !!!".mysqli_connect_error());
exit();
}

$hasil = $mysqli->query("select * from gb");
while ($data = $hasil->fetch_object())
{
echo "$data->nama
$data->email
$data->lokasi
";

}

}


?>

>
GuestBook


Isi Komentar :





Nama:
Email:
Lokasi:
Isinya:

style='color: #000000; border: 1px solid #000000; background-color: #DFDFDF'>





Dari situ, penulis akan mencoba menjelaskan script tersebut, namun hanya mengambil garis besarnya saja. Dimulai dengan script class.konek.db.php. Disarankan, untuk kedepannya dalam pembuatan kelas diletakan dalam file yang berbeda, hal ini sangat memudahkan dalam maintenance nantinya.
Yups, dalam file class.konek.db.php terdapat satu kelas konek_ke_database. Di dalamnya terdapat property :
$host, $username, $password, $koneksinya, dan $database. Lengkapnya seperti ini :

….
class konek_ke_database
{
private $host;
private $username;
private $password;
private $koneksinya;
private $database;
….

Ada keyword private disana, modifier private ini hanya dapat di akses oleh method yang berada dalam kelas ini, maupun turunannya. Private konsepnya hampir sama dengan hak akses suatu file, metodenya saja yang berbeda. Kita telusuri lagi lebih jauh, penggunaan seperti pengambilan isi atau pun assignment ( pengisian ) property dalam suatu method/fungsi, cukup dengan menggunakan keyword $this->property-nya.

Script contohnya :

function __construct($hostnya, $usernamenya, $passwordnya)
{
$this->host = $hostnya ;
$this->username = $usernamenya ;
$this->password = $passwordnya ;


Ini berarti isi property $host dengan isi variable $hostnya.

Sebagai Contoh :

function __construct("localhost", "root", "")
{
$this->host = $hostnya ;
$this->username = $usernamenya ;
$this->password = $passwordnya ;


echo $this->host ;

hasilnya menjadi

localhost

Gimana ? Gampang kan ! Ada satu lagi istilah aneh di sana. __construct.


function __construct($hostnya, $usernamenya, $passwordnya)
{


Ini merupakan method yang otomatis di eksekusi ketika pembuatan objek berlangsung. Penggunaanya seperti ini :

….

class displayDatabase
{

….

function __construct($hostnya, $usernamenya, $passwordnya)
{
$this->host = $hostnya ;
$this->username = $usernamenya ;
$this->password = $passwordnya ;
$this->koneksinya = mysql_connect($this->host, $this->username, $this->password) or die("mySQL Errorrojing !!!");
}

}

$mahasiswa = new displayDatabase("localhost","root","");

Yups, untuk selanjutnya cukup mudah dipelajari karena konsepnya sama saja dengan pemrogaman procedural yang biasanya.

Nah Selanjutnya kita pindah ke script class.isi.db.php :

require_once "class.konek.db.php";

class displayDatabase extends konek_ke_database
{
private $perintah;
private $nama;
private $email ;
private $lokasi ;
private $isikomentar;

public function filter_database($nm_user, $email_user, $lokasi_user, $komentar_user)
{
$this->nama = wordwrap(strip_tags($nm_user, ''), 80,"n",1);
$this->email = wordwrap(strip_tags($email_user, ''), 80,"n",1);
$this->lokasi = wordwrap(strip_tags($lokasi_user, ''), 80,"n",1);
$this->isikomentar = wordwrap(strip_tags($komentar_user, ''), 80,"n",1);
}


Di sini jelas terlihat jika class displayDatabase extends konek_ke_database, atau dengan kata lain kelas displayDatabase adalah subclass atau anak turunan dari kelas konek_ke_database. Dalam penggunaannya cukup dengan menggunakan modifier extends di tambah dengan class induk dibelakang kelas turunannya.

Nah penulis akan loncat lagi ke script index.php. Di sini beberapa kalimat yang diambil dari mySQLi api. Sebuah pustaka OOP pada PHP 5 dalam menghandle database. Caranya lebih cepat, mudah, dan tentunya efisien.

$mysqli = new mysqli("localhost", "root", "", "oop1");
if (mysqli_connect_errno())
{
echo("Nggak bisa konek !!!".mysqli_connect_error());
exit();
}

$hasil = $mysqli->query("select * from gb");
while ($data = $hasil->fetch_object())
{
echo "$data->nama
$data->email
$data->lokasi
";

}

Untuk membuat suatu koneksi cukup dengan membuat instance/objek baru.
$mysqli = new mysqli("localhost", "root", "", "oop1");

Kemudian berikan perintah dalam bentuk query.
$hasil = $mysqli->query("select * from gb");

Dan tampilkan isi databasenya
while ($data = $hasil->fetch_object())
{
echo "$data->nama
$data->email
$data->lokasi
";

}

Lebih mudah tentunya !! Yups, cukup sekian mengenai tutorial “Lebih dalam dengan OOP episode 1”. Anda bisa mengembangkan kelas-kelas tersebut dengan mudah tentunya.

Selanjutnya akan dijelaskan lebih jauh penggunaan OOP untuk menghandle database. Sekian. Terima Kasih.

File-file tersebut dapat di download disini.