Sebenarnya sudah lama niat saya untuk artikel ini, tapi maaf baru kesampaian sekarang. Sepertinya para fans blog ini sudah gak sabar
Artikel ini didasarkan pada hasil eksperimen pribadi yang awalnya
hanya bersifat iseng-iseng saja. Dari judul artikel di atas, tentu Anda
sudah bisa memperkirakan apa isi artikel ini yaitu cara alternatif
menjalankan script PHP untuk memproses SMS gateway tanpa autorefresh browser. Dalam hal ini pembahasan hanya dibatasi untuk SMS Gateway dengan Gammu.
Pada artikel-artikel sebelumnya,
seringkali saya membuat contoh-contoh script PHP untuk memproses SMS
yang masuk ke database menggunakan konsep autorefresh setiap n detik
atau menjalankan script berulang-ulang secara otomatis setiap n detik.
Namun konsep ini terkadang kurang cocok untuk browser yang menolak
autorefresh. Beberapa rekan-rekan mengeluh karena browsernya tidak bisa
melakukan autorefresh yang kemungkinan disebabkan settingan di
browsernya. Dengan autorefresh yang sering tersebut, terkadang browser
menganggap adanya suatu program abnormal.
Dari hal di atas, maka saya menggunakan pendekatan lain untuk
menjalankan script PHP pengolah SMS gateway tersebut bukan lagi
menggunakan autorefresh namun menjalankan script PHP nya di balik layar
(browser) menggunakan AJAX (Asynchronous Javascript And XML).
Pada prinsipnya, penggunaan AJAX untuk menjalankan script PHP
pengolah SMS gateway ini hampir sama dengan autorefresh, namun
perbedaannya hanyalah autorefreshnya dilakukan di balik layar browser.
Untuk proses autorefreshnya sendiri nanti menggunakan Javascript dan
bukannya meload script ke browser seperti sebelumnya.
Lantas.. bagaimana implementasinya? OK, andaikan kita memiliki script
PHP bernama “script.php” untuk mengolah SMS gatewaynya, dan juga
halaman “index.htm” untuk halaman utama tampilan. Maka isi struktur dari
halaman index.htm adalah sbb:
index.htm
01.
<
html
>
02.
<
head
>
03.
<
title
>SMS Servertitle
>
04.
<
script
type
=
"text/javascript"
src
=
"ajax.js"
>script
>
05.
head
>
06.
<
body
onload
=
"autorefresh('script.php')"
>
07.
<
h1
align
=
"center"
>SMS SERVERh1
>
08.
.
09.
.
10.
body
>
11.
html
>
Keterangan:
- File ‘ajax.js’ merupakan file berisi script Javascript untuk menjalankan AJAX
- Sedangkan function ‘autorefresh()’ adalah function untuk menjalankan
autorefresh pada ‘script.php’. Function ini nantinya diletakkan dalam
ajax.js.
Selanjutnya, bagaimana isi script ajax.js nya? OK ini dia isinya
ajax.js
01.
var
page =
"script.php"
;
02.
03.
function
autorefresh(page) {
04.
if
(window.XMLHttpRequest) {
05.
req =
new
XMLHttpRequest();
06.
req.open(
"GET"
, page,
true
);
07.
req.send(
null
);
08.
}
else
if
(window.ActiveXObject) {
09.
req =
new
ActiveXObject(
"Microsoft.XMLDOM"
);
10.
if
(req) {
11.
req.open(
"GET"
, page,
true
);
12.
req.send(
null
);
13.
}
14.
}
15.
setTimeout(
"autorefresh(page)"
, 5000);
16.
}
Javascript di atas akan melakukan autorefresh menggunakan AJAX pada
setiap interval 5 detik (5000 milisekon). Anda bisa mengatur sendiri
lama intervalnya pada bagian
1.
setTimeout(
"autorefresh(page)"
, 5000);
OK… that’s all. Nah… Script mana yang nantinya dijalankan di browser?
yang dijalankan cukup file index.htm saja. Untuk script.php nya tidak
perlu dijalankan karena yang menjalankan adalah script AJAX nya.
Sekarang saya akan mengambil contoh implementasi pendekatan di atas pada kasus SMS Ulang Tahun yang pernah dibahas.
Misalkan kita punya script PHP untuk memproses SMSnya sbb:
ultah.php
01.
02.
03.
// koneksi ke database mysql
04.
mysql_connect(
"dbhost"
,
"dbuser"
,
"dbpass"
);
05.
mysql_select_db(
"dbname"
);
06.
07.
// baca tanggal sekarang
08.
$tglNow
=
date
(
"d"
);
09.
10.
// baca bulan sekarang
11.
$blnNow
=
date
(
"m"
);
12.
13.
// baca tahun-bulan-tanggal sekarang
14.
$now
=
date
(
"Y-m-d"
);
15.
16.
// cari data teman yang bulan lahir dan tanggal lahir sesuai pada current date
17.
$query
=
"SELECT * FROM friends WHERE DAY(tglLahir) = '$tglNow' AND MONTH(tglLahir) = '$blnNow'"
;
18.
$hasil
= mysql_query(
$query
);
19.
while
(
$data
= mysql_fetch_array(
$hasil
))
20.
{
21.
// baca nomor HP dan nama teman
22.
$noHP
=
$data
[
'noHP'
];
23.
$nama
=
$data
[
'nama'
];
24.
25.
// insert data ke tabel kirim
26.
$query2
=
"INSERT INTO kirim (noHP, tglKirim) VALUES ('$noHP', '$now')"
;
27.
$hasil2
= mysql_query(
$query2
);
28.
29.
// jika proses insert ke tabel kirim sukses maka kirim sms ucapan
30.
if
(
$hasil2
)
31.
{
32.
// isi pesan SMS ucapan ultah, disertai nama temannya
33.
$pesanSMS
=
"Wahai sahabatku "
.
$nama
.
", Happy Birthday !! Semoga dengan bertambahnya usiamu, semakin bertambah pula amalan ibadahmu."
;
34.
35.
// proses kirim sms via insert data ke tabel outbox
36.
$query2
=
"INSERT INTO outbox (DestinationNumber, TextDecoded, CreatorID) VALUES ('$noHP', '$pesanSMS', 'Gammu')"
;
37.
mysql_query(
$query2
);
38.
}
39.
}
40.
41.
?>
Berikutnya kita buat javascript ‘ajax.js’ untuk AJAX nya sbb:
ajax.js
01.
// setting file tujuan autorefresh via AJAX
02.
var
page =
"ultah.php"
;
03.
04.
function
autorefresh(page) {
05.
if
(window.XMLHttpRequest) {
06.
req =
new
XMLHttpRequest();
07.
req.open(
"GET"
, page,
true
);
08.
req.send(
null
);
09.
}
else
if
(window.ActiveXObject) {
10.
req =
new
ActiveXObject(
"Microsoft.XMLDOM"
);
11.
if
(req) {
12.
req.open(
"GET"
, page,
true
);
13.
req.send(
null
);
14.
}
15.
}
16.
setTimeout(
"autorefresh(page)"
, 5000);
17.
}
Sedangkan isi dari file index.htm nya adalah
index.htm
01.
<
html
>
02.
<
head
>
03.
<
title
>SMS Servertitle
>
04.
<
script
type
=
"text/javascript"
src
=
"ajax.js"
>script
>
05.
head
>
06.
<
body
onload
=
"autorefresh('ultah.php')"
>
07.
<
h1
align
=
"center"
>SMS SERVER ULANG TAHUNh1
>
08.
body
>
09.
html
>
Script di atas sudah diuji coba dan berjalan dengan lancar di modem Wavecom Fastrack.
OK begitulah contoh implementasi pendekatan AJAX untuk mengolah data
SMS dengan script PHP. Mudah-mudahan artikel ini bermanfaat.
EmoticonEmoticon