Bingung mau posting apa, ya daripada kosong ni blog aku posting aja salah satu fungsi PHP yang pernah aku buat. Fungsi / Script PHP ini digunakan untuk kirim SMS dengan Gammu sebagai connectornya. Di dalam fungsi ini kalian bisa SMS dengan panjang karakter terserah kalian, jadi SMSnya mau berisi sampe lebih dari 153 Karakter (1 SMS) insyaAllah bisa kekirim jadi satu, karena udah aku buktikan dan sudah banyak aku pakai. Oke silahkan lihat sourcenya dibawah ini :
<?php function sendSMS($nomorHP, $smsN){ // $nomorHP = 08484565156,1516546565,61516165165; // $nomorHandPhone memecah data dari $nomorHP dalam bentuk array nomor handphone $nomorHandPhone = explode(",",$nomorHP); $noHp = $nomorHandPhone; // menghitung jumlah nomor yang akan dikirimi SMS $juml = count($noHp); for($i=0;$i<$juml;$i++){ $qryStatus = "SHOW TABLE STATUS LIKE 'outbox'"; $hasilQery = mysql_query($qryStatus); $dataQuery = mysql_fetch_array($hasilQery); // $newForSMS digunakan untuk menyimpan ID yang terbaru dari Primary Key yang ada di table outbox // ID ini nanti yang menghubungkan antara table "outbox" dengan table "outbox_multipart" $newForSMS = $dataQuery['Auto_increment']; $hp = $noHp[$i]; // jika panjang pesan SMS kurang dari sama dengan 153 karakter // dalam gammu 153 karakter = 1 SMS if(strlen($smsN)<=153){ mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded) VALUES ('".$hp."','".$smsN."')"); }else{ // pembulatan keatas berapa total SMS yang akan dikirimkan nantinya $jmlSMS = ceil(strlen($smsN)/153); // memecah pesan SMS per 153 karakter $pecah = str_split($smsN, 153); for($j=1;$j<=$jmlSMS;$j++){ $udh = "050003A7".sprintf("%02s", $jmlSMS).sprintf("%02s", $j); $msg = $pecah[$j-1]; if ($j==1){ // pesan sms yang sudah dipecah per 153 karakter tadi // pecahan pertama disimpan dalam tabel outbox $querySend = "INSERT INTO outbox (DestinationNumber, UDH, TextDecoded, ID, MultiPart) VALUES ('".$hp."', '$udh', '".$msg."', '$newForSMS', 'true')"; }else{ // pecahan selanjutnya disimpan pada tabel outbox_multipart $querySend = "INSERT INTO outbox_multipart(UDH, TextDecoded, ID, SequencePosition) VALUES ('$udh', '".$msg."', '$newForSMS', '$j')"; } mysql_query($querySend); } } } } ?>
Semoga bermanfaat, mohon saran / kritiknya yang membangun 😀
Trima Kasih
script nya di include kan di script buat kirim sms y kakak? ato dijalankan secara manual
iya,, ditaruh di project / file yang bersangkutan jg bisa …
abis tuh tinggal panggil fungsi nya dengan parameter yang tersedia, hope this help
duh maaf itu tadi salah paste ,,,, hmmmm,,,, udah saya coba tapi masi blm jalan,,, parameter $nomorHP, $pesanSMS mesti disamakan dengan yg ad di script kirim sms y k2? hmmmm,,, jadi fungsi script diatas memproses file yg telah ada di table outbox kan?
maaf k2 banyak tanya,,, terima kasih sebelum nya
ndak harus sama kok,, yang penting pas pemanggilan fungsi ada 2 parameter yang ikut,,, misalnya gini :
[sourcecode language=”php”]
// kalo lebih dari satu nomor
sendSMS("085730419326,085730419327","Ini Isi Pesan SMS-nya");
// kalo satu nomor aja
sendSMS("085730419326","Ini Isi Pesan SMS-nya");
[/sourcecode]
kalo menurutku seh bukan memproses table outbox, tapi mengirimkan sms ke table outbox, nanti gammu -nya memproses ke table sentitems
makasih kak,, dah berhasil 🙂 ,,, hmmmm kak boleh tanya lagi gak,,, maaf ne kalo ngerepotin,, saya lagi cari2 referensi bwt TA,,, autoreply saya masih ad kurang nya,, gini kak,, ,, keyword yg saya gunakan yakni REG NAMA,, , nah kendala nya gini,, misalnya sms yg masuk REG AIDIL dia bisa reply dari database tapi kalo REG RIZAL MANDA dia gak bisa reply padahal nama tersebut ada didatabase,,, mungkin dipemecahan kata nya,,, ,udah saya otak-atik explode ny tapi tetep gak bisa kak,,, maklum saya newbie php 🙂
$sms_content=strtoupper($data[“TextDecoded”]); $array=explode(‘ ‘, $sms_content);
terima kasih sebelumnya kak
iya udah bner tuh script kmu,,,
tambahin checking habis explode itu,,, misal gini
[sourcecode language=”php”]
<?php
$sms_content=strtoupper($data["TextDecoded"]);
$array=explode(" ", $sms_content);
if($array[0]=="REG"){
if($array[1]=="AIDIL"){
sendSMS("000","Pesan");
}
}
?>
[/sourcecode]
kok saya gak bisa jalan yah disaat masuk k outbox trs di proses k sentitems..knpa gak maw ngrim dia…cos saya include ke php yg ngrim cma 1 nomer saja…
script nya seperti ini
KIRIM SMS
nomorHP
:
<input name="DestinationNumber" type="text" size=70 maxlength=50 value="”>
SMS
:
<input type="hidden" name="modeofform" value="”>
<?php if(isset($UpdatedInDB))
echo "”;
// outbox.form.php
?>
dari kode yang kamu sertakan, itu penanganan if nya gag dilanjutin ya???
kalo keputus kyk gitu, apa bisa handle if nya diproses?
trus gimana caranya script dari saya dipanggil, mohon diperjelas …
bisa gunakan bbcode [code][sourcecode="php"]source taruh sini[/sourcecode][/code]
biar bisa dilihat dengan gamapng source code mu
thanks
[sourcecode language=”php”]
<?
$KIRIM = $_POST[KIRIM];
if($KIRIM){
$DestinationNumber=addslashes(strip_tags($_POST[‘DestinationNumber’]));
$TextDecoded=addslashes(strip_tags($_POST[‘TextDecoded’]));
$sql="INSERT INTO outbox (
`UpdatedInDB` ,
`InsertIntoDB` ,
`SendingDateTime` ,
`Text` ,
`DestinationNumber` ,
`Coding` ,
`UDH` ,
`Class` ,
`TextDecoded` ,
`ID` ,
`MultiPart` ,
`RelativeValidity` ,
`SenderID` ,
`SendingTimeOut` ,
`DeliveryReport` ,
`CreatorID`
)
VALUES (
NOW() , NOW(), ‘0000-00-00 00:00:00’, NULL , ‘$DestinationNumber’, ‘Default_No_Compression’, NULL , ‘-1’, ‘$TextDecoded’, NULL , ‘false’, ‘-1’, NULL , ‘0000-00-00 00:00:00’, ‘default’, ”
)
";
mysql_query($sql);
echo "SMS MASUK KE OUTBOX";
exit;
}
?>
<BODY>
<fieldset>
<FORM name="catatanForm" method="post" enctype="multipart-form-data"
onsubmit="return CheckForm(this)"
action="">
<TABLE border=0>
<TR>
<TD colspan="3" class="headgbr">KIRIM SMS </TD>
</TR>
<TR>
<TD> </TD>
<TD></TD>
<TD> </TD>
</TR>
<TR>
<TD>nomorHP</TD>
<TD>:</TD>
<TD> <input name="DestinationNumber" type="text" size=70 maxlength=50 value="<?php echo @$DestinationNumber; ?>"> </TD>
</TR>
<TR>
<TD>DestinationNumber</TD>
<TD>:</TD>
<TD> <input name="DestinationNumber" type="text" size=70 maxlength=50 value="<?php echo @$DestinationNumber; ?>"> </TD>
</TR>
<TR>
<TD>SMS</TD>
<TD>:</TD>
<TD><textarea name="TextDecoded" cols="40" rows="4"><?php echo @$TextDecoded; ?></textarea></TD>
</TR>
<TR>
<TD height="26"> </TD>
<TD> </TD>
<TD><input type=Submit name="KIRIM" value="KIRIM"></TD>
</TR>
</TABLE>
<input type="hidden" name="modeofform" value="<?php echo $modeofform;?>">
<?php if(isset($UpdatedInDB))
echo "<input type=’hidden’ name=’UpdatedInDB’ value=’$UpdatedInDB’>";
// outbox.form.php
?>
</FORM>
</fieldset>
</BODY>
</HTML>
[/sourcecode]
nah sourcdenya kaya gini….mohon pencerahanya.
itu pada sintaks mysql_query($sql); nya coba diganti mysql_query($sql) or die (mysql_error());
ntar errornya apa?
Mas maksud dari script -> $udh = “050003A7”.sprintf(“%02s”, $jmlSMS).sprintf(“%02s”, $j); apa ya mass??? saya sedikit bingung???
itu untuk penampungan value string, dimodel seperti pemrograman C, dilakuin kyk gitu, biasanya sih berguna untuk pencegahan injeksi …
[sourcecode language=”php”]<html>
<head>
<!– refresh script setiap 5 detik –>
<meta http-equiv="refresh" content="10; url=<?php $_SERVER[‘PHP_SELF’]; ?>">
</head>
<body>
<?php
mysql_connect("localhost", "root","");
mysql_select_db("dbmahasiswa");
$query = "SELECT * FROM inbox WHERE Processed = ‘false’";// query untuk membaca SMS yang belum diproses
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
$id = $data[‘ID’];
$noPengirim = $data[‘SenderNumber’];
$msg = strtoupper($data[‘TextDecoded’]);
$pecah = explode(" ",$msg );
if($pecah[0]!="UAS"){// jika kata terdepan dari SMS adalah ‘NILAI’ maka cari nilai Kalkulus
}
{ //jika format SMS: NILAI<spasi>MATAKULIAH<spasi>NIM
if ($pecah[0] == "UAS"){
$kode = $pecah[1];
$nim = $pecah[2];
$query2 = "SELECT nilai FROM nilai WHERE nim = ‘$nim’ and kode_matakuliah=’$kode’ and kategori=’UAS’";
$hasil2 = mysql_query($query2);
if (mysql_num_rows($hasil2) == 0) $reply = "NIM/ KODE matakuliah tidak ditemukan periksa kembali NIM dan KODE matakuliah anda";
else
{
$data2 = mysql_fetch_array($hasil2);
$nilai = $data2[‘nilai’];
$reply = "NILAI MAHASISWA DENGAN NIM ".$nim." PADA MATAKULIAH ".$kode." adalah ".$nilai;
}
}
$query3 = "INSERT INTO outbox(DestinationNumber, TextDecoded) VALUES (‘$noPengirim’, ‘$reply’)";
$hasil3 = mysql_query($query3);
$query3 = "UPDATE inbox SET Processed = ‘true’ WHERE ID = ‘$id’";
$hasil3 = mysql_query($query3);
}
{
}
if ($pecah[0] == "INFO"){
$info= $pecah[1];
$data="";
$query2 = "SELECT * FROM informasi where info=’$info’";
$hasil2 = mysql_query($query2);
if (mysql_num_rows($hasil2) == 0) $reply = "maaf foramat anda salah coba cek kembali (INFO<sepasi>info yang di inginkan)";
else
{
$data3 = mysql_fetch_array($hasil2);
$tanggal = $data3["tanggal"];
$keterangan = $data3["keterangan"];
$data = "$tanggal ($keterangan)";
$reply = "Informasi ".$info." :".$data;
}
}
$query3 = "INSERT INTO outbox(DestinationNumber, TextDecoded) VALUES (‘$noPengirim’, ‘$reply’)";
$hasil3 = mysql_query($query3);
$query3 = "UPDATE inbox SET Processed = ‘true’ WHERE ID = ‘$id’";
$hasil3 = mysql_query($query3);
}
{
if ($pecah[0] == "INFORMASI"){//INFO
$info="";
$hasil = mysql_query("SELECT distinct(info) FROM informasi");
if($hasil){while($d=mysql_fetch_array($hasil)){$info=$info." ".$d["info"];}}
else{$info="INFORMASI TIDAK ADA";}
$reply = "Layanan INFO AKADEMIK adalah ".$info;
$q = "INSERT INTO outbox(DestinationNumber, TextDecoded) VALUES (‘$noPengirim’, ‘$reply’)";
$q = mysql_query($q);
$q2 = mysql_query("UPDATE inbox SET Processed = ‘true’ WHERE ID = ‘$id’");
$q2 = mysql_query($q2);
}
}
}
?>
</body>
</html>
i[/sourcecode]
maaf kk numpang naya…tolong di periksa script saya yg saya bikin buat sms auto replay…
pertanyaanya kenapa passaya coba buat mengirim sms dengan format yg sudah saya buat..kenapa selalu yg sistem membalasnya 2x
contoh saya meminta data info dengan format yang saya tentukan…
sms pertama yg di balas isi yg saya maksd..
dan sms yg ke 2 dia membalas tidak ada pesan yg ditampilkan…
jadi 1 x kirim sms sistem meblasanya 2x.
apakah ada script nya yg salah atau gmn kk..tolong pencerahanya…
thx mohon pencerahanya… 😀
mas nya kurang tepat di bagian penempatan pengiriman smsnya,,, coba hasil koreksi saya ini
[sourcecode language=”php”]
<html>
<head>
<!– refresh script setiap 5 detik –>
<meta http-equiv="refresh" content="10; url=<?php $_SERVER[‘PHP_SELF’]; ?>">
</head>
<body>
<?php
mysql_connect("localhost", "root","");
mysql_select_db("dbmahasiswa");
$query = "SELECT * FROM inbox WHERE Processed = ‘false’";// query untuk membaca SMS yang belum diproses
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil)){
$id = $data[‘ID’];
$noPengirim = $data[‘SenderNumber’];
$msg = strtoupper($data[‘TextDecoded’]);
$pecah = explode(" ",$msg );
if($pecah[0]!="UAS"){// jika kata terdepan dari SMS adalah ‘NILAI’ maka cari nilai Kalkulus
}
//jika format SMS: NILAI<spasi>MATAKULIAH<spasi>NIM
if ($pecah[0] == "UAS"){
$kode = $pecah[1];
$nim = $pecah[2];
$query2 = "SELECT nilai FROM nilai WHERE nim = ‘$nim’ and kode_matakuliah=’$kode’ and kategori=’UAS’";
$hasil2 = mysql_query($query2);
if (mysql_num_rows($hasil2) == 0) $reply = "NIM/ KODE matakuliah tidak ditemukan periksa kembali NIM dan KODE matakuliah anda";
else{
$data2 = mysql_fetch_array($hasil2);
$nilai = $data2[‘nilai’];
$reply = "NILAI MAHASISWA DENGAN NIM ".$nim." PADA MATAKULIAH ".$kode." adalah ".$nilai;
}
$query3 = "INSERT INTO outbox(DestinationNumber, TextDecoded) VALUES (‘$noPengirim’, ‘$reply’)";
$hasil3 = mysql_query($query3);
$query3 = "UPDATE inbox SET Processed = ‘true’ WHERE ID = ‘$id’";
$hasil3 = mysql_query($query3);
}
if($pecah[0] == "INFO"){
$info= $pecah[1];
$data="";
$query2 = "SELECT * FROM informasi where info=’$info’";
$hasil2 = mysql_query($query2);
if(mysql_num_rows($hasil2) == 0) $reply = "maaf foramat anda salah coba cek kembali (INFO<sepasi>info yang di inginkan)";
else{
$data3 = mysql_fetch_array($hasil2);
$tanggal = $data3["tanggal"];
$keterangan = $data3["keterangan"];
$data = "$tanggal ($keterangan)";
$reply = "Informasi ".$info." :".$data;
}
$query3 = "INSERT INTO outbox(DestinationNumber, TextDecoded) VALUES (‘$noPengirim’, ‘$reply’)";
$hasil3 = mysql_query($query3);
$query3 = "UPDATE inbox SET Processed = ‘true’ WHERE ID = ‘$id’";
$hasil3 = mysql_query($query3);
}
if($pecah[0] == "INFORMASI"){//INFO
$info="";
$hasil = mysql_query("SELECT distinct(info) FROM informasi");
if($hasil){
while($d=mysql_fetch_array($hasil)){
$info=$info." ".$d["info"];
}
}else{$info="INFORMASI TIDAK ADA";}
$reply = "Layanan INFO AKADEMIK adalah ".$info;
$q = "INSERT INTO outbox(DestinationNumber, TextDecoded) VALUES (‘$noPengirim’, ‘$reply’)";
$q = mysql_query($q);
$q2 = mysql_query("UPDATE inbox SET Processed = ‘true’ WHERE ID = ‘$id’");
$q2 = mysql_query($q2);
}
}
?>
</body>
</html>
[/sourcecode]
saya coba dulu yah gan…terimakasih atas pencerahanya….
oke,,, kalo udah bisa … kasih kabar juga ya, biar bermanfaat nantinya …
thx
gan.. bantu dunkk..
script yang diatas udah aq coba kok ga bs ya gan..
ni dia script nya
<?php
if(isset($_POST['Submit'])){
if($_POST['Submit']=="Kirim SMS"){
$nomorHP = $_POST['no'];
$smsN = $_POST['pesan'];
//function sendSMS($nomorHP, $smsN){
// $nomorHP = 08484565156,1516546565,61516165165;
// $nomorHandPhone memecah data dari $nomorHP dalam bentuk array nomor handphone
$nomorHandPhone = explode(",",$nomorHP);
$noHp = $nomorHandPhone;
// menghitung jumlah nomor yang akan dikirimi SMS
$juml = count($noHp);
for($i=0;$i<$juml;$i++){
$qryStatus = "SHOW TABLE STATUS LIKE 'outbox'";
$hasilQery = mysql_query($qryStatus);
$dataQuery = mysql_fetch_array($hasilQery);
// $newForSMS digunakan untuk menyimpan ID yang terbaru dari Primary Key yang ada di table outbox
// ID ini nanti yang menghubungkan antara table "outbox" dengan table "outbox_multipart"
$newForSMS = $dataQuery['Auto_increment'];
$hp = $noHp[$i];
// jika panjang pesan SMS kurang dari sama dengan 153 karakter
// dalam gammu 153 karakter = 1 SMS
if(strlen($smsN)<=153){
mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded) VALUES ('".$hp."','".$smsN."')");
//mysql_query("insert into outbox values ('', '', '', NULL, '".$hp."', 'Default_No_Compression', NULL, -1, '".$smsN."','', 'false',-1, '', '', '', '')");
}else{
// pembulatan keatas berapa total SMS yang akan dikirimkan nantinya
$jmlSMS = ceil(strlen($smsN)/153);
// memecah pesan SMS per 153 karakter
$pecah = str_split($smsN, 153);
for($j=1;$j
coba lagi copy fungsi di atas,,, udah saya update script nya,,, maaf saya salah pake nama variabel 😀
web yang simpel.. tpi banyak mamfaat… mhon pencerahan bro admin.. kalo no hpnya diambil dari daftar tabel no hp yang telah kita buat.. scriptnya gimana ??
pertama kamu harus buat 1 variabel untuk menampung nomor handphone semuanya,
misalkan $handphone = “”;
nah, ntar di bagian looping waktu retrieve data dari database, bisa ditambahkan value nya ke variabel tersebut, misalnya gini :
[sourcecode language=”php”]
$query = mysql_query("SELECT nomor FROM kontak");
while($data = mysql_fetch_array($query)){
$handphone .= $data["nomor"].",";
}
sendSMS("pesan", $handphone);
[/sourcecode]
begitu deh,,,
saya kan coba bkin SI nilai berbasis SMS dngan format nim (spasi) semester.
dan nanti pengennya setelah direquest blasannya muncul makul dan nilainya
tapi yang kok yang mncul hanya 1 makul dan 1 nilai..
pdahal selama 1 semester ada beberpa makul dan nilainya..
mhon pencerahnnya..
ini scriptnya :
<?php
echo "”;
?>
Ketik:
NIM(spasi)SEMESTER
201201(spasi)I
script nya gag lengkap begitu
coba di looping aja, muncul hanya sekali mungkin karena data memang cuman 1, kalo gag gitu coba cek query kamu, kalo gag gitu, emang gag kamu looping 😀
Pingback: Contoh Program Php Yang Menggunakan Insert