27 November 2011

Dalam artikel sebelumnya, saya telah menulis artikel cara membuat script PHP untuk backup data MySQL melalui mysqldump. Pada artikel kali ini saya akan menulis artikel cara membuat script PHP untuk restore database MySQL sebagai kelanjutan dari artikel tersebut.
Adapun skenario dari script untuk restore data MySQL sebagai berikut. Andaikan kita telah memiliki file hasil dump database. Selanjutnya, untuk merestore hasil dump tersebut kita browse file dump lalu kita klik tombol prosesnya. Selesai… Namun dalam hal ini, kita sudah tentukan dulu nama databasenya.

Berikut ini adalah tampilan form untuk melakukan restore data.
restore mysql
Bagaimana dengan ide proses restorenya? Untuk proses restore data di MySQL, kita gunakan perintah
1.mysql -u[username] -p[password] dbname < filedump
dengan [username] adalah nama user untuk koneksi ke MySQL, [password] adalah password dari si user. ‘dbname‘ adalah nama database dimana kita ingin merestore data, dan ‘filedump‘ adalah nama file hasil dump (backup). Perintah ini nanti dijalankan di dalam shell.
Lantas… bagaimana dengan ide script untuk restorenya? OK idenya adalah kita lakukan proses upload file dump melalui form. File dump ini akan diupload ke dalam folder yang sama dengan script untuk restore. Setelah file dump diupload, selanjutnya file dump tersebut akan direstore menggunakan perintah di atas. Begitu proses dump selesai, kita hapus file dump yang kita upload tersebut dengan perintah unlink() supaya terhapus secara otomatis.
OK.. ide untuk membuat script restore sudah dapat, sekarang kita bisa buat scriptnya.
restore.php
01.<?php
02.// koneksi ke db mysql
03.$dbHost = "localhost";
04.$dbUser = "root";
05.$dbPass = "...";
06.$dbName = "...";
07. 
08.mysql_connect($dbHost, $dbUser, $dbPass);
09.mysql_select_db($dbName);
10. 
11.echo "<h1>Restore Data MySQL</h1>";
12. 
13.echo "DB Name: ".$dbName;
14. 
15.// form upload file dumo
16.echo "<form enctype='multipart/form-data' method='post' action='".$_SERVER['PHP_SELF']."?op=restore'>";
17.echo "<input type='hidden' name='MAX_FILE_SIZE' value='20000000'>
18.      <input name='datafile' type='file'>
19.      <input name='submit' type='submit' value='Restore'>";
20.echo "</form>";
21. 
22.// proses restore data
23.if ($_GET['op'] == "restore")
24.{
25.  // baca nama file
26.  $fileName = $_FILES['datafile']['name'];
27. 
28.  // proses upload file
29.  move_uploaded_file($_FILES['datafile']['tmp_name'], $fileName);
30. 
31.  // membentuk string command untuk restore
32.  // di sini diasumsikan letak file mysql.exe terletak di direktori C:\AppServ\MySQL\bin
33.  $string = "C:\AppServ\MySQL\bin\mysql -u".$dbUser." -p".$dbPass." ".$dbName." < ".$fileName;
34. 
35.  // menjalankan command restore di shell via PHP
36.  exec($string);
37. 
38.  // hapus file dump yang diupload
39.  unlink($fileName);
40.}
41. 
42.?>
Bagaimana? mudah bukan membuatnya? nah silakan adopsi ide di atas ke dalam aplikasi yang Anda buat sendiri. Sebuah aplikasi tanpa fitur backup and restore database serasa masakan tanpa garam :-) Selamat mencoba sendiri ya…

membuat terjemahan di dalam php

GampSMSAkhir-akhir ini saya suka sekali memposting tentang API (Application Programming Interface). Setelah kemarin memposting artikel tentang Paypal API untuk cek balance, untuk artikel kali ini saya akan mencoba memaparkan cara membuat script PHP untuk menterjemahkan teks dari bahasa tertentu ke bahasa lain memanfaatkan Google Translate API.
Dengan script buatan sendiri ini, Anda tidak perlu lagi membuka situs Google Translate setiap kali akan menterjemahkan sebuah teks, namun cukup membuka aplikasi yang telah dibuat sendiri ini. Bahkan, Anda bisa menambahkan semacam widget di situs web Anda untuk layanan penterjemahan sembarang teks.

OK, sebelum kita mulai membuat script penterjemah teks ini, terlebih dahulu kita harus mengaktifkan API untuk Google Translate ini. Untuk mengaktifkan API ini, silakan Anda login ke https://code.google.com/apis/console/?api=translate menggunakan akun Google Anda. Jika belum memilikinya, maka silakan registrasi dahulu.
Setelah Anda berhasil login, maka akan muncul tampilan berikut ini jika sebelumnya belum pernah mengaktifkan Google API.
Google API Translate
Selanjutnya, klik tombol ‘Add project’, lalu muncul beberapa layanan API Google. Dari beberapa layanan API tersebut, cari ‘Translate API’ dan klik tombol ‘Activate’.
Google API Translate
Untuk mendapatkan layanan akses ke Google API, setiap user akan mendapatkan API Access yang berupa kode tertentu. Kode ini berfungsi sebagai autentikasi kepada setiap user yang mengakses API. Kode API Access Anda dapat dilihat di menu ‘API Access’.
Google API Translate
Setelah Anda klik API Access, maka Anda akan menjumpai suatu kode sbb (perhatikan kode yang di kotak merah):
Google API Translate
itulah kode API Access Anda.
OK… sampai sini, kita sudah mengaktifkan Google API Translate dan juga mendapatkan kode API Access nya. Sekarang kita bisa mulai membuat script penterjemahannya.
Pertama, kita buat dahulu form untuk input teks yang akan diterjemahkan.
form.html
01.<html>
02.<head>
03.   <title>Aplikasi Penterjemah Bahasa</title>
04.</head>
05.<body>
06.<h1>Aplikasi Penterjemah Bahasa</h1>
07.<form method="post" action="translate.php">
08.Masukkan Teks : <br>
09.<textarea name="teks" cols="40" rows="5"></textarea>
10.<br><br>
11.Dari bahasa
12.<select name="from">
13.   <option value="id">Indonesia</option>
14.   <option value="en">Inggris</option>
15.   <option value="ma">Malaysia</option>
16.   <option value="fr">Perancis</option>
17.   <option value="es">Spanyol</option>
18.   <option value="de">Jerman</option>
19.   <option value="nl">Belanda</option>
20.</select>
21. 
22.ke bahasa
23.<select name="to">
24.   <option value="id">Indonesia</option>
25.   <option value="en">Inggris</option>
26.   <option value="ma">Malaysia</option>
27.   <option value="fr">Perancis</option>
28.   <option value="es">Spanyol</option>
29.   <option value="de">Jerman</option>
30.   <option value="nl">Belanda</option>
31.</select>
32. 
33.<input type="submit" name="submit" value="Terjemahkan">
34. 
35.</form>
36.</body>
37.</html>
Perhatikan, pada kode HTML form di atas. Dalam form kita buat dua buah combo box untuk memilih penterjemahannya dari bahasa tertentu ke bahasa tertentu. Untuk masing-masing bahasa terdapat identitas sendiri, misalnya bahasa Indonesia menggunakan ‘id’, bhs Inggris dengan ‘en’. Identitas bahasa ini nanti akan dibaca oleh Google API Translate dan digunakan untuk proses penterjemahan. Berikut ini adalah tampilan form di atas
Google API Translate
Selanjutnya kita buat script translate.php nya yang akan memproses form di atas.
translate.php
01.<?php
02. 
03.// masukkan API Access di sini
04.$key = "...";
05. 
06.// membaca teks dari form
07.$teks = urlencode($_POST['teks']);
08. 
09.// dari bahasa
10.$dariBhs = $_POST['from'];
11. 
12.// ke bahasa
13.$keBhs = $_POST['to'];
14. 
15.// URL untuk mengakses Google API Translate
16.$url = "https://www.googleapis.com/language/translate/v2?key=".$key."&q=".$teks."&source=".$dariBhs."&target=".$keBhs."&callback=response";
17. 
18.// membaca respon dari server Google
19.$fetch = file_get_contents($url);
20. 
21.// menampilkan respon
22.echo $fetch;
23. 
24.?>
Jika script di atas dijalankan maka akan muncul respon sbb (jika form diisikan ‘Halo apa kabar?, dan penterjemahan dilakukan dari bahasa Indonesia ke bahasa Inggris’):
Google API Translate
Dari bentuk respon di atas, tampak bahwa respon dari Google API disajikan dalam format JSON yang diapit oleh
response(…)
Nah… sekarang tugas kita adalah mengekstrak respon dalam bentuk JSON tersebut, untuk mengambil hasil terjemahannya saja yang ada pada bagian “translatedText”: “Hello how are you doing?”
Berikut ini kita adalah script translate.php yang di dalamnya sudah ditambahkan beberapa perintah untuk parsing JSON.
translate.php
01.<?php
02. 
03.// masukkan API Access di sini
04.$key = "...";
05. 
06.// membaca teks dari form
07.$teks = urlencode($_POST['teks']);
08. 
09.// dari bahasa
10.$dariBhs = $_POST['from'];
11. 
12.// ke bahasa
13.$keBhs = $_POST['to'];
14. 
15.// URL untuk mengakses Google API Translate
16.$url = "https://www.googleapis.com/language/translate/v2?key=".$key."&q=".$teks."&source=".$dariBhs."&target=".$keBhs."&callback=response";
17. 
18.// membaca respon dari server Google
19.$fetch = file_get_contents($url);
20. 
21.// mengambil data JSON yang terletak di dalam response(...)
22.$splits1 = explode("response(", $fetch);
23.$splits2 = explode(");", $splits1[1]);
24. 
25.// mengekstrak data JSON
26.$hasil = json_decode($splits2[0], true);
27. 
28.// mengambil teks hasil terjemahan dari data JSON
29.$translate = $hasil["data"]["translations"][0]["translatedText"];
30. 
31.// menampilkan hasil terjemahan
32.echo "<p><b>Teks asli: </b>".$_POST['teks']."</p>";
33.echo "<p><b>Hasil terjemahan: </b>".$translate."</p>";
34.?>
Dan… tampilan dari script di atas setelah dimodifikasi adalah sbb:
Google API Translate
Mudah bukan cara membuatnya??? Oya… hanya sayangnya Google API Translate ini terbatas melayani maksimum 100.000 karakter perhari untuk diterjemahkan untuk sebuah API Access.
Selamat mencoba, semoga ada manfaatnya.




Barangkali Anda pernah heran, mengapa script PHP untuk mengirim email yang Anda buat tidak bisa berjalan di localhost? Sedangkan apabila script tersebut diupload di web hosting, maka script tersebut bisa berjalan dengan baik alias bisa berfungsi untuk mengirim email. Nah.. dalam artikel kali ini, akan saya paparkan cara mengirim email dengan script PHP yang dijalankan melalui localhost menggunakan XAMPP.

Di dalam PHP, terdapat sebuah function yang digunakan untuk mengirim email yaitu mail(); Supaya function tersebut bisa berjalan dengan baik, Anda membutuhkan sebuah module lain di luar PHP yang bertugas untuk mengirim pesan melalui email. Dengan kata lain, penggunaan perintah mail() ini tidak bisa berdiri sendiri hanya di PHP melainkan butuh module lain untuk melakukan tugas pengiriman email. Module yang bisa digunakan adalah untuk pengiriman email ini adalah ‘Sendmail’. Module ‘Sendmail’ ini sudah ada di software-software paket web development seperti XAMPP atau WAMP. Anda bisa cek module ini melalui direktori C:\XAMPP\SENDMAIL. Untuk di WAMP, silakan dicari sendiri ya… :-)

Nah.. selanjutnya akan saya paparkan bagaimana cara memanfaatkan module ‘Sendmail’ tersebut untuk proses pengiriman email melalui script PHP yang dijalankan melalui localhost.

Langkah pertama, kita harus memodifikasi file php.ini terlebih dahulu untuk mengaktifkan module ‘Sendmail’. Silakan buka file php.ini yang terletak di C:\XAMPP\PHP, kemudian cari baris berikut ini
view sourceprint?
[mail function]
; For Win32 only.
; http://php.net/smtp
; SMTP = localhost
; http://php.net/smtp-port
; smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
; sendmail_from = postmaster@localhost

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

Pastikan untuk baris
view sourceprint?

sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

tidak ada tanda semicolon (;) di depannya, sedangkan untuk baris yang lain, tambahkan semicolon di depannya seperti tampilan di atas. Setelah file php.ini selesai diedit, simpan kembali dan kemudian lakukan restart Apache.

Selanjutnya, kita memodifikasi file konfigurasi dari module ‘Sendmail’ ini yaitu ‘sendmail.ini’. File ini terletak di dalam direktori C:\XAMPP\SENDMAIL.

Trus… apa yang harus diisikan di dalam file sendmail.ini tersebut?? yang diisikan adalah server SMTP yang akan digunakan untuk pengiriman email. Jika Anda mempunyai account GMAIL, maka silakan isikan beberapa baris perintah berikut ini
view sourceprint?

defaults
logfile "C:\xampp\sendmail\sendmail.log"

# SMTP Gmail
account Gmail
tls on
port 465
tls_starttls off
tls_certcheck off
host smtp.gmail.com
from xxx@gmail.com
auth on
user xxx@gmail.com
password xxx

account default : Gmail

Keterangan: pada parameter ‘from’ isikan alamat Gmail Anda, begitu pula untuk parameter ‘user’. Sedangkan pada parameter ‘password’ isikan password Gmail Anda.

Nah… proses setting module ‘Sendmail’ sudah dilakukan, selanjutnya Anda tinggal bikin script untuk kirim emailnya. Sebagai contoh misalkan diberikan script kirim email sederhana berikut ini
view sourceprint?



Oya… sebelum Anda menjalankan script kirim email, pastikan PC Anda sudah terkoneksi ke internet supaya bisa terhubung dengan SMTP nya Gmail.

Lantas, bagaimana bila Anda tidak punya account di Gmail melainkan punya di Yahoo Mail? Untuk Yahoo Mail, Anda bisa menggunakan SMTP dari Yahoo Mail dengan konfigurasi sbb:
view sourceprint?

defaults
logfile "C:\xampp\sendmail\sendmail.log"

# SMTP Yahoo
account Yahoo
tls on
port 465
tls_certcheck off
tls_starttls off
host smtp.mail.yahoo.com
from xxx@yahoo.com
auth on
user xxx@yahoo.com
password xxx

# Set a default account
account default : Yahoo

atau jika Anda memiliki SMTP server sendiri di web hosting, maka Anda bisa menggunakannya. Untuk detilnya silakan hubungi admin hosting Anda guna mendapatkan alamat SMTP servernya, nomor port dsb.

OK… selamat mencoba ya…

25 November 2011

mebuat halaman php

Bagi pengguna WordPress, ada beberapa macam cara untuk membuat halaman khusus daftar isi, diantaranya dengan menggunakan plugin Clean Archives Reloaded yang berfungsi untuk menampilkan semua isi postingan berdasarkan waktu publikasi dengan menggunakan javascript. Plugin Dagon Design Sitemap Generator yang berfungsi menampilkan semua postingan berdasarkan kategori atau waktu, serta menampilkan halaman-halaman statis lainnya. Salah satu kelebihan yang dimiliki plugin ini adalah daftar isi bisa dibagi menjadi beberapa halaman sebanyak yang kita inginkan. Sangat berguna bagi blog yang sudah mempunyai banyak artikel tentunya. Selain itu ada juga plugin yang dapat digunakan untuk menampilkan daftar konten blog dengan menggunakan plugin Exec-PHP. Silakan download plugin Exec-PHP disini atau dari sini, dan petunjuk pemasangannya dapat dipelajari disini .

Cara lain yang bisa dilakukan untuk membuat daftar isi yaitu dengan menggunakan fungsi PHP. Dan cara inilah yang saya coba dan saya gunakan untuk membuat index blog ini . Dengan cara ini kode yang dibuat tanpa melibatkan elemen CSS sama sekali, dapat dibuat dan disesuaikan (diedit) dengan theme yang dipakai. Tentunya setiap blog mempunyai perbedaan tersendiri.
Langkah-langkahnya sebagai berikut:
  • Buatlah sebuah template halaman dengan membuat file php baru (misalnya dengan nama file: daftar_isi.php).
  • File yang dibuat tersebut berisikan kode dibawah ini:
<?php
/*
Template Name: Daftar Isi
*/
?>
  • Setelah itu copy semua isi dari file singel .php atau page.php (untuk blog ini saya mengambil isi dari page.php dengan asumsi lebih simpel tanpa ada kode2 tambahan lainnya) dan paste ke bagian bawah kode template diatas. Sehingga kodenya menjadi seperti:
<?php
/*
Template Name: Daftar Isi
*/
?>
<!– Kode page.php di sini –>
  • Cari kode berikut:
<?php the_content(); ?>
  • Kemudian gantilah kode tersebut dengan kode dibawah ini:
<ul>
<?php $page = (get_query_var(‘paged’)) ?get_query_var(‘paged’):1;query_posts(“cat=-27,-28&paged=$page&posts_per_page=50″); ?>
<?php while (have_posts()) : the_post(); ?> <!– start loop –>
<li>
<?php the_time(‘d/m/y’) ?>
:
<a href=”<?php the_permalink(); ?>”><?php the_title(); ?></a>
</li>
<?php endwhile; ?> <!– end of loop –>
</ul>
  • Sebagai pelengkap tambahkah kode navigasi dibawahnya, yaitu:
<div id=”navigation”> <!– element ini tergantung theme yg digunakan –><?php if(function_exists(‘wp_pagenavi’)) { wp_pagenavi(); } else { ?> <div class=”right”><?php next_posts_link(‘Next Page &raquo;’) ?></div><div class=”left”><?php previous_posts_link(‘&laquo; Previous Page’) ?></div><?php } ?></div> <!– element ditutup –>
  • Save file tersebut, dan upload ke direktori themes yang kita gunakan.
  • Selanjutnya buatlah sebuah halaman kosong dan beri nama sesuai keinginan (misalnya: Index).
  • Perhatikan option template dalam attributes halaman baru tersebut, setting atau rubah isian Default Template dengan pilihan nama file template php yang dibuat diawal (misalnya template name yang tadi dibuat: daftar isi )
  • Lalu publish (terbitkan) halaman baru tersebut.