-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkaynaksms.php
149 lines (118 loc) · 3.93 KB
/
kaynaksms.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
<?php
/**
* KAYNAKSMS API PHP LIBRARY
* VER 5.6.0 sürümünde yazıldı ve test edildi
*
* @author Ekrem BÜYÜKKAYA
* @copyright Copyright (c) 2012, Ekrem BÜYÜKKAYA.
* @link http://ekrembk.com
* @since Version 0.9
*/
class Kaynaksms {
// API giriş bilgileri
private $kullanici = 'KULLANICIADINIZ';
private $sifre = 'SIFRENIZ';
private $baslik = 'MESAJBASLIGINIZ';
// Kullanıcıya göre değişiklik gösterebilir
private $maksimum_karakter = 459;
// Telefon numarası
private $telefon = NULL;
private $mesaj = NULL;
// Sistem sabitleri
private $hatalar = array(
'01' => 'Mesaj gönderim başlangıç tarihinde hata var. Sistem tarihi ile değiştirilip gönderildi.',
'02' => 'Mesaj gönderim sonlandırılma tarihinde hata var.Sistem tarihi ile değiştirilip gönderildi.',
'10' => 'Telefon numarası hatalı.',
'20' => 'Mesaj metninde boş olmasından veya maksimum mesaj karakterini geçilmesi.',
'30' => 'Kullanıcı bilgisi bulunamadı.',
'40' => 'Geçersiz mesaj başlığı. (başlık sisteme tanımlanmamış)',
'50' => 'Kullanıcının kredisi yok.',
'60' => 'Telefon numarası hiç tanımlanmamış.',
'70' => 'Mesaj başlığı hatalı'
);
public $hata = FALSE;
// Gönderilecek telefonu belirle
function telefon( $telefon ) {
$this->telefon = $telefon;
return $this;
}
// Mesajı belirle
function mesaj( $mesaj ) {
$this->mesaj = $mesaj;
return $this;
}
// Mesajı gönder
function gonder() {
// Kontroller
if( ! $this->kullanici OR ! $this->sifre )
$this->hata = 'API erişimi için kullanıcı ve şifre atanmamış.';
// Girilen telefon numaralasını kontrol et
if( ! $this->telefon )
$this->hata = 'Gönderilecek telefon numarası girilmemiş.';
// Sadece sayılardan oluşmalı ve 12 karakter olmalı geçerli bir telefon
if( ! preg_match( '/^[0-9]*$/iU', $this->telefon ) OR strlen( $this->telefon ) != 12 )
$this->hata = "Geçersiz telefon numarası: {$this->telefon}";
// Mesajı kontrol et
if( ! $this->mesaj )
$this->hata = 'Gönderilecek mesaj belirlenmedi.';
// Maksimum karakter kontrolü
if( $this->mesaj && strlen( $this->mesaj ) > $this->maksimum_karakter )
$this->hata = "Bir SMS {$this->maksimum_karakter} karakterden fazla olamaz.";
// Hata kontrolü
if( $this->hata )
return FALSE;
// Kaynaksms'ten sonuç al
$sonuc = $this->_sonuc();
// Hata mesajlarını kontrol et
$sonuc_parcala = explode( ' ', $sonuc );
// İşlem başarılı
if( ( $sonuc_parcala[0] === '00' OR $sonuc_parcala[0] === '01' OR $sonuc_parcala[0] === '02' ) && isset( $sonuc_parcala[1] ) ):
// SMS ID'sini döndür
return $sonuc_parcala[1];
else:
// Bizdeki hata listesinde var mı
if( isset( $this->hatalar[$sonuc_parcala[0]] ) )
$this->hata = $this->hatalar[$sonuc_parcala[0]];
// Direkt sonucu hata olarak kaydet
else
$this->hata = "Bilinmeyen hata: {$sonuc}";
return FALSE;
endif;
}
// Gönderim denemesi
function _sonuc() {
// API gönderim URL'sini oluştur
$url = $this->_url();
// Bağlantı
$ch = curl_init( $url );
// Ayarlar
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE );
curl_setopt( $ch, CURLOPT_HEADER, FALSE );
curl_setopt( $ch, CURLOPT_HEADER, FALSE );
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, TRUE );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt( $ch, CURLOPT_TIMEOUT, 30 );
// Döngüyü al
$veri = curl_exec( $ch );
// Bağlantıyı kapat
curl_close( $ch );
return $veri;
}
// API URL
function _url() {
// Parametreler
$parametre = array(
'usercode' => $this->kullanici,
'password' => $this->sifre,
'gsmno' => $this->telefon,
'message' => $this->mesaj,
'msgheader' => $this->baslik,
'startdate' => '',
'stopdate' => ''
);
// Temel URL
$url = 'http://api.netgsm.com.tr/bulkhttppost.asp';
// Birleştir
return $url . '?' . http_build_query( $parametre );
}
}