ABSTRAK
IMPLEMENTASI SMS GATEWAY DALAM PENGEMBANGAN SISTEM
INFORMASI JADWAL SEMINAR SKRIPSI BERBASIS WEB
Oleh:
Ruslan Efendi Nasution
Seminar merupakan salah satu syarat yang harus dilakukan mahasiswa Universitas
Lampung yang ingin menyelesaikan karya tulis sebagai syarat mendapatkan gelar
sarjana. Seminar usul dan seminar hasil yang akan dilaksanakan harus dihadiri
oleh minimal 10 orang mahasiswa dan 3 orang dosen. Seorang pemateri seminar
harus terlebih dahulu memberikan informasi jadwal seminarnya kepada
mahasiswa lain agar dapat menghadiri seminar yang akan dilaksanakan. Dengan
menerapkan teknologi SMS
Gateway, informasi jadwal seminar di Ilmu
Komputer Universitas Lampung dapat disebarkan melalui media SMS (Short
message service). Penerapan sistem infomasi SMS
gateway jadwal seminar
memberikan kemudahan mengakses jadwal seminar yang akan dilaksanakan di
Ilmu Komputer. Sistem akan mengirimkan SMS jadwal seminar yang akan
dilaksanakan kepada mahasiswa dan mahasiswa juga dapat meminta jadwal
seminar yang tercatat pada sistem dengan mengirimkan format SMS permintaan
informasi jadwal.
ABSTRACT
IMPLEMENTATION SMS GATEWAY IN THE DEVELOPMENT WEB
BASED INFORMATION SYSTEM SCHEDULE SEMINAR THESIS
By:
Ruslan Efendi Nasution
The seminar is one of the requirements Lampung University students who want to
finish writing thesis as a condition of getting a bachelor's degree. Seminar
proposals and results which is implemented must be attended by a minimum of
10 students and 3 lectures. A seminar presenters should provide the schedule
information seminar to other students whose attended the seminar. By applying
SMS Gateway technology, information seminar schedule at the computer science
University of Lampung can be distributed through the media SMS (Short
message service). The aplication of information systems SMS gateway seminar
schedule will give easily access to the schedule of seminars this system will be
held in The Computer Science. The system will send an SMS seminar schedule to
other students and student can request seminar schedule that is recorded in the
system by sending an SMS format request seminar schedule information.
DAFTAR PUSTAKA
Booch, Grady . James, Rumbaugh. Ivar, Jacobson. 2005. The Unified Modeling
Language User Guide Second Edition. United States: Addison Wesley
Professional
Connoly, Thomas dan Begg, Carolyn. 2004. Database Solution A Step by Step
Guide to Building Database 2
ndEdition. England : Pearson Education Limited
Febrian, Jack dan Farida Andayani. 2002. Kamus Komputer dan Istilah Teknologi
Informasi. Bandung: Informatika
Gasperz, Vincent.1998. Sistem Informasi Manajement. Bandung: Armico
Nugroho, Bunafit. 2007. Pengembangan Data Array Dalam Membuat Aplikasi
Web. Yogyakarta: Andi
Pressman, Roger S. 2005. Software engineering: a practitioner's approach. New York : McGraw-Hill Higher Education.
Primasetya, Aidil. 2010. Sistem Informasi Aplikasi Pemetaan Kecelakaan Mobil
Manggunakan Sistem Informasi Geografis, Surabaya: ITS
Sanjaya, Ridwan dan Onno W Purbo. 2002. MySQL Dengan Koneksi Data
Melalui Visual Basic. Jakarta: Elex Media Komputindo
Sidik, Betha. 2005. MySQL Untuk Pengguna, Administrator Dan Pengembang
Aplikasi Web. Bandung: Informatika
Universitas Lampung. 2011. Panduan Penyelenggaraan Program Sarjana dan
Diploma. Lampung: Universitas Lampung
DATA LULUSAN
Nama
: Ruslan Efendi Nasution
Tempat lahir
: Bandar Lampung
Tanggal lahir
: 21 November 1989
Agama
: Islam
NPM
: 0717032073
Fakultas
: MIPA
Jurusan/Program Studi
: S1 Ilmu Komputer
IPK
: 3,36
Tgl lulus ujian skripsi
: 2 Agustus 2012
Alamat
: Jl. Gatot Subroto No.190/32, kel. Sukaraja, kec.
Teluk Betung Selatan, Bandar Lampung
Asal SMA
: SMA Negeri 1 Karas
( Magetan, Jawa Timur )
Nama Orang Tua
: M. Sailan Nasution
PembimbingSkripsi
: 1. Dwi Sakethi, S.Si., M.Kom
2. Dian Kurniasari, S.Si., M. Sc
PengujiSkripsi
: Anie Rose Irawati, M.Cs
Test Kemampuan B. Inggris : 1. Nomor
: 6671/UN.26/14/DT/2011
2. Tanggal : 17 November 2011
3. Nilai
: 450
Coding Login.php
<?
include'include/db.php';
$user_id = $_POST['user_id'];
$password = md5($_POST['password']);
$sql = mysql_query("select user_id,password,status FROM user_login WHERE
user_id='$user_id' && password='$password'");
$jumlah=mysql_num_rows($sql);
$row=mysql_fetch_array($sql);
if($jumlah>0)
{
session_start();
session_register("namauser");
session_register("passuser");
session_register("status");
$namauser=$row[user_id];
$passuser=$row[password];
$status=$row[status];
header("Location:user/index.php");
}
if ($jumlah==0)
{
header("Location:denied.php");
}
?>
Coding My_account.php
<?php
session_start();
include'../include/conf.php';
include'../include/db.php';
{
}
else
{
header("Location:../denied.php");
}
include'inc.header.php';
?>
<table width="100%" border="0" cellspacing="20" cellpadding="0"> <tr> <td >
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="baca"> <tr>
<td height="25" colspan="4" align="center" bgcolor="#EFEFDE"><strong>
<?
$user=mysql_query("SELECT * FROM user_login WHERE user_id='$namauser'");
$tampil=mysql_fetch_array($user);
$pil_prodi = $tampil[prodi];
switch($pil_prodi)
{
case "ILKOM" : $prodi = "S1 Ilmu Komputer";
break;
case "D3SI" : $prodi = "D3 Sistem Informasi";
break;
}
?>
Hallo <? echo" <b>$tampil[nama]</b>"; ?> ini adalah acount anda
</strong></td></tr><tr>
<td width="7%" height="30"> </td>
<td align="right"> </td>
<td> </td>
<td> </td>
</tr> <tr>
<td height="18"> </td>
<td width="23%" align="right" valign="top"><div align="left">User ID </div></td>
<td width="3%">:</td>
<td width="67%"><? echo" $tampil[user_id]"; ?></td>
<td height="18"> </td>
<td align="right" valign="top"><div align="left">Nama </div></td>
<td>:</td>
<td><? echo" $tampil[nama]"; ?></td>
</tr> <tr>
<td height="18"> </td>
<td align="right" valign="top"><div align="left">Alamat </div></td>
<td>:</td>
<td><? echo" $tampil[alamat]"; ?></td>
</tr> <tr>
<td height="18"> </td>
<td align="right" valign="top"><div align="left">Jenis Kelamin </div></td>
<td>:</td>
<td><? echo" $tampil[jenis_kelamin]"; ?></td>
</tr> <tr>
<td height="18"> </td>
<td align="right" valign="top"><div align="left">Telepon / HP </div></td>
<td>:</td>
<td><? echo" $tampil[telp_hp]"; ?></td>
</tr> <tr>
<td height="18"> </td>
<td align="right" valign="top"><div align="left">E-Mail </div></td>
<td>:</td>
<td><? echo" $tampil[email]"; ?></td>
</tr> <tr>
<td height="26" colspan="4" align="center"> </td>
</tr> <tr>
<td height="32" colspan="4" align="center" valign="middle" bgcolor="#EFEFDE"><a
href="edit_account.php?no=<? echo"$tampil[user_id]"; ?>&id2=my_account"
onMouseOut="MM_swapImgRestore()"
onMouseOver="MM_swapImage('change','','images/change_over.gif',1)"><img
src="images/change.gif" name="change" width="115" height="25" border="0"
id="change" /> </a> <img src="images/garis.gif" /> <a href="javascript:history.back(1)"
onMouseOut="MM_swapImgRestore()"
src="images/back.gif" name="back" width="70" height="25" border="0" id="back"
/></a></a></td>
</tr> <tr>
<td height="25" colspan="4" align="center" bgcolor="#FFFFFF"> </td>
</tr></table>
</td></tr>
</table>
<?
include'inc.footer.php';
?>
Coding Control_gammu.php
<?
include'inc.header.php';
if ($id==stop)
{
// menjalankan command menghentikan service Gammu
passthru("C:\Gammu-1.30.0-Windows\bin\gammu-smsd -k");
?>
<script type="text/javascript">
function pindah(url)
{
window.location = url;
}
setInterval ("pindah('gammu.php' )",1000);
</script>
<?
}
if ($id==start)
{
passthru("C:\Gammu-1.30.0-Windows\bin\gammu-smsd -c smsdrc -s");
?>
<script type="text/javascript">
{
window.location = url;
}
setInterval ("pindah('gammu.php' )",1000);
</script>
<?
}
include'inc.footer.php';
?>
Coding autorepsond.php
<?php
$hostname_config = "localhost";
$database_config = "smsdb";
$username_config = "root";
$password_config = "vertrigo";
$config = mysql_pconnect($hostname_config, $username_config, $password_config) or
trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_config, $config);
// mencari sms yang belum diproses
$query = "SELECT * FROM inbox WHERE Processed = 'false'";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
// baca ID dari SMS
$id = $data['ID'];
// membaca isi SMS dan mengubah menjadi huruf kapital
$sms = strtolower($data['TextDecoded']);
// memecah isi sms berdasarkan tanda *
$hp=substr($data[SenderNumber], 3);
//Cek Jadwal Seminar PKL by NPM
if ( ($isisms[0] == "stop") or ($isisms[0] == "update") or ($isisms[0] == "pkl") or
($isisms[0] == "usul") or ($isisms[0] == "hasil") or ($isisms[0] == "kompre") or
($isisms[0] == "reg")or ($isisms[0] == "seminar")or ($isisms[0] == "batal") )
{
if ( ($isisms[0] == "pkl") or ($isisms[0] == "usul") or ($isisms[0] == "hasil") or
($isisms[0] == "kompre") )
{
// mencari Jadwal PKL by NPM
$query2 = "select
mahasiswa.nama,seminar.judul,seminar.tgl,seminar.waktu,ruang.nama_ruang from
seminar,ruang,mahasiswa,jenis_seminar WHERE seminar.npm ='$isisms[1]' and
seminar.npm = mahasiswa.npm and jenis_seminar.jenis = '$isisms[0]' and seminar.kind =
jenis_seminar.id and seminar.id_ruang = ruang.id_ruang";
$ambl_data=mysql_query($query2);
$tmpl_data=mysql_fetch_array($ambl_data);
$jumlah = mysql_num_rows($ambl_data);
if ( $jumlah == 1 ) {
// ubah status proses sms jadi true
$query = mysql_query("UPDATE inbox SET Processed = 'true' WHERE ID = '$id'");
//mengubah susunan tanggal
$usul= explode("-", $tmpl_data[tgl]);
$tgl = $usul[2];
$bln = $usul[1];
$th = $usul[0];
//pengiriman SMS
$pesan = "Jadwal Seminar $isisms[0] Saudara/i $tmpl_data[nama] dengan NPM
$isisms[1] pada tanggal $tgl-$bln-$th jam $tmpl_data[waktu] diruangan
$tmpl_data[nama_ruang]";
if($jmlSMS1==1)
{
$query = mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded, ID,
MultiPart, CreatorID) VALUES ('0$hp', '$pesan', '$newID', 'true', 'Gammu')");
}
if($jmlSMS1<>1)
{
// menghitung jumlah pecahan
$jmlSMS = ceil(strlen($pesan)/153);
// memecah pesan asli
$pecah = str_split($pesan, 153);
// proses untuk mendapatkan ID record yang akan disisipkan ke tabel OUTBOX
$query = "SHOW TABLE STATUS LIKE 'outbox'";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
$newID = $data['Auto_increment'];
// proses penyimpanan ke tabel mysql untuk setiap pecahan
for ($i=1; $i<=$jmlSMS; $i++)
{
// membuat UDH untuk setiap pecahan, sesuai urutannya
$udh = "050003A7".sprintf("%02s", $jmlSMS).sprintf("%02s", $i);
// membaca text setiap pecahan
$msg = $pecah[$i-1];
if ($i == 1)
{
// jika merupakan pecahan pertama, maka masukkan ke tabel OUTBOX
$query = "INSERT INTO outbox (DestinationNumber, UDH, TextDecoded, ID,
MultiPart, CreatorID)
}
else
{
// jika bukan merupakan pecahan pertama, simpan ke tabel OUTBOX_MULTIPART
$query = "INSERT INTO outbox_multipart(UDH, TextDecoded, ID,
SequencePosition)
VALUES ('$udh', '$msg', '$newID', '$i')";
}
// jalankan query
mysql_query($query);
}
}
}
else {
$query2 = "UPDATE inbox SET Processed = 'true' WHERE ID = '$id'";
$query = "INSERT INTO outbox (DestinationNumber, UDH, TextDecoded, ID,
MultiPart, CreatorID)
VALUES ('0$hp', '$udh', 'Jadwal Seminar $isisms[0] dengan NPM $isisms[1]
belum terdaftar pada sistem', '$newID', 'true', 'Gammu')";
mysql_query($query2);
mysql_query($query);
}
}
// stop berlangganan
if ($isisms[0] == "stop")
{
$query = mysql_query("UPDATE inbox SET Processed = 'true' WHERE ID = '$id'");
$query = mysql_query(" select * from penerima_sms where NPM = '$isisms[1]'");
$jumlah = mysql_num_rows($query);
if ($jumlah ==1)
$query = mysql_query("delete from penerima_sms where NPM = '$isisms[1]' and no_hp
= '0$hp' ");
$query = mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded, ID,
MultiPart, CreatorID) VALUES ('0$hp', ' Terimakasih, anda telah berhenti berlangganan
SMS Jadwal Seminar ', '$newID', 'true', 'Gammu')");
}
else
{
$query = mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded, ID,
MultiPart, CreatorID) VALUES ('0$hp', ' Maaf NPM $isisms[1] tidak terdaftar pada
sistem atau NPM yang dikirimkan tidak sesuai untuk berhenti layanan ', '$newID', 'true',
'Gammu')");
}
}
// registrasi reg*npm*i/m09
if ($isisms[0] == "reg")
{
$npm = $isisms[1];
$grup = $isisms[2];
$prodi= substr($grup,0,1);
$angkatan= substr($grup,-2);
if ( strtolower($prodi) == "i" )
{
$set_grup = "komputer 20$angkatan";
$set_prodi = "ILKOM";
}
if ( strtolower($prodi) == "m" )
{
$set_grup = "informatika 20$angkatan";
$set_prodi = "D3MI";
}
$sql_grup = mysql_query("select id from grup where nama like '%$set_grup'");
$id_grup = mysql_fetch_array($sql_grup);
$insert = mysql_query(" insert into penerima_sms set NPM ='$npm', prodi = '$set_prodi',
no_hp='0$hp', grup='$grup'");
$query = mysql_query("UPDATE inbox SET Processed = 'true' WHERE ID = '$id'");
$pesan = "Terimakasih anda telah melakukan registrasi SMS jadwal Seminar Skripsi,
untuk berhenti ketik STOP*NPM ";
$query = mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded, ID,
MultiPart, CreatorID) VALUES ('0$hp', '$pesan', '$newID', 'true', 'Gammu')");
}
//jadwal berdasarkan tanggal
if ($isisms[0] == "seminar")
{
$bc_tgl=explode("-", $isisms[1]);
// mencari Jadwal by tgl
$query2 = "select
mahasiswa.nama,mahasiswa.npm,seminar.judul,seminar.tgl,seminar.waktu,ruang.nama_r
uang from seminar,ruang,mahasiswa,jenis_seminar WHERE seminar.tgl =
'$bc_tgl[2]-$bc_tgl[1]-$bc_tgl[0]' and seminar.npm = mahasiswa.npm and seminar.kind =
jenis_seminar.id and seminar.id_ruang = ruang.id_ruang";
$ambl_data=mysql_query($query2);
$tmpl_data=mysql_fetch_array($ambl_data);
$jumlah = mysql_num_rows($ambl_data);
if ( $jumlah == 1 ) {
// ubah status proses sms jadi true
$query = mysql_query("UPDATE inbox SET Processed = 'true' WHERE ID = '$id'");
//mengubah susunan tanggal
$usul= explode("-", $tmpl_data[tgl]);
$tgl = $usul[2];
$bln = $usul[1];
$th = $usul[0];
$pesan = "Jadwal Seminar tanggal $isisms[1] Saudara/i $tmpl_data[nama] dengan
NPM $tmpl_data[npm] pada jam $tmpl_data[waktu] diruangan
$tmpl_data[nama_ruang]";
$jmlSMS1 = ceil(strlen($pesan)/160);
if($jmlSMS1==1)
{
$query = mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded, ID,
MultiPart, CreatorID) VALUES ('0$hp', '$pesan', '$newID', 'true', 'Gammu')");
}
if($jmlSMS1<>1)
{
// menghitung jumlah pecahan
$jmlSMS = ceil(strlen($pesan)/153);
// memecah pesan asli
$pecah = str_split($pesan, 153);
// proses untuk mendapatkan ID record yang akan disisipkan ke tabel OUTBOX
$query = "SHOW TABLE STATUS LIKE 'outbox'";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
$newID = $data['Auto_increment'];
// proses penyimpanan ke tabel mysql untuk setiap pecahan
for ($i=1; $i<=$jmlSMS; $i++)
{
// membuat UDH untuk setiap pecahan, sesuai urutannya
$udh = "050003A7".sprintf("%02s", $jmlSMS).sprintf("%02s", $i);
// membaca text setiap pecahan
$msg = $pecah[$i-1];
{
// jika merupakan pecahan pertama, maka masukkan ke tabel OUTBOX
$query = "INSERT INTO outbox (DestinationNumber, UDH, TextDecoded, ID,
MultiPart, CreatorID)
VALUES ('0$hp', '$udh', '$msg', '$newID', 'true', 'Gammu')";
}
else
{
// jika bukan merupakan pecahan pertama, simpan ke tabel OUTBOX_MULTIPART
$query = "INSERT INTO outbox_multipart(UDH, TextDecoded, ID,
SequencePosition)
VALUES ('$udh', '$msg', '$newID', '$i')";
}
// jalankan query
mysql_query($query);
}
}
}
else {
$query2 = "UPDATE inbox SET Processed = 'true' WHERE ID = '$id'";
$query = "INSERT INTO outbox (DestinationNumber, UDH, TextDecoded, ID,
MultiPart, CreatorID)
VALUES ('0$hp', '$udh', 'Tidak ada jadwal Seminar pada tanggal $isisms[1] ',
'$newID', 'true', 'Gammu')";
mysql_query($query2);
mysql_query($query);
}
}
//batalkan jadwal batal*usul*npm*pass
if ($isisms[0] == "batal")
{
$query = mysql_query("UPDATE inbox SET Processed = 'true' WHERE ID = '$id'");
$total = mysql_num_rows($cek);
echo $isisms[3];
if ($total == 1 )
{
$query = mysql_query(" select
mahasiswa.nama,seminar.judul,seminar.tgl,seminar.waktu,ruang.nama_ruang from
seminar,ruang,mahasiswa,jenis_seminar WHERE seminar.npm ='$isisms[2]' and
seminar.npm = mahasiswa.npm and jenis_seminar.jenis = '$isisms[1]' and seminar.kind =
jenis_seminar.id and seminar.id_ruang = ruang.id_ruang");
$jumlah = mysql_num_rows($query);
$data = mysql_fetch_array($query);
if ($jumlah ==1)
{
// pesan asli
$pesan = "Pembatalan jadwal seminar $isisms[1] saudara/i $data[nama] dengan NPM
$data[npm] jam $data[waktu] dirungan $data[nama_ruang] ";
$dta_no=mysql_query("SELECT * FROM penerima_sms ");
while($tmpl_no=mysql_fetch_array($dta_no))
{
$noTelp="$tmpl_no[no_hp]";
echo"$sender";
$jmlSMS1 = ceil(strlen($pesan)/160);
if($jmlSMS1==1)
{
$query = mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded, ID,
MultiPart, CreatorID) VALUES ('$noTelp', '$pesan', '$newID', 'true', 'Gammu')");
}
if($jmlSMS1<>1)
{
// menghitung jumlah pecahan
$jmlSMS = ceil(strlen($pesan)/153);
// memecah pesan asli
// proses untuk mendapatkan ID record yang akan disisipkan ke tabel OUTBOX
$query = "SHOW TABLE STATUS LIKE 'outbox'";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
$newID = $data['Auto_increment'];
// proses penyimpanan ke tabel mysql untuk setiap pecahan
for ($i=1; $i<=$jmlSMS; $i++)
{
// membuat UDH untuk setiap pecahan, sesuai urutannya
$udh = "050003A7".sprintf("%02s", $jmlSMS).sprintf("%02s", $i);
// membaca text setiap pecahan
$msg = $pecah[$i-1];
if ($i == 1)
{
// jika merupakan pecahan pertama, maka masukkan ke tabel OUTBOX
$query = "INSERT INTO outbox (DestinationNumber, UDH, TextDecoded, ID,
MultiPart, CreatorID)
VALUES ('$noTelp', '$udh', '$msg', '$newID', 'true', 'Gammu')";
}
else
{
// jika bukan merupakan pecahan pertama, simpan ke tabel OUTBOX_MULTIPART
$query = "INSERT INTO outbox_multipart(UDH, TextDecoded, ID,
SequencePosition)
VALUES ('$udh', '$msg', '$newID', '$i')";
}
// jalankan query
mysql_query($query);
}
}
}
}
}
else
$query = mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded, ID,
MultiPart, CreatorID) VALUES ('0$hp', ' Maaf jadwal seminar $isisms[1] dengan NPM
$isisms[2] tidak terdaftar pada sistem ', '$newID', 'true', 'Gammu')");
}
}
}
else
{
// ubah status proses sms jadi true
$query = mysql_query("UPDATE inbox SET Processed = 'true' WHERE ID = '$id'");
$query = mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded, ID,
MultiPart, CreatorID) VALUES ('0$hp', ' Maaf keyword yang anda kirimkan tidak
terdaftar ', '$newID', 'true', 'Gammu')");
}
}
?>
Coding registrasi.php
<?
include'include/db.php';
$no=str_replace("+62","0",$no_hp);
if($id==tambah_membersms)
{
// Masukkan data pelanggan ke tabel pelanggan//
$sql = "INSERT INTO penerima_sms SET
NPM='$NPM',nama='$nama',prodi='$prodi',no_hp='$no',alamat='$alamat',grup='$grup'";
$query = mysql_query($sql) ;
$pesan = "Terimakasih anda telah melakukan registrasi SMS jadwal Seminar Skripsi,
untuk berhenti ketik STOP*NPM ";
$query = mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded, ID,
MultiPart, CreatorID) VALUES ('$no', '$pesan', '$newID', 'true', 'Gammu')");
header("Location:pindah.php");
}