About Me

Hai, saya Rosihan Ari Yuana. Saya sehari-hari adalah mengajar di Universitas Sebelas Maret.

Bidang riset saya tentang adaptive learning, computer aided learning, dan datascience

Selain itu, saya juga seorang penulis buku dan blogger.

More about me...

  • Home
  • /
  • SMS Gateway
  • /
  • Menjalankan Script PHP Untuk SMS Gateway Tanpa Autorefresh Dengan AJAX

Menjalankan Script PHP Untuk SMS Gateway Tanpa Autorefresh Dengan AJAX

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

<html>
  <head>
     <title>SMS Server</title>
     <script type="text/javascript" src="ajax.js"></script>
  </head>
<body onload="autorefresh('script.php')">
 <h1 align="center">SMS SERVER</h1>
  .
  .
</body>
</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

<br>
var page = "script.php";</p>
<p>function autorefresh(page) {<br>
  if (window.XMLHttpRequest) {<br>
    req = new XMLHttpRequest();<br>
    req.open("GET", page, true);<br>
    req.send(null);<br>
  } else if (window.ActiveXObject) {<br>
    req = new ActiveXObject("Microsoft.XMLDOM");<br>
    if (req) {<br>
      req.open("GET", page, true);<br>
      req.send(null);<br>
    }<br>
  }<br>
  setTimeout("autorefresh(page)", 5000);<br>
}</p>
<p>

Javascript di atas akan melakukan autorefresh menggunakan AJAX pada setiap interval 5 detik (5000 milisekon). Anda bisa mengatur sendiri lama intervalnya pada bagian

<br>
setTimeout("autorefresh(page)", 5000);</p>
<p>

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

</p>
<p><!--?php
 
// koneksi ke database mysql
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");
 
// baca tanggal sekarang
$tglNow = date("d");
 
// baca bulan sekarang
$blnNow = date("m");
 
// baca tahun-bulan-tanggal sekarang
$now = date("Y-m-d");
 
// cari data teman yang bulan lahir dan tanggal lahir sesuai pada current date
$query = "SELECT * FROM friends WHERE DAY(tglLahir) = '$tglNow' AND MONTH(tglLahir) = '$blnNow'";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
   // baca nomor HP dan nama teman
   $noHP = $data['noHP'];
   $nama = $data['nama'];
 
   // insert data ke tabel kirim
   $query2 = "INSERT INTO kirim (noHP, tglKirim) VALUES ('$noHP', '$now')";
   $hasil2 = mysql_query($query2);
 
   // jika proses insert ke tabel kirim sukses maka kirim sms ucapan
   if ($hasil2)
   {
      // isi pesan SMS ucapan ultah, disertai nama temannya
      $pesanSMS = "Wahai sahabatku ".$nama.", Happy Birthday !! Semoga dengan bertambahnya usiamu, semakin bertambah pula amalan ibadahmu.";
 
      // proses kirim sms via insert data ke tabel outbox
      $query2 = "INSERT INTO outbox (DestinationNumber, TextDecoded, CreatorID) VALUES ('$noHP', '$pesanSMS', 'Gammu')";
      mysql_query($query2);
   }
}
 
?--></p>
<p>

Berikutnya kita buat javascript ‘ajax.js’ untuk AJAX nya sbb:

ajax.js

<br>
// setting file tujuan autorefresh via AJAX<br>
var page = "ultah.php";</p>
<p>function autorefresh(page) {<br>
  if (window.XMLHttpRequest) {<br>
    req = new XMLHttpRequest();<br>
    req.open("GET", page, true);<br>
    req.send(null);<br>
  } else if (window.ActiveXObject) {<br>
    req = new ActiveXObject("Microsoft.XMLDOM");<br>
    if (req) {<br>
      req.open("GET", page, true);<br>
      req.send(null);<br>
    }<br>
  }<br>
  setTimeout("autorefresh(page)", 5000);<br>
}</p>
<p>

Sedangkan isi dari file index.htm nya adalah

index.htm

</p>
<p><br>
  <br>
     <title>SMS Server</title><br>
     <script type="text/javascript" src="ajax.js"></script><br>
  <br>
</p>
<h1 align="center">SMS SERVER ULANG TAHUN</h1>
<p><br>
</p>
<p>

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.

 

Saya seorang dosen dan peneliti di Universitas Sebelas Maret. Bidang penelitian saya tentang: adaptive learning, datascience, dan computer aided learning. Selain itu saya juga seorang blogger, serta penulis buku tentang pemrograman, dan matematika.

Leave a Reply