Jumat, 06 Januari 2012

Membuat Web Hosting Sendiri Dari Local PC

Banyak pengunjung blog ini yang menanyakan ke saya, apakah bisa aplikasi web yang sudah dibuat dan diinstall di local web server (PC local) dengan XAMPP atau WAMP atau sejenisnya diakses dari luar atau dari internet? Tentu saja bisa, dengan sedikit setting di PC kita maka aplikasi web yang ada di PC anda bisa diakses dari luar atau internet, tidak hanya dari local PC atau LAN.
Nah.. bagaimana cara setting PC kita menjadi web hosting sehingga bisa diakses dari luar melalui internet? Simak artikel berikut ini dengan baik.

Supaya PC kita menjadi web hosting yang bisa diakses dari luar via internet, perangkat yang dibutuhkan adalah modem internet. Dalam artikel ini, cara setting hanya akan dicontohkan pada modem DLINK Wireless ADSL Router seri DSL 2640T, karena kebetulan saya hanya punya modem ini untuk nge-net :-) Untuk modem yang lain silakan diujicoba sendiri.
Saran saya, untuk membuat Web Hosting dari PC sendiri ini, pastikan koneksi internetnya stabil dan dengan paket unlimited. Nah… di sini saya akan menggunakan koneksi internet Speedy yang kebetulan di rumah saya lumayan stabil. Saya menggunakan Speedy dengan paket Socialia (bukan promosi lho ya)
OK.. kita mulai saja cara settingnya. Oya, pastikan di PC Anda sudah terinstall web server, bisa menggunakan XAMPP, AppServ, WAMP atau yang lain.
Nah… langkah pertama, kita setting modem nya dahulu. Kita akan mensetting modem DLINK nya sebagai Bridge. Untuk mensettingnya, silakan masuk ke settingan modem kemudian pilih WAN Setting. Selanjutnya pilih ‘Bridge Mode‘. Kemudian simpan konfigurasinya.
Setting Hosting Localhost
OK. Modem sudah kita buat sebagai Bridge, selanjutnya kita buat koneksi Speedy di PC kita via Broadband Connection PPPoE. Caranya adalah, masuk ke Control PanelNetwork Connection. Lalu pilih Create Connection. Selanjutnya ikuti langkah-langkah sesuai gambar berikut ini
Setting Hosting Localhost
Setting Hosting Localhost
Setting Hosting Localhost
Setting Hosting Localhost
Masukkan username dan password Speedy Anda pada kotak yang disediakan.
Setting Hosting Localhost
Nah… setting koneksi ke Speedy via Broadband Connection PPPoE sudah selesai. Selanjutnya kita lakukan koneksi ke Speedy nya dengan mengklik STARTCONNECT TO, pilih Speedy
Setting Hosting Localhost
Setelah koneksi dengan Speedy berhasil, langkah berikutnya adalah melihat IP Address dari PC kita. Caranya adalah dengan masuk ke Command Prompt Windows, lalu ketikkan perintah: ipconfig
C:\ipconfig
Setelah itu harusnya muncul informasi IP Address PC Anda seperti gambar berikut ini
Setting Hosting Localhost
Dalam contoh gambar di atas, muncul IP Address: 180.246.94.195. Nah… nomor IP itulah yang nanti diakses via internet untuk mengakses PC Anda (IP Public). Tinggal ketikkan saja nomor IP tersebut di browser maka otomatis akan mengakses web server yang ada di PC Anda.
Oya.. kalau Anda menggunakan Speedy Socialia seperti saya, maka IP Address tersebut berbeda-beda setiap kali koneksi ke Speedy dilakukan. Hal ini dikarenakan IP Address tersebut bersifat dinamis (Dynamic IP). Kecuali kalau Anda memiliki IP Statis (Static IP) maka IP tersebut fixed selamanya. Untuk mendapatkan static IP, silakan menghubungi ISP Anda. Setahu saya untuk mendapatkan static IP itu kita harus membayar dalam periode tertentu, misalnya tahunan atau bulanan.
OK… selamat mencoba ya.

Kamis, 05 Januari 2012

Membuat FAQ dengan PHP dan MySQL

Dalam kesempatan ini saya akan mencoba untuk menjelaskan bagaimana membuat fasilitas FAQ (Frequently Asked Questions). FAQ merupakan fasilitas yang berupa daftar pertanyaan dan jawaban yang sering ditanyakan oleh user tentang suatu hal. Fasilitas ini dapat dibuat dengan mudah menggunakan PHP dan MySQL.
Mengapa harus menggunakan PHP dan MySQL, toh… kita bisa membuatnya secara statis tanpa perlu menggunakan programming. Dengan PHP dan MySQL kita bisa membuat fasilitas FAQ yang interaktif dan memudahkan administrator dalam mengelola daftar pertanyaan dan jawaban yang ada. MySQL dalam pembuatan FAQ ini diperlukan untuk menyimpan data daftar pertanyaan dan jawaban, sedangkan PHP untuk mewujudkan keinteraktifan dalam pengelolaannya.


Untuk membuat FAQ dengan PHP dan MySQL, langkah pertama kita coba desain tabel untuk menyimpan data pertanyaan dan jawaban. Sebagai contoh, kita bisa membuat struktur tabel sederhana berikut ini:


CREATE TABLE faq

(
id   INT AUTO_INCREMENT,
question TEXT,
answer TEXT,
PRIMARY KEY(id)

)


Karena pada dasarnya FAQ ini hanya berisi pertanyaan dan jawaban, maka tabel harus memuat kedua hal tersebut. Pada tabel di atas, field ‘ID’ digunakan sebagai pembeda antar satu record berisi sebuah pertanyaan dan jawaban dengan record yang lain. Karena merupakan kode pembeda, maka ID ini harus unik oleh karena itu kita set sebagai kunci primer (primary key). Anda boleh menambahkan field tambahan yang lain bila diperlukan, misalkan ditambahkan tanggal dan waktu kapan pertanyaan dan jawaban itu dikirim atau dipublish.

Setelah kita mendesain tabelnya, berikutnya kita akan mendesain aplikasinya. Untuk keperluan mengisi data pertanyaan dan jawaban, kita buat form terlebih dahulu.

form.htm


<h1>Tambah FAQ</h1>
<form method="post" action="submit.php">
Pertanyaan <br />

<textarea name="question" rows="5" cols="30"></textarea><br />
Jawaban <br />
<textarea name="answer" rows="5" cols="30"></textarea><br />
<input type="submit" name="submit" value="Submit" /></td></tr>
</table>

</form>


Tampilan form tambah FAQ di atas tampak di bawah ini

Photobucket

Selanjutnya kita akan membuat script untuk memproses FAQ yang diisikan melalui form di atas. Proses yang dilakukan script ini adalah memasukkannya ke dalam database.

submit.php


<?php
// membaca pertanyaan dari form
$question = $_POST['question'];

// membaca jawaban dari form
$answer = $_POST['answer'];

// koneksi ke mysql
mysql_connect(dbhost, dbuser, dbpass);

mysql_select_db(dbname);

// query untuk memasukkan FAQ ke tabel DB
$query = "INSERT INTO faq(question, answer) VALUES('$question', '$answer') ";

$hasil = mysql_query($query);

// konfirmasi gagal tidaknya memasukkan FAQ ke tabel
if ($hasil) echo "Tambah FAQ sukses";

else echo "Tambah FAQ gagal";
?>


Mudah bukan membuat scriptnya. OK… demikianlah cara membuat script FAQ. Semoga ada manfaatnya buat Anda.

Eit… kayaknya ada yang ketinggalan ya. Oh iya… hampir lupa bagaimana dengan script untuk menampilkan daftar FAQ nya? he.. he 3x padahal yang jadi point penting adalah script ini ya.

OK.. sekarang kita buat script untuk menampilkan daftar FAQ nya.

faq.php


<?php

// koneksi ke mysql
mysql_connect(dbhost, dbuser, dbpass);

mysql_select_db(dbname);

?>

<h1>Daftar FAQ</h1>

<?php

$query = "SELECT * FROM faq";
$hasil = mysql_query($query);

echo "<ul>";
while ($data = mysql_fetch_array($hasil))

{
echo "<li>".$data['question']."</li>";

}
echo "</ul>";
?>


Nah.. script di atas baru akan menampilkan daftar pertanyaan FAQ nya. Trus… untuk jawabannya bagaimana? Anda dapat langsung menampilkan pertanyaan dan jawabannya sekaligus dalam script di atas seperti pada script yang dimodifikasi berikut ini

faq.php


<?php

// koneksi ke mysql
mysql_connect(dbhost, dbuser, dbpass);

mysql_select_db(dbname);

?>

<h1>Daftar FAQ</h1>

<?php

$query = "SELECT * FROM faq";
$hasil = mysql_query($query);

echo "<ul>";
while ($data = mysql_fetch_array($hasil))

{
echo "<li><em>".$data['question']."</em><br />".$data['answer']."</li>";

}
echo "</ul>";
?>


Dalam script di atas, pertanyaan ditampilkan secara miring (italic) menggunakan tag dan jawabannya ditampilkan di bawahnya.

Selain teknik di atas, Anda dapat juga memunculkan jawabannya dengan mengklik link pada pertanyaan yang diinginkan. Untuk melakukan hal ini, ya… cukup tambahkan link dalam setiap list pertanyaan. Linknya bisa diarahkan ke script lain atau ke script ini sendiri. Dalam contoh ini kita arahkan link ke script ini sendiri (menggunakan $_SERVER['PHP_SELF']). Oya.. jangan lupa dalam link tersebut diberikan parameter berupa ID dari pertanyaannya. ID ini nanti digunakan sebagai kriteria untuk mencari jawabannya.


faq.php


<?php

// koneksi ke mysql
mysql_connect(dbhost, dbuser, dbpass);

mysql_select_db(dbname);

?>

<h1>Daftar FAQ</h1>

<?php

$query = "SELECT * FROM faq";
$hasil = mysql_query($query);

echo "<ul>";
while ($data = mysql_fetch_array($hasil))

{
echo "<li><a href='".$_SERVER['PHP_SELF']."?id=".$data['id']."'>".$data['question']."</a></li>";

}
echo "</ul>";
?>


Trus… enaknya detail pertanyaan dan jawaban setelah kita klik link FAQnya akan ditampilkan di mana ya? Coba kita tampilkan di atas daftar FAQ saja deh….

faq.php


<?php

// koneksi ke mysql
mysql_connect(dbhost, dbuser, dbpass);

mysql_select_db(dbname);

?>

<h1>Daftar FAQ</h1>

<?php


// menampilkan detail FAQ (pertanyaan dan jawaban) setelah link diklik
// blok dalam IF ini hanya akan dijalankan bila terdapat parameter id pada URL, misal: http://.../faq.php?id=...

if ($_GET['id'])
{

// membaca parameter id FAQ dari link
$id = $_GET['id'];

$query = "SELECT * FROM faq WHERE id = $id";

$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);

echo "<p>Pertanyaan : ".$data['question']."</p>";
echo "<p>Jawaban : ".$data['answer']."</p>";

}

// menampilkan daftar FAQ 
$query = "SELECT * FROM faq";
$hasil = mysql_query($query);

echo "<ul>";
while ($data = mysql_fetch_array($hasil))

{
echo "<li><a href='".$_SERVER['PHP_SELF']."?id=".$data['id']."'>".$data['question']."</a></li>";

}
echo "</ul>";
?>


Apabila script faq.php di atas dijalankan, maka akan muncul tampilan berikut ini (dengan asumsi data faq sudah dientri sebelumnya)

Photobucket

Sedangkan berikut ini adalah tampilan ketika sebuah link FAQ diklik untuk melihat detailnya


Photobucket

Nah.. jadi deh script FAQ nya. Lumayan bukan ?? Silakan nanti dimodifikasi sendiri scriptnya. Di sini saya hanya memberikan konsep dan ide pembuatannya saja secara sederhana. Anda bisa menambahkan fitur lain, misalnya fasilitas untuk edit data FAQ dan fasilitas hapus FAQ.

Sebagai referensi, Anda bisa membaca artikel tentang cara membuat script untuk edit data dan penghapusan data yang pernah saya tulis dalam blog ini.

Membuat Modul Polling Dengan PHP

Biasanya dengan mudah kita mendapatkan source2 widget polling dari om goOgle.Yang kali ini ingin saya paparkan adalah bagaimana caranya kalau kita ingin ” Membuat module Polling sendiri ? “.Dengan Php tentunya.Sebenarnya menggunakan Ajax juga bisa,tapi kita coba pelajari saja dulu yah dengan Php Script yang menggunakan database Sql server.




Langkah pertama kita siapkan dulu DataBase untuk php nya.

01create database poll;<br />
02use poll;<br />
03create table poll_results (<br />
04 candidate varchar(30),<br />
05 num_votes int<br />
06);<br />
07insert into poll_results values<br />
08 ('Bagus', 0),<br />
09 ('Lumayan', 0),<br />
10 ('Kurang Bagus', 0)<br />
11; </p>
12<p>grant all privileges<br />
13on poll.*<br />
14to poll@localhost<br />
15identified by 'poll';


Setelah kita membuat Database(db)nya,selajutnya kita siapkan form untuk Pengisian data vottingnya.

vote.html

01&amp;lt;html&amp;gt;<br />
02&amp;lt;head&amp;gt;<br />
03 &amp;lt;title&amp;gt;Polling&amp;lt;/title&amp;gt;<br />
04&amp;lt;head&amp;gt;<br />
05&amp;lt;body&amp;gt;<br />
06&amp;lt;h1&amp;gt;Polling&amp;lt;/h1&amp;gt;<br />
07&amp;lt;p&amp;gt;Bagaimana Menurut Kamu Tampilan Blog Ini?&amp;lt;/p&amp;gt;<br />
08&amp;lt;form method=post action=&quot;show_poll.php&quot;&amp;gt;<br />
09&amp;lt;input type=radio name=vote value=&quot;bagus&quot;&amp;gt;Bagus&amp;lt;br /&amp;gt;<br />
10&amp;lt;input type=radio name=vote value=&quot;Lumayan&quot;&amp;gt;Lumayan&amp;lt;br /&amp;gt;<br />
11&amp;lt;input type=radio name=vote value=&quot;Kurang Bagus&quot;&amp;gt;Kurang Bagus&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;<br />
12&amp;lt;input type=submit value=&quot;Show results&quot;&amp;gt;<br />
13&amp;lt;/form&amp;gt;<br />
14&amp;lt;/body&amp;gt;


ok..form pengisian votting sudah kita buat,selanjutnya apa bro ? selanjutnya kita akan buat Php Untuk Menampilkan Data Votting Yang Sudah Berhasil di hasilkan oleh Sql Server.

Save As show_poll.php

001&lt;?php<br />
002/*******************************************<br />
003Query Database untuk mendapatkan info polling<br />
004*******************************************/</p>
005<p>$vote=$_REQUEST['vote'];</p>
006<p>// membuat koneksi ke database </p>
007<p>if (!$db_conn = mysql_connect('localhost', 'poll', 'poll'))<br />
008{<br />
009 echo 'Could not connect to db&amp;lt;br /&amp;gt;';<br />
010 exit;<br />
011};<br />
012@mysql_select_db('poll');</p>
013<p>if (!empty($vote))<br />
014{<br />
015 $vote = addslashes($vote);<br />
016 $query = &quot;update poll_results<br />
017 set num_votes = num_votes + 1<br />
018 where candidate = '$vote'&quot;;<br />
019 if(!($result = @mysql_query($query, $db_conn)))<br />
020 {<br />
021 echo 'Tidak Bisa Konek Ke Database&amp;lt;br /&amp;gt;';<br />
022 exit;<br />
023 }<br />
024};</p>
025<p>$query = 'select * from poll_results';<br />
026if(!($result = @mysql_query($query, $db_conn)))<br />
027{<br />
028 echo 'Tidak Bisa Konek Ke Database&amp;lt;br /&amp;gt;';<br />
029 exit;<br />
030}<br />
031$num_candidates = mysql_num_rows($result); </p>
032<p>$total_votes=0;<br />
033while ($row = mysql_fetch_object ($result))<br />
034{<br />
035 $total_votes +=  $row-&amp;gt;num_votes;<br />
036}<br />
037mysql_data_seek($result, 0);</p>
038<p>/*******************************************<br />
039 Kalkulasi Membuat Grapic Votting<br />
040*******************************************/</p>
041<p>putenv('GDFONTPATH=C:\WINDOWS\Fonts');<br />
042$width=500;        // mengatur lebar hasil image votting<br />
043$left_margin = 50;<br />
044$right_margin= 50;<br />
045$bar_height = 40;<br />
046$bar_spacing = $bar_height/2;<br />
047$font = 'arial';<br />
048$title_size= 16;<br />
049$main_size= 12;<br />
050$small_size= 12;<br />
051$text_indent = 10; </p>
052<p>$x = $left_margin + 60;<br />
053$y = 50;<br />
054$bar_unit = ($width-($x+$right_margin)) / 100;   </p>
055<p>$height = $num_candidates * ($bar_height + $bar_spacing) + 50;   </p>
056<p>/*******************************************<br />
057 Membuat Image hasil Votting<br />
058*******************************************/</p>
059<p>$im = ImageCreateTrueColor($width,$height);   </p>
060<p>$white=ImageColorAllocate($im,255,255,255);<br />
061$blue=ImageColorAllocate($im,0,64,128);<br />
062$black=ImageColorAllocate($im,0,0,0);<br />
063$pink = ImageColorAllocate($im,255,78,243); </p>
064<p>$text_color = $black;<br />
065$percent_color = $black;<br />
066$bg_color = $white;<br />
067$line_color = $black;<br />
068$bar_color = $blue;<br />
069$number_color = $pink;</p>
070<p>ImageFilledRectangle($im,0,0,$width,$height,$bg_color);   </p>
071<p>ImageRectangle($im,0,0,$width-1,$height-1,$line_color);   </p>
072<p>$title = 'Poll Results';<br />
073$title_dimensions = ImageTTFBBox($title_size, 0, $font, $title);<br />
074$title_length = $title_dimensions[2] - $title_dimensions[0];<br />
075$title_height = abs($title_dimensions[7] - $title_dimensions[1]);<br />
076$title_above_line = abs($title_dimensions[7]);<br />
077$title_x = ($width-$title_length)/2;<br />
078$title_y = ($y - $title_height)/2 + $title_above_line;<br />
079ImageTTFText($im, $title_size, 0, $title_x, $title_y,<br />
080 $text_color, $font, $title); Â </p>
081<p>ImageLine($im, $x, $y-5, $x, $height-15, $line_color);   </p>
082<p>/*******************************************<br />
083 Draw data ke graphic<br />
084*******************************************/</p>
085<p>while ($row = mysql_fetch_object ($result))<br />
086{<br />
087 if ($total_votes &amp;gt; 0)<br />
088 $percent = intval(round(($row-&amp;gt;num_votes/$total_votes)*100));<br />
089 else<br />
090 $percent = 0;</p>
091<p> $percent_dimensions = ImageTTFBBox($main_size, 0, $font, $percent.'%');<br />
092 $percent_length = $percent_dimensions[2] - $percent_dimensions[0];<br />
093 ImageTTFText($im, $main_size, 0, $width-$percent_length-$text_indent,<br />
094 $y+($bar_height/2), $percent_color, $font, $percent.'%'); Â </p>
095<p> if ($total_votes &amp;gt; 0)<br />
096 $right_value = intval(round(($row-&amp;gt;num_votes/$total_votes)*100));<br />
097 else<br />
098 $right_value = 0;</p>
099<p> $bar_length = $x + ($right_value * $bar_unit);   </p>
100<p> ImageFilledRectangle($im, $x, $y-2, $bar_length, $y+$bar_height, $bar_color);   </p>
101<p> ImageTTFText($im, $main_size, 0, $text_indent, $y+($bar_height/2),<br />
102 $text_color, $font, &quot;$row-&amp;gt;candidate&quot;); Â </p>
103<p> ImageRectangle($im, $bar_length+1, $y-2,<br />
104 ($x+(100*$bar_unit)), $y+$bar_height, $line_color);   </p>
105<p> ImageTTFText($im, $small_size, 0, $x+(100*$bar_unit)-50, $y+($bar_height/2),<br />
106 $number_color, $font, $row-&amp;gt;num_votes.'/'.$total_votes);</p>
107<p> $y=$y+($bar_height+$bar_spacing);<br />
108}   </p>
109<p>/*******************************************<br />
110 Image Option<br />
111*******************************************/<br />
112Header('Content-type:  image/png');<br />
113ImagePNG($im);   </p>
114<p>/*******************************************<br />
115 Hasil Akhir<br />
116*******************************************/<br />
117ImageDestroy($im);<br />
118?&gt;<br />


Nanti Hasil Untuk Votting Php Nya kira2 seperti gambar ini :

Sudah Selesai Kita membuat module Votting/polling dengan PHp,Mudah Bukan Membuatnya? jangan lupa juga untuk menyesuaikan parametter databasenya. 

Cara Mendeteksi Input Username yang Sama PHP

Bagaimana cara melakukan cek terhadap input username yang sama, karena username itu kan unik, artinya username tiap user harus berbeda?
Ya, betul sekali .. kalau dilihat dari struktur tabelnya, seharusnya username dijadikan sebagai kunci utama (Primary Key). Lihat gambar berikut:
Sehingga, misalnya ada user yang memasukkan username yang sudah dimiliki oleh user lain, maka data tersebut tentu tidak akan tersimpan di database. Mungkin, maksud Anda bagaimana cara memberitahukan user bahwa username tersebut sudah dimiliki oleh user lain dan berikan pemberitahuan kepadanya agar memasukkan username yang berbeda.

Oke, cara sederhananya bisa dilihat pada skrip berikut:

// Cek username di database
$cek_username=mysql_num_rows(mysql_query
("SELECT username FROM users
WHERE username='$_POST[username]'"));

// Kalau username sudah ada yang pakai
if ($cek_username > 0){
echo "Username sudah ada yang pakai. Ulangi lagi";
}
// Kalau username valid, inputkan data ke tabel users
else{
mysql_query("INSERT INTO users(username,
password,
nama_lengkap,
level)
VALUES('$_POST[username]',
'$_POST[password]',
'$_POST[nama_lengkap]',
'$_POST[level]')");

Script PHP untuk Membuat Report Format MS. Excel

OK… terlebih dahulu kita siapkan tabel dan recordnya.
view sourceprint?
1.CREATE TABLE nilaimhs(
2. nim varchar(10),
3. namaMhs varchar(30),
4. nilai int(11),
5. PRIMARY KEY(nim)
6.)
view sourceprint?
1.INSERT INTO nilaimhs VALUES
2.('M0197001', 'Faza Fauzan Kh.', 80),
3.('M0197002', 'Dwi Amalia Fitriani', 75),
4.('M0197003', 'Rosihan Ari Yuana', 45),
5.('M0197004', 'Nada Hasanah', 83),
6.('M0197005', 'Muh. Ahsani Taqwim', 90);

Setelah tabel dan record sudah siap, let’s write a PHP script. Ini dia scriptnya…
view sourceprint?
001.
002.
003.// nama file
004.
005.$namaFile = "report.xls";
006.
007.// Function penanda awal file (Begin Of File) Excel
008.
009.function xlsBOF() {
010.echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
011.return;
012.}
013.
014.// Function penanda akhir file (End Of File) Excel
015.
016.function xlsEOF() {
017.echo pack("ss", 0x0A, 0x00);
018.return;
019.}
020.
021.// Function untuk menulis data (angka) ke cell excel
022.
023.function xlsWriteNumber($Row, $Col, $Value) {
024.echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
025.echo pack("d", $Value);
026.return;
027.}
028.
029.// Function untuk menulis data (text) ke cell excel
030.
031.function xlsWriteLabel($Row, $Col, $Value ) {
032.$L = strlen($Value);
033.echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
034.echo $Value;
035.return;
036.}
037.
038.// header file excel
039.
040.header("Pragma: public");
041.header("Expires: 0");
042.header("Cache-Control: must-revalidate, post-check=0,
043. pre-check=0");
044.header("Content-Type: application/force-download");
045.header("Content-Type: application/octet-stream");
046.header("Content-Type: application/download");
047.
048.// header untuk nama file
049.header("Content-Disposition: attachment;
050. filename=".$namaFile."");
051.
052.header("Content-Transfer-Encoding: binary ");
053.
054.// memanggil function penanda awal file excel
055.xlsBOF();
056.
057.// ------ membuat kolom pada excel --- //
058.
059.// mengisi pada cell A1 (baris ke-0, kolom ke-0)
060.xlsWriteLabel(0,0,"NO");
061.
062.// mengisi pada cell A2 (baris ke-0, kolom ke-1)
063.xlsWriteLabel(0,1,"NIM");
064.
065.// mengisi pada cell A3 (baris ke-0, kolom ke-2)
066.xlsWriteLabel(0,2,"NAMA MAHASISWA");
067.
068.// mengisi pada cell A4 (baris ke-0, kolom ke-3)
069.xlsWriteLabel(0,3,"NILAI");
070.
071.// mengisi pada cell A5 (baris ke-0, kolom ke-4)
072.xlsWriteLabel(0,4,"STATUS KELULUSAN");
073.
074.// -------- menampilkan data --------- //
075.
076.// koneksi ke mysql
077.
078.mysql_connect("localhost", "root", "root");
079.mysql_select_db("data");
080.
081.// query menampilkan semua data
082.
083.$query = "SELECT * FROM nilaimhs";
084.$hasil = mysql_query($query);
085.
086.// nilai awal untuk baris cell
087.$noBarisCell = 1;
088.
089.// nilai awal untuk nomor urut data
090.$noData = 1;
091.
092.while ($data = mysql_fetch_array($hasil))
093.{
094. // menampilkan no. urut data
095. xlsWriteNumber($noBarisCell,0,$noData);
096.
097. // menampilkan data nim
098. xlsWriteLabel($noBarisCell,1,$data['nim']);
099.
100. // menampilkan data nama mahasiswa
101. xlsWriteLabel($noBarisCell,2,$data['namaMhs']);
102.
103. // menampilkan data nilai
104. xlsWriteNumber($noBarisCell,3,$data['nilai']);
105.
106. // menentukan status kelulusan
107. if ($data['nilai'] >= 60) $status = "LULUS";
108. else $status = "TIDAK LULUS";
109.
110. // menampilkan status kelulusan
111. xlsWriteLabel($noBarisCell,4,$status);
112.
113. // increment untuk no. baris cell dan no. urut data
114. $noBarisCell++;
115. $noData++;
116.}
117.
118.// memanggil function penanda akhir file excel
119.xlsEOF();
120.exit();
121.
122.?>

Apabila script di atas dijalankan pada browser, maka browser akan menampilkan kotak dialog untuk mendownload file MS. Excel sebagai outputnya. Gambar berikut ini adalah screen shot isi file excel yang telah didownload.


















Mudah bukan cara membuatnya?

Silakan isi komentar di bawah ini apabila ada pertanyaan dan diskusi seputar artikel ini.

Membuat Fasilitas Lost Password dengan PHP

view sourceprint?
1.CREATE TABLE user (
2. username varchar(30),
3. password varchar(32),
4. email varchar(100),
5. PRIMARY KEY (username)
6.)

Selanjutnya, kita buat form untuk registrasi user baru.

register.htm
view sourceprint?
01.<form action="submit.php" method="post">
02.<table border="0">
03.<tbody>
04.<tr>
05.<td>Masukkan Usernametd>
06.<td>
07.<input name="username" type="text" />td>
08.tr>
09.<tr>
10.<td>Masukkan E-mailtd>
11.<td>
12.<input style="background-color: #ffffa0;" name="email" type="text" />td>
13.tr>
14.<tr>
15.<td>Masukkan Passwordtd>
16.<td>
17.<input name="pass1" type="password" />td>
18.tr>
19.<tr>
20.<td>Ulangi Passwordtd>
21.<td>
22.<input name="pass2" type="password" />td>
23.tr>
24.<tr>
25.<td>td>
26.<td>
27.<input name="Submit" type="submit" value="Submit" />td>
28.tr>
29.tbody>table>
30.form>

Untuk mengolah form register user di atas, kita buat pula scriptnya.

submit.php
view sourceprint?
01.
02.$username = $_POST['username'];
03.$password1 = $_POST['pass1'];
04.$password2 = $_POST['pass2'];
05.$email = $_POST['email'];
06.
07.// cek kesamaan password
08.if ($password1 == $password2)
09.{
10. mysql_connect("namahost", "dbuser", "dbpass");
11. mysql_select_db("dbname");
12.
13. // perlu dibuat sebarang pengacak
14. $pengacak = "NDJS3289JSKS190JISJI";
15.
16. // mengenkripsi password dengan md5() dan pengacak
17. $password1 = md5($pengacak . md5($password1) . $pengacak);
18.
19. // menyimpan username dan password terenkripsi ke database
20. $query = "INSERT INTO user VALUES('$username', '$password1', '$email')";
21. $hasil = mysql_query($query);
22.
23. // menampilkan status pendaftaran
24. if ($hasil) echo "User sudah berhasil terdaftar";
25. else echo "Username sudah ada yang memiliki";
26.
27.}
28.else echo "Password yang dimasukkan tidak sama";
29.
30.?>

Apabila Anda perhatikan, maka pada prinsipnya script pengolah form registrasi ini sama dengan script pada pembahasan tentang autentifikasi user yang telah saya tulis sebelumnya. Bedanya hanyalah pada ada tidaknya email. Namun secara umum proses autentifikasi boleh juga kok ada emailnya, malah lebih baik jika ada. Oya… jangan lupa untuk mengenkripsi password dengan md5() dan pengacak.

Selanjutnya kita bikin form login user.

login.htm
view sourceprint?
01.<form action="..." method="post">
02.<table border="0">
03.<tbody>
04.<tr>
05.<td>Masukkan Usernametd>
06.<td>
07.<input name="username" type="text" />td>
08.tr>
09.<tr>
10.<td>Masukkan Passwordtd>
11.<td>
12.<input name="pass" type="password" />td>
13.tr>
14.<tr>
15.<td>td>
16.<td>
17.<input name="Submit" type="submit" value="Submit" />td>
18.tr>
19.<tr>
20.<td><a href="lostpassword.htm">Lost Passworda>td>
21.<td>td>
22.tr>
23.tbody>table>
24.form>

Nah… perhatikan pada form di atas. Pada bagian bawah form, kita tempatkan link untuk lost passwordnya. Sebagai catatan, untuk script pengolah login (bagian action), sengaja tidak saya tulis karena pada prinsipnya sama dengan proses autentifikasi yang telah saya tulis sebelumnya. Dalam hal ini kita hanya fokus ke lost passwordnya saja. OK?

Sekarang, kita buat form untuk lost password. Dalam form ini, user diminta memasukkan usernamenya.

lostpassword.htm
view sourceprint?
01.<form action="kirimpassword.php" method="post">
02.<table border="0">
03.<tbody>
04.<tr>
05.<td>Masukkan Username Andatd>
06.<td>
07.<input name="username" type="text" />td>
08.tr>
09.<tr>
10.<td>td>
11.<td>
12.<input name="Submit" type="submit" value="Submit" />td>
13.tr>
14.tbody>table>
15.form>

Mengingat untuk lost password ini dibutuhkan username, maka harus ada jaminan bahwa username ini unik (tidak boleh ada username yang sama). Oleh karena itu untuk mengantisipasi adanya beberapa username yang sama, kita buat field ‘username’ ini menjadi primary key di tabelnya. Nah… hal ini sudah kita buat ketika membuat tabelnya bukan? So… don’t worry.

Form untuk lost password sudah dibuat, berikutnya kita buat script pengolah lost passwordnya.

kirimpassword.php
view sourceprint?
01.
02.
03.mysql_connect("namahost", "dbuser", "dbpass");
04.mysql_select_db("dbname");
05.
06.$username = $_POST['username'];
07.
08.function randomPassword()
09.{
10.// function untuk membuat password random 6 digit karakter
11.
12.$digit = 6;
13.$karakter = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
14.
15.srand((double)microtime()*1000000);
16.$i = 0;
17.$pass = "";
18.while ($i <= $digit-1)
19.{
20.$num = rand() % 32;
21.$tmp = substr($karakter,$num,1);
22.$pass = $pass.$tmp;
23.$i++;
24.}
25.return $pass;
26.}
27.
28.// membuat password baru secara random -> memanggil function randomPassword
29.$newPassword = randomPassword();
30.
31.// perlu dibuat sebarang pengacak
32.$pengacak = "NDJS3289JSKS190JISJI";
33.
34.// mengenkripsi password dengan md5() dan pengacak
35.$newPasswordEnkrip = md5($pengacak . md5($newPassword) . $pengacak);
36.
37.// mencari alamat email si user
38.$query = "SELECT * FROM user WHERE username = '$username'";
39.$hasil = mysql_query($query);
40.$data = mysql_fetch_array($hasil);
41.$alamatEmail = $data['email'];
42.
43.// title atau subject email
44.$title = "New Password";
45.
46.// isi pesan email disertai password
47.$pesan = "Username Anda : ".$username.". \nPassword Anda yang baru adalah ".$newPassword;
48.
49.// header email berisi alamat pengirim
50.$header = "From: admin@situsku.com";
51.
52.// mengirim email
53.$kirimEmail = mail($alamatEmail, $title, $pesan, $header);
54.
55.// cek status pengiriman email
56.if ($kirimEmail) {
57.
58. // update password baru ke database (jika pengiriman email sukses)
59. $query = "UPDATE user SET password = '$newPasswordEnkrip' WHERE username = '$username'";
60. $hasil = mysql_query($query);
61.
62. if ($hasil) echo "Password baru telah direset dan sudah dikirim ke email Anda";
63. }
64.else echo "Pengiriman password baru ke email gagal";
65.
66.?>

Perhatikan pada function pengacak password pada script di atas. Dalam daftar karakter ($karakter = “ABCDEFGHJKLMNPQRSTUVWXYZ23456789″) yang digunakan untuk membuat random password tidak ada huruf I, O serta angka 1 dan 0. Ini sengaja saya buat karena menghindari keambiguan dalam membaca. Kadang orang salah membaca angka 1 dan huruf I, begitu pula angka 0 dan huruf O.

Nah… password baru yang dikirm ke email user adalah password random yang dihasilkan function randomPassword().

Oya, perhatikan pula pada proses update password baru ke database. Apabila kita perhatikan, maka proses update ini dilakukan setelah pengiriman email sukses. Mengapa demikian? Ya… bagaimana seandainya pengiriman email gagal, tapi password yang baru sudah terupdate di database? Tentu si user bingung :-)

Satu lagi yang penting, gunakan pengacak enkripsi yang sama ketika pada proses registrasi user dan juga pada waktu proses login. Jika tidak sama.. hmmm… repot, karena user nantinya gak bisa login.

Konversi Nilai Uang Menjadi Kalimat

Tutorial php membuat aplikasi sederhana yaitu mengubah nilai uang (dollar) menjadi sebuah kalimat terbilang, misalnya dari suatu inputan bernilai angka 5000 maka setelah dikonversi menjadi sebuah kalimat “five thousand dollars”. bagaimana cara membuatnya?
Langkah 1. Membuat Form untuk memasukkan nilai yang akan dikonversi
<html><body>
<form name="konversi" action="konversi.php" method="post">
Nominal : <input type="text" name="nominal" maxlength="16"><input type="submit" value="konversi">
</form>
</body></html>

Langkah 2. Membuat suatu fungsi untuk mengkonversi nilai menjadi kalimat.
bisa di download di sini
Langkah 3. Membuat konversi.php output dari nilai tersebut yang sudah dikonversi menjadi kalimat
<?php
//include fungsi konversi di langkah ke 2
include "konversi.func.php";
//Mendapatkan nilai nominal dari form
$nominal = $_POST['nominal'];
//memanggil fungsi untuk konversi
$convert = convert($nominal);
//menampilan hasil
echo $convert;
?>
Setelah semuanya selesai. jalankan menggunakan xampp atau aplikasi sejenisnya.
semoga bermanfaat. go Indonesia melek IT
:D

Selasa, 03 Januari 2012

Premium Account Filesonic | Fileserve | Wupload | Hotfile | Megaupload 2/1/2012

NEW ACCOUNT WUPLOAD PREMIUM

User : leslie.naessens@pandora.be
Pass : vectra1571
Premium Membership Valid Until:
January 14, 2012


User : rockman834@gmail.com
Pass : oscar12
Premium Membership Valid Until:
January 29, 2012


User : sjeaglemike@yahoo.com
Pass : lin2928
Premium Membership Valid Until:
January 05, 2012

User : monster@mixrelease.com
Pass : mixrelease.com1245
Premium Membership Valid Until:
January 31, 2012

User : kazik-1981@o2.pl
Pass : 123456
Premium Membership Valid Until:
January 02, 2012

User : djahnke@rogers.com
Pass : felix211
Premium Membership Valid Until:
January 02, 2012

User : mikecom1@comcast.net
Pass : michelle
Premium Membership Valid Until:
January 02, 2012


User : andregoodlett@mac.com
Pass : andrex
Premium Membership Valid Until:
January 08, 2012

====================== enjoy ====================
NEW ACCOUNT FILESONIC PREMIUM


User : marz187@gmail.com
Pass : 3340421
Pro Membership Valid Until:

2012-01-20 12:02:47



User : tom_pman@hotmail.com
Pass : ginger
Pro Membership Valid Until:
2012-01-16 23:57:35



User : nikolaj@harving.dk
Pass : Harv9977
Pro Membership Valid Until:
2012-01-06 23:08:3


User : leslie.naessens@pandora.be
Pass : vectra1571
Pro Membership Valid Until:
2012-03-14 01:00:06


User : jameshop@gmail.com pass
Pass : marine13
Pro Membership Valid Until:
2012-01-05 16:37:26


User : adreasm@gmail.com
Pass : 19571957
Pro Membership Valid Until:
2012-06-14 09:47:11


User : andersonpa71@hotmail.com
Pass : rea5on
Pro Membership Valid Until:
2012-01-02 14:59:26

User : usnavyretired2001@yahoo.com
Pass : gonavy
Pro Membership Valid Until:
2012-01-02 11:24:53

User : capito@nate.com
Pass : 5dWplIN5f
Pro Membership Valid Until:
2012-01-20 11:03:08

User: jonmbent@yahoo.com
Pass: lotty12
Pro Membership Valid Until:
2012-01-09 13:21:54


User : serbaumo@hotmail.com
Pass : lakersgo
Pro Membership Valid Until:
2011-12-27 11:55:59


====================== enjoy ====================