- Xampp
- Gammu
- Macromedia Dreamweaver
- PHP
- Modem + Kartu
- Hp
Tabel sms_Calon
Berfungsi untuk menyimpan data calon peserta pilkada.
Tabel sms_user
Tabel sms_Phonebook
Berfungsi untuk menyimpan data nomor telepon
Tabel sms_group
Berfungsi untuk menyimpan data pengelompokkan nomor telepon dari daftar phonebook
Tabel sms_relawan
Berfungsi untuk menyimpan data nomor telepon dari para relawan yang ditugaskan di TPS
Tabel sms_tps
Berfungsi untuk menyimpan data hasil statistika pemilihan tps dan penyimpanan data suara yang
nantinya akan dikirim relawan
Pembuatan Web Rekapitulasi Hasil Pemilu
Source Code index.php
<html>
<head>
<title>..::: Login Administrator :::..</title>
<link rel="stylesheet" type="text/css" href="style_login.css" />
<script type="text/javascript">
function validasi(form){
if (form.username.value == ""){
alert("Anda belum mengisikan Username");
form.username.focus();
return (false);
}
if (form.password.value == ""){
alert("Anda belum mengisikan Password");
form.password.focus();
return (false);
}
return (true);
}
</script>
</head>
<body OnLoad="document.login.username.focus();">
<div id="main">
<div id="vertical_effect"> </div>
</div>
</body>
</html>
Keterangan:
Source cek_login.php
<?php
include "config/koneksi.php";
function anti_injection($data){
$filter = mysql_real_escape_string(stripslashes(strip_tags(htmlspecialchars($data,ENT_QUOTES))));
return $filter;
}
$username = anti_injection($_POST['username']);
$pass = anti_injection(md5($_POST['password']));
header('location:media.php?module=home');
}
else{
// Login gagal
?>
<script language="javascript">
alert("Maaf, Username atau Password Anda salah!!");
document.location="index.php";
</script>
<?php
}
}
?>
Keterangan:
- File ini berfungsi untuk mengecek autenfikasi user saat login, apakah user ada pada tabel
admin atau tidak. Jika ada, maka akan dibuatkan sesinya.
- Untuk keamanan username dan password dibuatkan sebuah fungsi anti injeksi.
- Dan jika berhasil login, maka akan diarahkan ke halaman media.php dengan modul “home”
- Jika gagal login, maka akan ada pesan “maaf, username dan password salah?”.
Media.php
<?php
session_start();
error_reporting(0);
include_once 'config/cek_sesi.php';
if (empty($_SESSION['username'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=index.php><b>LOGIN</b></a></center>";
}
else{
?>
<html>
<head>
<title>Panel Kelola Aplikasi Quick Count Pemilu</title>
<script>
function Count(){
var karakter,maksimum;
maksimum = 160
karakter = maksimum-(document.form1.pesan.value.length);
if (karakter < 0) {
alert("Jumlah Maksimum Karakter: " + maksimum + "");
document.form1.pesan.value =
document.form1.pesan.value.substring(0,maksimum);
karakter = maksimum-(document. form1.pesan.value.length);
document.form1.counter.value = karakter;
}
else {
document.form1.counter.value = maksimum-(document.form1.pesan.value.length);
}
}
</script>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="header">
<div id="menu">
<div class="left">
<?php
include "menu.php"; ?>
</div>
<div class="right">
<ul class="topmenu">
<li><a href=logout.php>Logout</a></li>
</ul>
</div>
</div>
</div>
<div id="wrap">
<div id="content">
<?php include "content.php"; ?>
</div>
<div id="footer">
</div>
</div>
</body>
</html>
<?php
}
?>
Keterangan:
- File ini diawali oleh pengecekan sesi, dimana jika user/admin berhasil login maka akan di
ijinkan membuka halaman ini, tapi jika tidak maka akan mendapatkan pesan bahwa tidak di
izinkan mengakses modul.
- Juga ada sebuah fungsi javascript bernama count(), dimana fungsi ini akan kita gunakan
pada modul/fungsi yang kita buat nanti dalam mengirim sms, yang akan dibatasi sebanyak
160 karakter saja.
Content.php
<?php
include "config/koneksi.php";
include "config/library.php";
include "config/fungsi_indotgl.php";
include "config/fungsi_combobox.php";
include "class_paging.php";
include_once 'config/cek_sesi.php';
// Bagian Home
if ($_GET['module']=='home'){
$jam=date("H:i:s");
$tgl=tgl_indo(date("Y m d"));
echo "<br /><p align=center>Hai <b>$_SESSION[namauser]</b>, selamat datang di halaman
Administrator.
Silahkan klik menu pilihan yang berada di bagian header dan cpanel untuk mengelola content
website pemilu. <br /> <b>$hari_ini, $tgl, $jam </b>WIB</p><br />";
// Bagian Group
elseif ($_GET['module']=='group'){
include "modul/mod_group/group.php";
}
// Bagian Phonebook
elseif ($_GET['module']=='phonebook'){
include "modul/mod_phonebook/phonebook.php";
}
// Bagian inbox
elseif ($_GET['module']=='inbox'){
include "modul/mod_inbox/inbox.php";
}
// Bagian outbox
elseif ($_GET['module']=='outbox'){
include "modul/mod_outbox/outbox.php";
}
// Bagian sentitem
elseif ($_GET['module']=='sentitem'){
include "modul/mod_sentitem/sentitem.php";
}
// Bagian Admin
elseif ($_GET['module']=='admin'){
include "modul/mod_admin/admin.php";
}
// Bagian Relawan
elseif ($_GET['module']=='relawan'){
include "modul/mod_relawan/relawan.php";
}
// Bagian Calon
elseif ($_GET['module']=='calon'){
include "modul/mod_calon/calon.php";
}
Keterangan:
- File ini membutuhkan file-file penunjang lain, seperti koneksi.php, library.php,
fungsi_indotgl.php, fungsi_combobox.php, class_paging.php dan cek_sesi.php.
Menu.php
<?php
include "config/koneksi.php";
include_once 'config/cek_sesi.php';
echo "<ul>
<li><a href=?module=home>Home</a></li>
<li><a href=?module=group>Group</a></li>
<li><a href=?module=phonebook>Phonebook</a></li>
<li><a href=?module=calon>Data Calon</a></li>
<li><a href=?module=tps>Data TPS</a></li>
<li><a href=?module=relawan>Data Relawan</a></li>
<li><a href=modul/mod_auto/autosuara.php target=_blank>Service
AutoReply</a></li>
<li><a href=?module=admin>Ubah Password</a></li>
</ul>";
?>
Keterangan :
- Pada file ini hanya akan menampilkan menu-menu pilihan yang berada pada bagian atas
secara horizontal
- File ini membutuhkan file penunjang seperti koneksi.php dan cek_sesi.php
Modul admin
admin.php
<?php
$aksi="modul/mod_admin/aksi_admin.php";
$sql = mysql_query("SELECT * FROM sms_user LIMIT 1");
$r = mysql_fetch_array($sql);
Keterangan :
- File ini akan menampilkan dua buah input type berupa username dan password
Aksi_admin.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
include "../../config/koneksi.php";
$module=$_GET[module];
$act=$_GET[act];
// Update admin
if ($module=='admin' AND $act=='update'){
if (empty($_POST[password])) {
mysql_query("UPDATE sms_user SET username = '$_POST[username]'
WHERE id = '$_POST[id]'");
} else{
$pass=md5($_POST[password]);
mysql_query("UPDATE sms_user SET username = '$_POST[username]',
password = '$pass'
WHERE id = '$_POST[id]'");
}
?>
<script language="javascript">
alert("Data Admininstrator berhasil diubah!!");
document.location="../../media.php?module=home";
</script><?php
}
}
?>
Keterangan :
- File ini berfungsi untuk memproses perubahan username dan password.
Modul Service
Service.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
$aksi="modul/mod_service/aksi_service.php";
switch($_GET[act]){
// Tampil service
default:
// menjalankan command untuk mengenerate file service.log
passthru("net start > service.log");
break;
case "status":
echo "<h2>Service Gammu</h2>";
if ($_POST['start'])
{
passthru("c:\gammu\bin\gammu-smsd -c smsdrc -s");
}
else if ($_POST['stop'])
{
passthru("c:\gammu\bin\gammu-smsd -k");
}
break;
}
}
?>
Keterangan :
- Untuk menjalankan atau menghentikan service gammu sebenarnya harus menggunkan
command prompt atasu console, ini kita jalankan via script PHP menggunkan function
passthru() yang dapat menjalankan command yang seharusnya diberikan melalui console.
- Yang paling penting adalah lokasi folder gammu saat memanggil file smsdrc lewat fungsi
passthru() harus benar yaitu folder gammu terletak pada folder C
Modul Inbox
Inbox.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
$aksi="modul/mod_inbox/aksi_inbox.php";
switch($_GET[act]){
// Tampil inbox
default:
$p = new Paging;
$batas = 15;
$posisi = $p->cariPosisi($batas);
$tampil = mysql_query("SELECT * FROM inbox ORDER BY ID DESC LIMIT $posisi,$batas");
echo "<h2>Inbox</h2>";
echo "<table class='list'><thead>
<tr>
<td class='left'>ISI SMS</td>
<td class='left'>Tanggal</td>
<td class='left'>Pengirim</td>
<td class='center'>aksi</td>
</tr></thead> ";
$no = $posisi+1;
while ($r=mysql_fetch_array($tampil)){
case "replysms":
$reply=mysql_query("SELECT * FROM inbox WHERE id='$_GET[id]'");
$r=mysql_fetch_array($reply);
echo "<h2>Reply SMS</h2>
<form name=form1 method=POST action=$aksi?module=inbox&act=replysms>
<table class='list'>
<input type='hidden' name='id' value='$r[id]'>
<input type='hidden' name='notelp' value='$r[SenderNumber]'>";
$phonebook = mysql_query("SELECT nama FROM sms_phonebook WHERE noTelp
= '$r[SenderNumber]'");
$d=mysql_fetch_array($phonebook);
if ($d['nama'] == "") $sendername = $r['SenderNumber'];
else $sendername = $d['nama'];
echo"<tr><td class='left'><b>Nomor Tujuan :</b> $sendername </td></tr>
<tr><td class='left'>Message : </td></tr>
<tr><td><textarea name='pesan' style='width: 350px; height: 120px;' OnFocus='Count();'
OnClick='Count();' onKeydown ='Count(); OnChange='Count();'
onKeyup='Count();'></textarea></td></tr>
<tr><td class='left'>Panjang SMS : <input type='text' readonly name='counter' size='3' value='0'
/> </td></tr>
<tr><td class='left' colspan=2><input type=submit value=Kirim SMS>
<input type=button value=Batal onclick=self.history.back()></td></tr>
</table></form>";
break;
}
}
?>
Keterangan :
- File ini diawali dengan pengecekan sesi, seseorang tidak bisa mengakses file ini secara
langsung tanpa loging
- File ini dibagi menjadi 2 bagian, yaitu case default dan case replysms.
Aksi_inbox.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
include "../../config/koneksi.php";
$module=$_GET['module'];
$act=$_GET['act'];
// Hapus SMS
if ($module=='inbox' AND $act=='hapus'){
mysql_query("DELETE FROM inbox WHERE ID = '$_GET[id]'");
header('location:../../media.php?module='.$module);
}
// Reply SMS
elseif ($module=='inbox' AND $act=='replysms'){
$noTujuan =$_POST['notelp'];
$pesan = $_POST['pesan'];
mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded, CreatorID) VALUES
('$noTujuan', '$pesan', 'Gammu')");
?>
<script language="javascript">
alert("SMS dikirim!!");
document.location="../../media.php?module=inbox";
</script><?php
}
}
?>
Modul Outbox
Outbox.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
$aksi="modul/mod_outbox/aksi_outbox.php";
$p = new Paging;
$batas = 15;
$posisi = $p->cariPosisi($batas);
$tampil = mysql_query("SELECT * FROM outbox ORDER BY ID DESC LIMIT $posisi,$batas");
echo "<h2>Outbox</h2>";
echo "<table class='list'><thead>
<tr>
<td class='left'>ISI SMS</td>
<td class='left'>Tanggal Kirim</td>
<td class='left'>Tujuan</td>
<td class='center'>aksi</td>
</tr></thead> ";
$no = $posisi+1;
while ($r=mysql_fetch_array($tampil)){
}
?>
Aksi_outbox.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
include "../../config/koneksi.php";
$module=$_GET['module'];
$act=$_GET['act'];
// Hapus SMS
if ($module=='outbox' AND $act=='hapus'){
mysql_query("DELETE FROM outbox WHERE ID = '$_GET[id]'");
header('location:../../media.php?module='.$module);
}
}
?>
Modul sentitem
Berfungsi sebagai tampilan sms yang sudah terkirim atau laporan sms terkirim.
Sentitem.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
$aksi="modul/mod_sentitem/aksi_sentitem.php";
$p = new Paging;
$batas = 15;
$posisi = $p->cariPosisi($batas);
$tampil = mysql_query("SELECT * FROM sentitems ORDER BY ID DESC LIMIT $posisi,$batas");
echo "<h2>Sentitem</h2>";
echo "<table class='list'><thead>
<tr>
<td class='left'>ISI SMS</td>
<td class='left'>Waktu Terkirim</td>
<td class='left'>Tujuan</td>
<td class='left'>Status Kirim</td>
<td class='center'>aksi</td>
</tr></thead> ";
$no = $posisi+1;
while ($r=mysql_fetch_array($tampil)){
}
?>
Aksi_sentitem.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
include "../../config/koneksi.php";
$module=$_GET['module'];
$act=$_GET['act'];
// Hapus SMS
if ($module=='sentitem' AND $act=='hapus'){
mysql_query("DELETE FROM sentitems WHERE ID = '$_GET[id]'");
header('location:../../media.php?module='.$module);
}
}
?>
Modul Group
Berfungsi untuk menyimpan data pengelompokan nomor telepon dari daftar phonebook.
Group.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
$aksi="modul/mod_group/aksi_group.php";
switch($_GET[act]){
// Tampil group
default:
$p = new Paging;
$batas = 15;
$posisi = $p->cariPosisi($batas);
$tampil = mysql_query("SELECT * FROM sms_group ORDER BY idgroup ASC LIMIT $posisi,
$batas");
echo "<h2>Group Phonebook</h2>
<input type=button value='Tambah group' onclick=\"window.location.href='?
module=group&act=tambahgroup';\">";
case "tambahgroup":
echo "<h2>Tambah Group</h2>
<form method=POST action='$aksi?module=group&act=input'>
<table class='list'>
<tr><td>Nama Group</td> <td> : <input type=text name='namagroup'></td></tr>
<tr><td colspan=2><input type=submit value=Simpan>
<input type=button value=Batal onclick=self.history.back()></td></tr>
</table></form>";
break;
case "editgroup":
$edit=mysql_query("SELECT * FROM sms_group WHERE idgroup='$_GET[idgroup]'");
$r=mysql_fetch_array($edit);
Aksi_group.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
include "../../config/koneksi.php";
$module=$_GET['module'];
$act=$_GET['act'];
// Input Group
if ($module=='group' AND $act=='input'){
mysql_query("INSERT INTO sms_group VALUES(NULL,'$_POST[namagroup]')");
header('location:../../media.php?module='.$module);
}
// Update Group
elseif ($module=='group' AND $act=='update'){
$id = $_POST['id'];
$idgroup = $_POST['idgroup'];
$group = $_POST['namagroup'];
mysql_query("UPDATE sms_group SET sms_group.group = '$group' WHERE idgroup = '$id'");
header('location:../../media.php?module='.$module);
}
// Hapus Group
elseif ($module=='group' AND $act=='hapus'){
mysql_query("DELETE FROM sms_group WHERE idgroup='$_GET[idgroup]'");
header('location:../../media.php?module='.$module);
}
}
?>
Modul Phonebook
Berfungsi untuk menyimpan data nomor telepon sebagai salah satu fungsi dari aplikasi sms.
Phonebook.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
$aksi="modul/mod_phonebook/aksi_phonebook.php";
switch($_GET[act]){
// Tampil phonebook
default:
echo "<h2>Phonebook</h2>";
echo" <div class='box'><div class='left'><input type=button value='Tambah Phonebook'
onclick=\"window.location.href='?module=phonebook&act=tambahphonebook';\"></div>
<div class='right'><form method=get action='$_SERVER[PHP_SELF]'>
<input type=hidden name=module value=phonebook>
Masukkan Nama Phonebook : <input type=text name='nama'> <input type=submit value=Cari>
</form></div></div>";
if (empty($_GET['kata'])){
echo "<table class='list'><thead>
<tr>
<td class='left'>No</td>
<td class='left'>Nama</td>
<td class='left'>Nomor HP</td>
<td class='center'>aksi</td>
</tr></thead> ";
$p = new Paging;
$batas = 15;
$posisi = $p->cariPosisi($batas);
$tampil = mysql_query("SELECT * FROM sms_phonebook WHERE nama LIKE '%$_GET[nama]%'
ORDER BY NAMA ASC LIMIT $posisi,$batas");
$no = $posisi+1;
while ($r=mysql_fetch_array($tampil)){
echo "<td class='left' width='25'>$no</td>
<td class='left'>$r[nama]</td>
<td class='left'>$r[noTelp]</td>
<td class='center' width='90'><a href=?
module=phonebook&act=editphonebook&id=$r[noTelp]><img src='images/edit.png' border='0'
title='edit' /></a>
<a href=$aksi?module=phonebook&act=hapus&id=$r[noTelp]><img
src='images/hapus.png' border='0' title='hapus' /></a>
<a href=?module=phonebook&act=kirimsms&id=$r[noTelp]><img
src='images/sms.png' border='0' title='kirim sms' /></a>
</td></tr>";
$no++;
}
echo "</table>";
case "editphonebook":
$id = str_replace(" ","+", $_GET['id']);
$edit=mysql_query("SELECT * FROM sms_phonebook WHERE noTelp='$id'");
$r=mysql_fetch_array($edit);
case "kirimsms":
$hptujuan = str_replace(" ", "+", $_GET['id']);
$query = "SELECT nama FROM sms_phonebook WHERE noTelp = '$hptujuan'";
$hasil = mysql_query($query);
$r = mysql_fetch_array($hasil);
$nama = $r['nama'];
echo "<h2>Kirim SMS</h2>
<form name=form1 method=POST action=$aksi?module=phonebook&act=kirimsms>
<table class='list'>
<input type='hidden' name='phone' value='$hptujuan'>
<tr><td class='left'><b>Nomor Tujuan :</b> ".$nama." (".$hptujuan.")</td></tr>
<tr><td class='left'>Message : </td></tr>
<tr><td><textarea name='pesan' style='width: 350px; height: 120px;' OnFocus='Count();'
OnClick='Count();' onKeydown ='Count(); OnChange='Count();'
onKeyup='Count();'></textarea></td></tr>
<tr><td class='left'>Panjang SMS : <input type='text' readonly name='counter' size='3' value='0'
/> </td></tr>
<tr><td class='left' colspan=2><input type=submit value=Kirim SMS>
<input type=button value=Batal onclick=self.history.back()></td></tr>
</table></form>";
break;
}
}
?>
Modul SMS
Sms.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
$aksi="modul/mod_sms/aksi_sms.php";
echo "<h2>Kirim SMS Semua Relawan</h2>";
echo"<div><form name=form1 method=POST action=$aksi?
module=sms&act=kirimsms>
<table class='list'>
<tr><td class='left'><b>Pilih Nomor Tujuan :<br>
<select name='tujuan[]' multiple='multiple' size='6' style='height: 100%; width=
100%'>";
}
?>
Aksi_sms.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
include "../../config/koneksi.php";
$module=$_GET['module'];
$act=$_GET['act'];
// Kirim SMS
if($module=='sms' AND $act=='kirimsms'){
$tujuan=$_POST['tujuan'];
$pesan = $_POST['pesan'];
if($tujuan){
foreach ($tujuan as $t){
mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded, CreatorID) VALUES
('$t', '$pesan', 'Gammu')");
}?>
<script language="javascript">
alert("SMS dikirim!!");
document.location="../../media.php?module=home";
</script><?php
}
}
}
?>
Smsgroup.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
$aksi="modul/mod_smsgroup/aksi_smsgroup.php";
echo "<h2>Kirim SMS Group</h2>";
echo"<div><form name=form1 method=POST action=$aksi?
module=smsgroup&act=kirimsmsgroup>
<table class='list'>
<tr><td class='left'><b>Pilih Group Tujuan :<br>
<select name='group'>
<option value=0 selected>- Pilih Group -</option>";
$query = "SELECT * FROM sms_group order by idgroup asc";
$hasil = mysql_query($query);
while ($r = mysql_fetch_array($hasil)) {
echo "<option value='$r[idgroup]'>$r[group]</option>";
}
echo"</select>
</td></tr>
<tr><td class='left'>Message : </td></tr>
<tr><td><textarea name='pesan' style='width: 350px; height: 120px;' OnFocus='Count();'
OnClick='Count();' onKeydown ='Count(); OnChange='Count();'
onKeyup='Count();'></textarea></td></tr>
<tr><td class='left'>Panjang SMS : <input type='text' readonly name='counter' size='3' value='0'
/> </td></tr>
<tr><td class='left' colspan=2><input type=submit value=Kirim SMS>
<input type=button value=Batal onclick=self.history.back()></td></tr>
</table></form></div>";
}
?>
Aksi_smsgroup.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
include "../../config/koneksi.php";
$module=$_GET['module'];
$act=$_GET['act'];
// Kirim SMS
if($module=='smsgroup' AND $act=='kirimsmsgroup'){
$tujuan=$_POST['group'];
$pesan = $_POST['pesan'];
Modul calon
Calon.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
$aksi="modul/mod_calon/aksi_calon.php";
switch($_GET[act]){
// Tampil calon
default:
echo "<h2>Data Calon dan Wakil Calon Pemilu</h2>";
echo" <div class='box'><div class='left'><input type=button value='Tambah Calon'
onclick=\"window.location.href='?module=calon&act=tambahcalon';\"></div></div>";
while($r=mysql_fetch_array($tampil)){
case "tambahcalon":
echo "<h2>Tambah Calon</h2>
<form method=POST action='$aksi?module=calon&act=input' enctype='multipart/form-data'>
<table class='list'><tbody>
<tr><td width=70>Nomor Calon</td> <td> : <input type=text name='nomor'> *) Isi Dengan
1,2,3...dst</td></tr>
<tr><td width=70>Nama Calon</td> <td> : <input type=text name='calon'
size='60'></td></tr>
<tr><td width=70>Nama Wakil Calon</td> <td> : <input type=text
name='wacalon' size='60'></td></tr>
<tr><td>Foto</td> <td> : <input type=file name='fupload' size=40>
<br>Tipe gambar harus JPG/JPEG dan ukuran lebar maks: 400 px</td></tr>
</td></tr>
<tr><td colspan=2><input type=submit value=Simpan>
<input type=button value=Batal onclick=self.history.back()></td></tr>
</tbody></table></form>";
break;
case "editcalon":
$edit = mysql_query("SELECT * FROM sms_calon WHERE id_calon='$_GET[id]'");
$r = mysql_fetch_array($edit);
}
?>
Aksi_calon.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
include "../../config/koneksi.php";
include "../../config/library.php";
include "../../config/fungsi_thumb.php";
$module=$_GET['module'];
$act=$_GET['act'];
// Hapus calon
if ($module=='calon' AND $act=='hapus'){
$data=mysql_fetch_array(mysql_query("SELECT foto FROM sms_calon WHERE
id_calon='$_GET[id]'"));
if ($data['foto']!=''){
mysql_query("DELETE FROM sms_calon WHERE id_calon='$_GET[id]'");
unlink("foto/$_GET[namafile]");
unlink("foto/medium_$_GET[namafile]");
unlink("foto/small_$_GET[namafile]");
}
else{
mysql_query("DELETE FROM sms_calon WHERE id_calon='$_GET[id]'");
}
header('location:../../media.php?module='.$module);
}
// Input calon
elseif ($module=='calon' AND $act=='input'){
$lokasi_file = $_FILES['fupload']['tmp_name'];
$tipe_file = $_FILES['fupload']['type'];
$nama_file = $_FILES['fupload']['name'];
$acak = rand(1,99);
$nama_file_unik = $acak.$nama_file;
// Update calon
elseif ($module=='calon' AND $act=='update'){
$lokasi_file = $_FILES['fupload']['tmp_name'];
$tipe_file = $_FILES['fupload']['type'];
$nama_file = $_FILES['fupload']['name'];
$acak = rand(1,99);
$nama_file_unik = $acak.$nama_file;
Modul Relawan
Relawan.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
$aksi="modul/mod_relawan/aksi_relawan.php";
switch($_GET[act]){
// Tampil relawan
default:
echo "<h2>Data Relawan</h2>";
echo" <div class='box'><div class='left'><input type=button value='Tambah Relawan'
onclick=\"window.location.href='?module=relawan&act=tambahrelawan';\"> <input
type=button value='Kirim SMS Ke Semua Relawan' onclick=\"window.location.href='?
module=relawan&act=kirimsemua';\"></div>
<div class='right'><form method=get action='$_SERVER[PHP_SELF]'>
<input type=hidden name=module value=relawan>
Masukkan Nama Relawan : <input type=text name='nama'> <input type=submit value=Cari>
</form></div></div>";
if (empty($_GET['kata'])){
echo "<table class='list'><thead>
<tr>
<td class='left'>No</td>
<td class='left'>Nama</td>
<td class='left'>Nomor HP</td>
<td class='center'>aksi</td>
</tr></thead> ";
$p = new Paging;
$batas = 15;
$posisi = $p->cariPosisi($batas);
$tampil = mysql_query("SELECT * FROM sms_relawan WHERE nama LIKE '%$_GET[nama]%'
ORDER BY NAMA ASC LIMIT $posisi,$batas");
$no = $posisi+1;
while ($r=mysql_fetch_array($tampil)){
echo "<td class='left' width='25'>$no</td>
<td class='left'>$r[nama]</td>
<td class='left'>$r[noTelp]</td>
<td class='center' width='90'><a href=?
module=relawan&act=editrelawan&id=$r[noTelp]><img src='images/edit.png' border='0'
title='edit' /></a>
<a href=$aksi?module=relawan&act=hapus&id=$r[noTelp]><img
src='images/hapus.png' border='0' title='hapus' /></a>
<a href=?module=relawan&act=kirimsms&id=$r[noTelp]><img
src='images/sms.png' border='0' title='kirim sms' /></a>
</td></tr>";
$no++;
}
echo "</table>";
</table></form>";
break;
case "editrelawan":
$id = str_replace(" ","+", $_GET['id']);
$edit=mysql_query("SELECT * FROM sms_relawan WHERE noTelp='$id'");
$r=mysql_fetch_array($edit);
case "kirimsms":
$hptujuan = str_replace(" ", "+", $_GET['id']);
$query = "SELECT nama FROM sms_relawan WHERE noTelp = '$hptujuan'";
$hasil = mysql_query($query);
$r = mysql_fetch_array($hasil);
$nama = $r['nama'];
echo "<h2>Kirim SMS</h2>
<form name=form1 method=POST action=$aksi?module=relawan&act=kirimsms>
<table class='list'>
<input type='hidden' name='phone' value='$hptujuan'>
<tr><td class='left'><b>Nomor Tujuan :</b> ".$nama." (".$hptujuan.")</td></tr>
<tr><td class='left'>Message : </td></tr>
<tr><td><textarea name='pesan' style='width: 350px; height: 120px;' OnFocus='Count();'
OnClick='Count();' onKeydown ='Count(); OnChange='Count();'
onKeyup='Count();'></textarea></td></tr>
<tr><td class='left'>Panjang SMS : <input type='text' readonly name='counter' size='3' value='0'
/> </td></tr>
<tr><td class='left' colspan=2><input type=submit value=Kirim SMS>
<input type=button value=Batal onclick=self.history.back()></td></tr>
</table></form>";
break;
case "kirimsemua":
echo "<h2>Kirim SMS Ke Semua Relawan</h2>
<form name=form1 method=POST action=$aksi?module=relawan&act=kirimsemua>
<table class='list'>
<tr><td class='left'>Message : </td></tr>
<tr><td><textarea name='pesan' style='width: 350px; height: 120px;' OnFocus='Count();'
OnClick='Count();' onKeydown ='Count(); OnChange='Count();'
onKeyup='Count();'></textarea></td></tr>
<tr><td class='left'>Panjang SMS : <input type='text' readonly name='counter' size='3' value='0'
/> </td></tr>
<tr><td class='left' colspan=2><input type=submit value=Kirim SMS Ke Semua>
<input type=button value=Batal onclick=self.history.back()></td></tr>
</table></form>";
break;
}
}
?>
Aksi_relawan.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
include "../../config/koneksi.php";
$module=$_GET['module'];
$act=$_GET['act'];
// Input Relawan
if ($module=='relawan' AND $act=='input'){
$nama = $_POST['nama'];
$alamat = $_POST['alamat'];
$tgllhr = $_POST['tgllhr'];
$notelp = $_POST['notelp'];
if (substr($notelp, 0, 1) == '0')
{
$notelp[0] = "X";
$notelp = str_replace("X", "+62", $notelp);
}
else $notelp = $notelp;
// Update Relawan
elseif ($module=='relawan' AND $act=='update'){
$notelplama = str_replace(" ","+", $_POST['notelplama']);
$notelp = str_replace(" ","+", $_POST['notelp']);
$nama = $_POST['nama'];
$alamat = $_POST['alamat'];
$tgllhr = $_POST['tgllhr'];
if (substr($notelp, 0, 1) == '0')
{
$notelp[0] = "X";
$notelp = str_replace("X", "+62", $notelp);
}
else $notelp = $notelp;
// Hapus Relawan
elseif ($module=='relawan' AND $act=='hapus'){
$id = str_replace(" ","+", $_GET['id']);
mysql_query("DELETE FROM sms_relawan WHERE noTelp = '$id'");
header('location:../../media.php?module='.$module);
}
// Kirim SMS
elseif ($module=='relawan' AND $act=='kirimsms'){
$noTujuan = str_replace(" ","+", $_POST['phone']);
$pesan = $_POST['pesan'];
mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded, CreatorID) VALUES
('$noTujuan', '$pesan', 'Gammu')");
?>
<script language="javascript">
alert("SMS dikirim!!");
document.location="../../media.php?module=relawan";
</script><?php
}
}
?>
Smsrelawan.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
$aksi="modul/mod_smsrelawan/aksi_smsrelawan.php";
echo "<h2>Kirim SMS Ke Semua Relawan</h2>";
echo"<div><form name=form1 method=POST action=$aksi?
module=smsrelawan&act=kirimsmsrelawan>
<table class='list'>
<tr><td class='left'>Message : </td></tr>
<tr><td><textarea name='pesan' style='width: 350px; height: 120px;' OnFocus='Count();'
OnClick='Count();' onKeydown ='Count(); OnChange='Count();'
onKeyup='Count();'></textarea></td></tr>
<tr><td class='left'>Panjang SMS : <input type='text' readonly name='counter' size='3' value='0'
/> </td></tr>
<tr><td class='left' colspan=2><input type=submit value=Kirim SMS>
<input type=button value=Batal onclick=self.history.back()></td></tr>
</table></form></div>";
}
?>
Aksi_smsrelawan.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
include "../../config/koneksi.php";
$module=$_GET['module'];
$act=$_GET['act'];
$pesan = $_POST['pesan'];
Modul TPS
Merupakan modul inti pada aplikasi ini, kerena di modul ini teknik statistik yan sudah dijelaskan
diterapkan secara programming. Mulai dari pehitungan perhitungan populasi sampel, perhitungan
rata-rata pemilih, sampai dengan menghitung jumlah sampel TPS.
Tps.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
//cek jka tps sudah dibuat atau belum
$cektps = "SELECT * FROM sms_tps";
$hasil = mysql_query($cektps);
$num_rows = mysql_num_rows($hasil);
if ($num_rows<1) {
$aksi="modul/mod_tps/aksi_tps.php";
echo "<h2>Perhitungan TPS Sampel</h2>
<form method=POST action='$aksi?module=tps&act=hitung'>
<table class='list'>
<tr><td class='left'>Tingkat Kepercayaan</td>
<td> : <select name='percaya'>
<option value=0 selected>- Pilih Tk. Kepercayaan -</option>
<option value=1>90%</option>
<option value=2>95%</option>
<option value=3>99%</option>
</select>
</td></tr>
<tr><td>Sampling Error </td> <td> : <input type=text name='error'> *) 0 - 1
(dalam persen, gunakan koma jika nilai dibawah 1)</td></tr>
<tr><td>Jumlah Pemilih </td> <td> : <input type=text name='pemilih'> *) tanpa
pemisah koma (contoh : 12000,50000,100000)</td></tr>
<tr><td>Jumlah TPS </td> <td> : <input type=text name='tps'> *) tanpa pemisah
koma (contoh : 1250, 850) </td></tr>
<tr><td colspan=2><input type=submit value=Buat>
<input type=button value=Batal onclick=self.history.back()></td></tr>
</table></form>";
}
if ($num_rows>=1) {
$aksi="modul/mod_tps/aksi_tps.php";
switch($_GET[act]){
// Tampil tps
default:
echo "<h2>Data Sampel TPS</h2>";
$p = new Paging;
$batas = 35;
$posisi = $p->cariPosisi($batas);
$tampil = mysql_query("SELECT * FROM sms_tps WHERE nama_tps LIKE '%$_GET[nama]%' ORDER
BY id_tps ASC LIMIT $posisi,$batas");
$no = $posisi+1;
while ($r=mysql_fetch_array($tampil)){
echo "<td class='left' width='25'>$no</td>
<td class='left'>$r[nama_tps]</td>
<td class='left'>$r[lokasi]</td>
<td class='left'>$r[total_suara]</td>
<td class='center' width='90'><a href=?module=tps&act=edittps&id=$r[id_tps]><img
src='images/edit.png' border='0' title='edit' /></a>
</td></tr>";
$no++;
}
echo "</table>";
case "edittps":
$edit=mysql_query("SELECT * FROM sms_tps WHERE id_tps='$_GET[id]'");
$r=mysql_fetch_array($edit);
while($w=mysql_fetch_array($tampil)){
if ($r[noTelp]==$w[noTelp]){
echo "<option value=$w[noTelp] selected>$w[nama]</option>";
}
else{
echo "<option value=$w[noTelp]>$w[nama]</option>";
}
}
echo "</select></td></tr>
<input type='hidden' name='id' value='$r[id_tps]'>
<tr><td class='left' colspan=2><input type=submit value=Update>
<input type=button value=Batal onclick=self.history.back()></td></tr>
</table></form>";
break;
}
}
?>
Aksi_tps.php
<?php
session_start();
if (empty($_SESSION['username']) AND empty($_SESSION['passuser'])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=../../index.php><b>LOGIN</b></a></center>";
}
else{
include "../../config/koneksi.php";
$module=$_GET['module'];
$act=$_GET['act'];
// Hitung Dan Buat TPS sampel
if ($module=='tps' AND $act=='hitung'){
$percaya = $_POST['percaya'];
$error = $_POST['error'];
$pemilih = $_POST['pemilih'];
$tps =$_POST['tps'];
if ($percaya==1) $percaya=1.65;
else if ($percaya==2) $percaya=1.96;
else if ($percaya==3) $percaya=2.58;
else $percaya==0;
$error = $error/100;
}
else{
?>
<script language="javascript">
alert("Kesalahan pengisian field, harap ulangi lagi!!");
document.location="../../media.php?module=tps";
</script><?php
}
header('location:../../media.php?module='.$module);
}
// Edit dan lengkapi lokasi dan jumlah suara masing-masing tps terpilih
if ($module=='tps' AND $act=='update'){
$lokasi=$_POST['lokasi'];
$totalsuara=$_POST['total'];
$notelp=$_POST['relawan'];
mysql_query("UPDATE `sms_tps` SET lokasi = '$lokasi',
`total_suara` = '$totalsuara',
`noTelp` = '$notelp'
WHERE `id_tps` = '$_POST[id]'");
header('location:../../media.php?module='.$module);
}
?>
Modul Autoreplay
Berfungsi memproses sms yang dikirim relawan untuk selanjutnya diakumulasikan menjadi total
perhitungan suara quick count
Berikut format smsnya:
Penjelasan:
- QC = Quick Count
- NOMOR TPS = Nomor urut/nama TPS berdasarkan hasil perhitungan penentuan sampel
- SUARA A = Jumlah suara calon nomor urut 1
- SUARA B = jumlah suara calon nomor uru 2
- SUARA C = jumlah suara calon nomor urut 3
- SUARA TIDAK SAH = jumlah suara yang tidak sah
Contoh
QC#TPS 121#50#100#70#9
Yang berarti TPS 121, suara A sebanyak 121 suara, suara B sebanyak 50, suara C sebanyak 100 dan
suara tidak sah sebanyak 9.
Autosuara.php
<html>
<head>
<!-- refresh script setiap 30 detik -->
<meta http-equiv="refresh" content="10; url=<?php $_SERVER['PHP_SELF']; ?>">
</head>
<body>
<h1>SMS server running....</h1>
<h1>Jangan Tutup Browser ini selama waktu pengiriman data suara dari relawan....</h1>
<?php
include "../../config/koneksi.php";
// query untuk membaca SMS yang belum diproses
$query = "SELECT * FROM inbox WHERE Processed = 'false'";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
// membaca ID Pesan
$id = $data['ID'];
// membaca no pengirim
$noPengirim = $data['SenderNumber'];
// proses parsing
// jika kata terdepan dari SMS adalah 'NILAI' maka cari nilai Kalkulus
if ($pecah[0] == "QC")
{
// baca Nomor TPS dari pesan SMS
$tps = $pecah[1];
$suara1 = $pecah[2];
$suara2 = $pecah[3];
$suara3 = $pecah[4];
$suara4 = $pecah[5];
?>
</body>
</html>
Modul hasil
Dimana hasil rekapitulasi Quick count akan digambarkan secara grafik. Penulisan menggunakan
bantuan dari class fusionchart.
Hasilpemilu.php
<?php
error_reporting(0);
include "../../config/koneksi.php";
include "../../fusioncharts/class/FusionCharts_Gen.php";
?>
<html>
<head>
<title>Hasil Rekapitulasi Suara Quick Count Pemilu</title>
<script language='javascript' src='../../fusioncharts/js/FusionCharts.js'></script>
<link href='../../style.css' rel='stylesheet' type='text/css'>
</head>
<body>
<?php
# Include FusionCharts PHP Class
# Create object for Column 3D chart
$FC = new FusionCharts("Column3D","850","550");
// membaca no pengirim
$suara = $data['suara'];
// memecah data suara
$pecah = explode("#", $suara);
$suara1 = $pecah[2];
$suara2 = $pecah[3];
$suara3 = $pecah[4];
$suara4 = $pecah[5];
$total1 = $total1+$suara1;
$total2 = $total2+$suara2;
$total3 = $total3+$suara3;
$total4 = $total4+$suara4;
}
$result = mysql_query('SELECT SUM(total_suara) AS total FROM sms_tps');
$r = mysql_fetch_assoc($result);
$sum = $r['total'];
$persentase1 = ($total1/$sum)*100;
$persentase2 = ($total2/$sum)*100;
$persentase3 = ($total3/$sum)*100;
$persentase4 = ($total4/$sum)*100;
$calon[] = $r['calon'];
$wacalon[] = $r['wacalon'];
}
# add chart values and category names
$FC->addChartData("$persentase1","name=$calon[0] & $wacalon[0]");
$FC->addChartData("$persentase2","name=$calon[1] & $wacalon[1]");
$FC->addChartData("$persentase3","name=$calon[2] & $wacalon[2]");
# Render Chart
$FC->renderChart();
$suaramsk = (($total1+$total2+$total3+$total4)/$sum)*100;
$suaramasuk = sprintf('%0.2f', $suaramsk);
$suaratidaksah = sprintf('%0.2f', $persentase4);
echo " Jumlah Suara Masuk ="; echo $suaramasuk; echo "%"; echo "<br>";
echo " Jumlah Suara Tidak Sah = "; echo $suaratidaksah ; echo "%";
?>
</body>
</html>
JARINGAN KOMPUTER
Anggota
Jimmy Halim (1110307055028)
Ivana agustina (1110307055027)
Meirianto (1110307055034)
Eka Prayoga (1110307055017)