Php İle SMS Göndermek

Bu örneğimizde Php ile Sms nasıl gönderilir? bunu anlatmaya çalışacağım. Detaylı anlatımı biraz karışık. Bir servis sağlayıcıdan Sms paketi satın alıyorsunuz belirlenen api adresine php ile xml post edip geri yanıt alıyorsunuz vs vs vs. Bunu işlemleri kısatmak adına Php ile bir Sms class ı hazırladım.Bu class ile php ile sms göndermek mail atmak kadar kolay olacaktır.Yukarıda da belirttiğim gibi öncelikle bir servis sağlayıcıdan api almamız ve başlık kaydettirmeniz gerekiyor. Ben servis sağlayıcıları içerisinde İleti Merkezi ni kullanıyorum.

sms.class.php

<?php 
  /**
  * hüseyin yaman 
  * www.huseyinyaman.com
  * php sms class 
  */

class smsGonder 
{
    private $username = 'API KULLANICI ADI';
    private $password = 'API ŞİFRE';
    private $title    = 'SMS BAŞLIĞINIZ';

    private $reqSendLink      = 'http://api.iletimerkezi.com/v1/send-sms';
    private $reqBalanceLink   = 'https://api.iletimerkezi.com/v1/get-balance';
    private $reqReportLink    = 'https://api.iletimerkezi.com/v1/get-report';


  function sendRequest($reqLink,$send_xml,$header_type)
  {

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$reqLink);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$send_xml);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,2);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_HTTPHEADER,$header_type);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);

    $result = curl_exec($ch);
    return $result;

  }

  function sendSms($numbers, $message)
  {
 	  $xml = <<<EOS
         <request>
           <authentication>
             <username>{$this->username}</username>
             <password>{$this->password}</password>
           </authentication>
           <order>
               <sender>{$this->title}</sender>
               <sendDateTime></sendDateTime>
               <message>
                   <text>{$message}</text>
                   <receipents>
                       <number>{$numbers}</number>
                   </receipents>
               </message>
           </order>
         </request>
EOS;

    $result = $this->sendRequest($this->reqSendLink ,$xml,array('Content-Type: text/xml'));

    $xml = simplexml_load_string($result);
    
    return $xml->status->code;
    die();
  }

  function getBalance()
  {

  	$xml = <<<EOS
    <?xml version="1.0" encoding="UTF-8" ?>
    <request>
            <authentication>
                    <username>{$this->username}</username>
                    <password>{$this->password}</password>
            </authentication>
    </request>
EOS;

  	$result = $this->sendRequest($this->reqBalanceLink,$xml,array('Content-Type: text/xml'));
  	$xml = simplexml_load_string($result);	  
  if($xml->status->code == '200'){
        return $xml->balance->sms;
        die();
    }
  }

}

Dosyamızı oluşturduktan sonra servis sağlayıcının size vermiş olduğu kullanıcı adı, şifre ve başlık parametrelerini private ile tanımlanmış değişkenlerimize aktarıyoruz.

gonder.php

require_once ('sms.class.php');
$sms = new smsGonder;

$numara = '05324441122';
$mesaj  = 'Bu bir test mesajıdır';

$cevap = $sms->sendSms($numara, $mesaj);
if ($cevap == '200') {
   echo "Mesaj Gönderildi";
 }else {
   echo "Mesaj Gönderme Hatası $cevap";
}

gönder.php dosyamız ile bu mesajı gönderdik. Eğer işlem başarılı ise servis sağlayıcımızdan geri “200” kodu dönecektir. “200” kodu bu işlem başarı anlamına gelmektedir. Diğer sms durum kodlarına buradan ulaşabilirsiniz.

Servis sağlayıcısındaki sms paketinizdeki kalan sms adetini görmek için aşağıdaki kodu yazmanız yeterli.

echo $sms->getBalance();

Yukarıdaki kodlar en basite indirilmiş halidir. Siz kendi isteğiniz ve ihtiyaçlarınız doğrultusunda eklemeler yada çıkarmalar yapabilirsiniz.

Kaynak kodları indir

25 yorum “Php İle SMS Göndermek

  1. hangi servis sağlayıcısını kullanıyorsunuz ve kullandığınız servis sağlayıcısından memnunmusunuz. bu konuda yardımcı olarabilirseniz çok sevinirim

    1. ben ileti merkezini kullanıyorum. yukarıdaki kodlar ileti merkezine göre çalışmaktadır. farklı servis sağlayıcısı kullanacaksanız linkleri değiştirmeniz gerekir

        1. private $reqSendLink = ‘http://api.iletimerkezi.com/v1/send-sms’;
          private $reqBalanceLink = ‘https://api.iletimerkezi.com/v1/get-balance’;
          private $reqReportLink = ‘https://api.iletimerkezi.com/v1/get-

  2. Merhaba, birden fazla numaraya mesaj göndermek istesek nasıl yapabiliriz? Örneğin bir bilgiyi öğrencinin hem annesine hem babasına göndermek istiyoruz

    1. sayı çok değil ise fonksiyonu döngüye sokabilirsiniz. Eğer çok ise class içerisinde sendSms fonksiyonunda değişiklik yapmanız gerekecektir.

      Numaraları dizi değişkene alıp

      05555555555
      05555555556
      05555555557

      formatına sokmanız gerekir. Bu şekilde tek bir mesajı sistemi yormadan aynı anda herkese gönderebilirsiniz.

    1. döngüye sokarsanız kasar döngüye sokmadan devam etmeniz gerekir.

      ör;
      05321112233
      05321112234
      05321112235
      05321112236

      şeklinde ekletirseniz kasmadan tek seferde gönderir on binlerce gönderebilirsiniz

hsyaman için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Shares