Skip to content

emka.web.id

menulis pengetahuan – merekam peradaban

Menu
  • Home
  • Tutorial
  • Search
Menu

Belajar PHP: SMS Inject Gammu dengan Class Gammu-SMS-Inject

Posted on March 18, 2011

Dua minggu terakhir ini saya intens belajar lagi tentang Gammu, mempersiapkan project *gelap* untuk dunia pendidikan Indonesia (mengusir penat dan pendulum kerja yang tak tentu masa depannya). Pada artikel tentang PHP ini, kita akan mencoba menginjeksikan format SMS panjang ke Inbox Gammu, kemudian biarkan Gammu yang melanjutkan.

Class PHP untuk melakukan hal ini sudah diposting oleh om Ikhsan dari FTIK USM di PHPClasses. Berikut sourcecode class-nya:
[sourcecode language=”php”]
<?php
/**
* sms_inject
*
* @package gammu smsd class
* @author ikhsan agustian <ikhsan017@gmail.com>
* @license Distributed under GNU/GPL
* @version 0.1
* @access public
*/

class sms_inject
{
private $error, $res, $msg, $dest, $udh, $msg_part; //msg_part array of couple udh + msg

/**
* sms_inject::__construct()
* @usage object constructor
* @param mysql link resource $res
* @return void
*/
function __construct($res) //throw mysql resource as argument
{
$this->udh=array(
‘udh_length’=>’05’, //sms udh lenth 05 for 8bit udh, 06 for 16 bit udh
‘identifier’=>’00’, //use 00 for 8bit udh, use 08 for 16bit udh
‘header_length’=>’03’, //length of header including udh_length & identifier
‘reference’=>’00’, //use 2bit 00-ff if 8bit udh, use 4bit 0000-ffff if 16bit udh
‘msg_count’=>1, //sms count
‘msg_part’=>1 //sms part number
);
$this->msg_part=array();
$this->res=$res;
$this->error=array();
}

/**
* sms_inject::mass_sms()
* @usage tell gammu-smsd to send one sms to many recipient
* @param string $msg
* @param array $dest
* @param string $sender
* @return void
*/
function mass_sms($msg,$dest,$sender=”)
{
$this->msg=$msg;
$this->create_msg();
if(!is_array($dest))
{
$this->send_sms($msg,$dest,$sender);
}
else
{
foreach($dest as $dst)
{
$this->send_sms($msg,$dst,$sender);
}
}
}

/**
* sms_inject::send_sms()
* @usage tell gammu-smsd to send sms to sepcified phone number
* @param string $msg
* @param string $dest
* @param string $sender
* @return false if error
*/
function send_sms($msg,$dest,$sender=”)
{
if(!$dest)
{
$this->error[]=’No destination number defined’;
return false;
}
$this->msg=$msg;
$this->dest=$dest;
$this->create_msg();
//uncomment to get preview
//echo "<pre>Destination : $this->dest\nSender : $sender\nMessage :\n";print_r($this->msg_part);
$this->inject($sender);
}

/**
* sms_inject::inject()
* @usage insert previously created sms part to database
* @param string $sender
* @return void
*/
private function inject($sender=”)
{
$multipart=(count($this->msg_part) > 1)?’true’:’false’;
$id=”;
foreach($this->msg_part as $number => $sms)
{
if($number==1)
{
$query="insert into outbox (`UDH`,`DestinationNumber`,`TextDecoded`,`MultiPart`,`SenderID`) values (‘{$sms[‘udh’]}’,'{$this->dest}’,'{$sms[‘msg’]}’,'{$multipart}’,’$sender’)";
mysql_query($query,$this->res);
$id=mysql_fetch_assoc(mysql_query("select last_insert_id() as id",$this->res));
$id=$id[‘id’];
}
else
{
$query="insert into outbox_multipart (`UDH`,`SequencePosition`,`TextDecoded`,`ID`) values (‘{$sms[‘udh’]}’,'{$number}’,'{$sms[‘msg’]}’,'{$id}’)";
mysql_query($query,$this->res);
}
}
}

/**
* sms_inject::create_msg()
* @usage create sms message (and create udh if sms is multipart)
* @return void
*/
private function create_msg()
{
$x=1;
if(strlen($this->msg)<=160) //if single sms, send without udh
{
$this->msg_part[$x][‘udh’]=”;
$this->msg_part[$x][‘msg’]=$this->msg;
}
else //if multipart sms, split into 153 character each part
{
$msg=str_split($this->msg,153);
$ref=mt_rand(1,255);
$this->udh[‘msg_count’]=$this->dechex_str(count($msg));
$this->udh[‘reference’]=$this->dechex_str($ref);
foreach($msg as $part)
{
$this->udh[‘msg_part’]=$this->dechex_str($x);
$this->msg_part[$x][‘udh’]=implode(”,$this->udh);
$this->msg_part[$x][‘msg’]=$part;
$x++;
}
}
}

/**
* sms_inject::dechex_str()
* @usage convert decimal to zerofilled hexadecimal
* @param integer $ref
* @return 2 digit hexa-decimal in string format
*/
private function dechex_str($ref)
{
return ($ref <= 15 )?’0′.dechex($ref):dechex($ref);
}
}
?>
[/sourcecode]

Nah untuk contoh penggunaannya:
[sourcecode language=”php”]
include_once ‘sms_inject.class.php’;

$res=mysql_connect(‘localhost’,’root’,”);
mysql_select_db(‘sms’,$res);

$sms=new sms_inject($res);
$msg="In the cellular phone industry, mobile phones and their networks sometimes support concatenated short message service (or concatenated SMS) to overcome the limitation on the number of characters that can be sent in a single SMS text message transmission (which is usually 160).";
$sms->send_sms($msg,’085747078078′,’send_sms’);
$sms->mass_sms($msg,array(‘085747079079′,’085225307799′,’085225099883′),’mass_sms’);
[/sourcecode]

Tinggal kreativitas anda bermain dengan class php ini!

Terbaru

  • Begini Cara Hapus Akun DANA Premium Secara Permanen!
  • Bukan Cuma Mitos! Ternyata Dinasti Song Punya Tempat Nongkrong Mirip PIK, Begini Isinya
  • Bukan Fiksi! Ini Bukti Manusia Punya ‘Kekuatan Super’ Akibat Mutasi Genetik dan Lingkungan
  • Dikelilingi Cincin Api, Kok Kalimantan Malah Nggak Punya Gunung Berapi? Ini Jawabannya!
  • Misteri Newgrange: Kuburan Batu 5.000 Tahun yang Menyimpan Peta Galaksi, Kok Bisa?
  • Transformasi Ekstrem Pesawat IL-96: Ganti 4 Mesin Jadi 2 Mesin Raksasa PD-35, Emang Bisa?
  • Apakah Aplikasi Cash Reels Penipu?
  • Ini Daftar Kode Redeem Fish It Roblox Terbaru Januari 2026 buat Panen Hadiah!
  • Main Game Dapat Duit? Cek Dulu Fakta Shop Shelf Master Sebelum Nyesel!
  • Monitor Putih Sejutaan Spek Dewa, Acer S243y Bikin Ngiler!
  • Kapsul Luar Angkasa China Ini Bisa Mendarat Selembut Awan, SpaceX Bakal Ketar-ketir?
  • Kereta Maglev 500 KM/Jam: Proyek Gila 1.100 Triliun dari Jepang
  • Kenapa Perusahaan China Mulai Ungguli Amerika di Sektor AI dan Otomotif
  • Mau Beli iPhone 17 Tapi Budget Mepet? Ini Daftar Alternatif iPhone yang Masih Layak Dibeli
  • Apa itu OFTV? Pengertian OnlyFans TV: Platform Streaming Gratis Tanpa Iklan dari OnlyFans
  • Heboh Video 5 Menit Elga Puruk Cahu, Kok Bisa Seviral Itu? Ini Link Downloadnya?
  • Cara Mengatasi Masalah Windows Deactivated Setelah Kloning Disk
  • Investasi Bitnest Janjikan Profit Stabil, Yakin Aman? Cek Dulu Faktanya Sebelum Nyesel!
  • Cara Mengatasi Masalah Klik Mouse Tidak Berfungsi di Windows
  • Apple Dikabarkan Bikin iPhone Layar Lengkung 4 Sisi, Niru Xiaomi?
  • Inikah HP Samsung Terawet? Samsung Diam-diam Uji Baterai 20.000 mAh
  • Ini Deretan HP Murah RAM 12 GB yang Bisa Bikin Multitasking Ngebut!
  • Ini Trik Rahasia Dapat Candy Blossom di Grow a Garden, Nggak Cuma dari Event!
  • Siap-siap Boros! Ini Bocoran Skin Starlight Januari 2026 dan Update Seru M7
  • Moto X70 Air Pro Bakal Punya Kamera Periskop Canggih!
  • Ternyata Nggak Semua Aplikasi Bisa QRIS CPM di Alfamart, Ini Penjelasannya!
  • Lagi Order Tiba-tiba Gojek Error? Jangan Panik Dulu, Coba Langkah Praktis Ini!
  • Belum Tahu? Inilah Cara Melihat Kode Verifikasi Email Saya 6 Digit yang Sering Bikin Bingung!
  • Belum Tahu? Ini Cara Dapat Akses Premium Viu & Vidio Gratis Pakai Axis!
  • Belum Tahu? Inilah Fakta Kamera 0,5 di Samsung Galaxy A05s, Jangan Salah Beli!
  • Apa itu Cosmic Desktop: Pengertian dan Cara Pasangnya di Ubuntu 26.04?
  • Apa Itu Auvidea X242? Pengertian Carrier Board Jetson T5000 dengan Dual 10Gbe
  • Elementary OS 8.1 Resmi Rilis: Kini Pakai Wayland Secara Standar!
  • Apa Itu Raspberry Pi Imager? Pengertian dan Pembaruan Versi 2.0.3 yang Wajib Kalian Tahu
  • Performa Maksimal! Ini Cara Manual Update Ubuntu ke Linux Kernel 6.18 LTS
  • Inilah Cara Mengamankan Aplikasi LLM dengan AI Guardrails agar Tidak Halusinasi dan Bocor Data
  • Prompt AI Poster Vecna Stranger Things
  • Inilah Cara Menghancurkan Model AI Raksasa Hanya Bermodal 250 Dokumen
  • Tutorial Cara Menjalankan LLM Private di Laptop Sendiri, Aman dan Gratis Tanpa Internet
  • Begini Cara Buat Generator Stiker WhatsApp Otomatis Menggunakan Python dan OpenAI GPT-Image-1
  • Apa Itu Scam Network? Pengertian Jaringan Situs Palsu yang Baru Saja Digerebek FBI
  • Masih Ragu Soal Privasi OnlyFans? Ini Fakta dan Risiko Keamanan Digital yang Wajib Kalian Tahu!
  • Apa itu Praktik Pelacakan Data Ilegal? (Belajar dari Kasus Denda Apple di Italia)
  • OnlyFans Aman Nggak Sih? Cek Dulu Fakta dan Risiko Keamanannya Sebelum Kalian Daftar!
  • Apa itu Elga Puruk Cahu? Ini Alasan Video 5 Menitnya Viral Banget!
Beli Pemotong Rumput dengan Baterai IRONHOOF 588V Mesin Potong Rumput 88V disini https://s.shopee.co.id/70DBGTHtuJ
Beli Morning Star Kursi Gaming/Kantor disini: https://s.shopee.co.id/805iTUOPRV

©2026 emka.web.id | Design: Newspaperly WordPress Theme