#2 PHP API Key Tabanlı SMS Scripti

Râiw Kâli

Yeni Ucube
14 Haz 2018
45
1
0
25
PHP API Key Tabanlı SMS Scripti

Merhaba ucubeler PHP programlamanın ikinci serisi ile devam ediyoruz, bir önceki serimizde PHP formundan aldığımız şifrelerin veritabanında md5() ile nasıl şifrelenebileceğini öğrenmiştik eğer bir önceki makalemi okumadıysanız buradan ulaşabilirsiniz.

---

Bu gün ise sizinle beraber PHP kod yazarak belirlediğiniz numaraya nasıl SMS gönderirirz bunu göreceğiz, herşeyden önce  SMS göndermek tabiki de sınırsız değildir,API keyimizi alacağımız sitenin bize verdiği token kadar SMS atabiliyoruz. Şimdi hemen kod yazmadan önce size vereceğim siteden bir üyelik oluşturuyoruz ve API kodumuzu alıyoruz, fakat dikkat edilecek bir husus var üye olduktan sonra e-mail adresimize üyeliğimizi doğrulamak için bir üye-onay maili gönderiyorlar bu yüzden şifresini bildiğiniz bir mail ile kayıt işlemi gerçekleştirin.

---

BURADAN API KEYINIZI ALABILIRSINIZ

---

API key almak için siteye yönlendirildiğinizde sağ üst köşeden Sign Up butonuna tıklayarak kayıt sayfamıza geçelim, Your Name ve E-Mail Adress kısımlarını doğru bir şekilde doldurun, az önceki hatırlatmamı tekrar yapmak istedim, E-Mail Adress kısmına lütfen şifresini bildiğiniz bir e-mail adresinizi yazınız,üyelik işleminden sonra size bir üye-onay maili gönderecekler. Kaldığımız yerden devam edelim Your Name ve E-Mail Adress kısımlarını doğru bir şekilde doldurduktan sonra Sign Up butonumuza tıklayalım ve bir sonraki adımımıza geçelim.

---

Karşımıza aşağıdaki ekran çıktıktan sonra mail adresimizin gelen kutusu öğesine bakalım ve Textlocal isminden gelen bir mail olup olmadığını kontrol edelim, eğer mail gelmiş ise onay bağlantısına tıklayarak hesabımızı aktifleştirelim.



---

Mail adresimizi kontrol ettiğimizde aşağıdaki gibi bir mail aldıysak hemen mail içerisinde bulunan üye-onay bağlantısına tıklayarak hesabımızı aktifleştiriyoruz.



---

Hesap aktifleştirmemiz için bize gönderilen bağlantıya tıkladıktan sonra karşımıza kullanıcı bilgilerimizi tanımlamamız için bir form ekranı çıkıyor burada dikkat edilmesi ve doldurulması gereken bazı kısımlar var bunları buyrun beraber dolduralım.



Öncelikle Adress kısmı required değerine sahiptir boş bırakamayız doğru adresinizi yazmanıza gerek yoktur, Adress 2 kısmı boş bırakılabilir, Town/City yaşadığınız şehiri belirtir ve required değerine sahiptir boş bırakamazsınız, County kısmı ülkenizi belirtir required değerine sahiptir boş bırakamazsınız, Postacode bulunduğunuz şehrin postakodudur ve required değerine sahiptir boş bırakamazsınız istanbul içi yaşayan ucube varsa aranızda istanbul için postakodu 34100 olarak tanımlanmaktadır, Telephone kısmı telefon numaranızı yazmanız içindir required değerine sahiptir boş bırakamazsınız, Password kısmı şifre tanımlamanız içindir required değerine sahiptir boş bırakamazsınız, Repead Password yazdığınız şifrenin aynısını tekrar yazarak onaylamanız için gereken bir alandır required değerine sahiptir ve boş bırakamazsınız, evet önemli olan kısma geldik Default Sender Name bu kısım ki biz PHP kodlarında da değişken içine tanımlayacağız ama gene de required değerine sahip olduğu için boş bırakamayacağız bu yüzden buraya gönderdiğiniz mesajın kimden geldiğini yani kendi göndereceğiniz mesajın başlığını yazacaksınız, örneğin Türkcell mesaj attığında kimden : TURKCELL bir diğer deyişle kimden : #sizinbelirediginizgonderenadi şeklinde, daha sonra ise Accept terms & condition seçeneğini işaretleyerek kullanıcı bilgisi tanımlama formunu tamamlayıp Anasayfa kısmımıza geçiş yapıyoruz.

---

Anasayfaya geçiş yaptıktan sonra sağ üst kısımda bulunan ayrıca (bkz: aşağıdaki fotoğraf gibi) Help açılır menüsüne tıklayarak All Documentation sekmesine tıklayarak tüm dökümanlarımızın gösterildiği sayfaya geçiş yapıyoruz.



---

Tüm dökümanlar sayfasına geçiş yaptıktan sonra fare tekerleğini kaydırmadan hemen sol en altta bulunan Yout API hash kısmındaki kod bizim API kodumuzdur, lütfen bunu kimse ile paylaşmayın, hesabınızı ortak kullanmayın.



---

API hash kodu alma işlemimiz tamam, sistem otomatik olarak her yeni üyeye 10 kredilik bir token veriyor, SMS başına üyeliğinizden 0.40 değerinde bir token eksilir. Artık PHP programlama kısmına geçebiliriz, kod satırını ben kendime göre uyarladım sizin değiştireceğiniz kod satırlarını ek olarak konuda belirteceğim hadi devam edelim.

---

Öncelikle belirtmek isterim ki ben uzun süredir üzerinde çalıştığım projem için bir SMS aktivitasyon scripti yazmıştım sizin ile bu kodu paylaşacağım fakat kodu modifiye etmek tamamiyle sizin elinizde, kullanımını anlatacağım mantığıkavradıktan sonra kendi istediğiniz şekilde kodu modifiye edebilirsiniz, ayrıca bu ve bunun gibi açık kaynak kodlu kütüphaneler için bana özel mesaj yolu ile ulaşabilirsiniz, programladığım hiç bir parça kod dizisi ücretli değildir fakat projelerim buna dahil değildir.

---

Herşeyden önce veritabanımızı aşağıda size verdiğim linkten indirelim, indirdikten sonra MYSQL DataBase kurulumu bilmeyenler için kısaca anlatayım phpMyAdmin dosyamızın içine storage_db adında boş bir veritabanı oluşturalım bakın column (tablo) değil boş yeni veri tabanı olacak adı ise storage_db oalcak, kurulumu bilenler kod satırında zaten kendi veritabanına göre ayarlarlar.

BURADAN VERITABANINI INDIREBILIRSINIZ

BURADAN VIRUSTOTAL TARAMA SONUCUNA ULASABILIRSINIZ

---

Veritabanımızı indirdikten sonra rar dizininden çıkarıyoruz, lütfen BeniOku.txt belgesini okumadan geçmeyin işlemleri baştan yapmak zorunda kalmayın, rardan çıkardığımız sql sorgusunu phpMyAdmin yardımı ile oluşturduğumuz ve storage_db ismini verdiğimiz veritabanımızın içine atıyoruz, daha sonra ilk başta aldığımız API hash keyimizin çalışmasını tetikleyen PHP dosyalarımızı indiriyoruz.

BURADAN PHP-UK API TETIKLEYICI DOSYAMIZI INDIREBILIRSINIZ

BURADAN VIRUSTOTAL TARAMA SONUCUNA ULASABILIRSINIZ

---

İndirdiğimiz API hash tetikleyicisini rardan çıkarıyoruz ve php-uk adında bir klasör karşımıza geliyor bu şimdilik kenarda kalsın daha sonra bununla işimiz var, veritabanımızı oluşturduk API hash tetikleyicimizi indirdik sırada PHP kodumuzu yazmak var, o halde başlayalım.
 
PHP:
<html lang="en"><head>
    <meta charset="UTF-8">
    <title>PHP SMS Ile Uye Dogrulama</title>
    <style>
        form {
            width:350px;
            margin:50px auto;
            border:1px solid #ddd;
            border-radius:8px;
            padding:20px;
            box-sizing:border-box;
        }
 
        form label {
            line-height:26px;
        }
 
        form label input {
            margin-bottom:10px;
            width:100%;
            padding:7px 5px;
            box-sizing:border-box;
        }
 
        form button {
            padding:10px 8px;
            border:1px solid #ddd;
            color:#333;
            text-decoration:none;
            width:100%;
            display:block;
            text-align:center;
            box-sizing:inherit;
            margin:10px auto;
        }
 
        form button:hover {
            background:#f1f1f1;
        }
    </style>
</head>
<body>
<?php
 
try {
    $db = new PDO("mysql:hostname=localhost; dbname=storage_db;", "root", "");
}catch(PDOException $e) {
    die($e->getMessage());
}
if(isset($_POST["register_form"])) {
    $name = $_POST['name'];
    $password = $_POST['password'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
 
    $code = substr(str_shuffle("1234567890"), 0, 6);
 
    $insertUser = $db->exec("INSERT INTO sms_login SET
    u_name = '$name',
    u_password = '$password',
    u_email = '$email',
    u_confirm_code = $code,
    u_phone = '$phone'");
 
    if($insertUser) {
        require_once "php-uk/php-uk/textlocal.class.php";
        $tl = new Textlocal("sizinuyemail", "sizinapihash");
        $sendSms = $tl->sendSms([$phone], "Onay Kodunuz :".$code, "DarkPortal");
        if($sendSms->status == "success") {
            //SMS Gönderildi Demektir.
            header("Location:smsconfirm.php?step=2&phone=".$phone);
        }else {
            echo "SMS Gönderilirken Bir Sorun Oluştu";
        } 
    }else {
        echo "Kullanici olusturulamadi.";
    }
}
 
if(isset($_POST["confirmation_form"])) {
    $confCode = $_POST["confirmation"];
    $phone = "+".trim($_GET["phone"]);
    $query = $db->query("SELECT * FROM sms_login WHERE u_confirm_code = $confCode && u_phone = '$phone'");
    if($query->rowCount()) {
        $update = $db->exec("UPDATE sms_login SET u_status = '1' WHERE u_phone = '$phone'");
        if($update) {
            echo "Hesabınız Onaylandı";
        }else {
            echo "Hesabınız Onaylanamadı";
        }
    }else {
        echo "Onay Kodunuz veya Telefon Numaranız Yanlış";
    }
}
?>
<?php if(!isset($_GET["step"]) || $_GET["step"] == "1"): ?>
    <form action="" method="POST">
        <label>Name: <br><input type="text" name="name"></label><br>
        <label>Password: <br><input type="password" name="password"></label><br>
        <label>Email: <br><input type="email" name="email"></label><br>
        <label>Phone: <br><input type="tel" name="phone"></label><br>
        <button type="submit" name="register_form">Continue</button>
    </form>
<?php elseif(isset($_GET["step"]) && $_GET["step"] == "2" && isset($_GET["phone"])): ?>
    <form action="" method="POST">
        <label>Confirmation Code: <br><input type="text" name="confirmation"></label>
        <button type="submit" name="confirmation_form">Confirm Account</button>
    </form>
<?php endif; ?>
</body>
</html>
---

Daha önceden da bahsettiğim gibi ben kendi projemde sadece SMS ile üye doğrulama yaptırdığım için kodlar bu şekilde modifye yapmak ve istediğinizi yaratmak size kalmış ayrıca bu kodları yazdıktan sonra smsconfirm.php olarak kaydedelim eğer farklı bir isim verecekseniz kod satırlarında veritabanı id column kısmından çekilen ve redirecting yönlendirme yapan kod satırlarının da ismini değiştirmeyi unutmayınız, şimdi sizin kendinize göre değiştirmeniz gereken kod satırlarına geçelim;
Öncelikle CTRL+F yardımıyla $tl = new Textlocal kodunu aratalım, karşınıza çıkan sonuçta sizin için ayarladığım alanlar var "sizinuyemail" kısmında tırnakları silmeden, tırnakların içine API kodu alırken siteye üye olduğunuz mail adresini yazmanız gerekli örneğin benim deneme@ucubeler.net şeklindeydi, "sizinapihash" kısmına gene tırnakları silmeden tırnakların içine siteden Help->All Documentation kısmında sol en altta size verilen API hash kodunuzu yazmanız gerekmektedir.
Eğer veritabanı isminiz kullanıcı adınız veritabanı adınız farklı ise değiştmeniz gereken kod satırını CTRL+F kombinasyonlarını kullanarak $db = new PDO şeklinde aratınız ve karşınıza çıkan satırda hostname kısmı local veritabanı ipniz phpMyAdmin kullananlar için localhost veya 127.0.01, dbname oluşturduğunuz veritabanı adınız daha sonraki tırnak default root olarak verilir değiştirdiyseniz kendi veritabanı kullanıcı girişi için kullandığınız veritabanı kullanıcıadınız, en sondaki "" şeklindeki boş tırnaklar ise veritabanı girişi için kullandığınız şifreniz default boş verilir değiştirdiyseniz iki tırnak arasına yazınız ve veritabanı bağlantısını yapınız. PHP dosyamızı smsconfirm.php olarak kaydettikten sonra klasörden çıkardığımız php-uk klasörü ile aynı yere kaydediniz.

---

Şimdi kodumuzu çalıştıralım ve scriptin çalışıp çalışmadığını hep beraber deneyelim.



Tekrar tekrar değinerek söylüyorum ben kendi projemde SMS ile üye-onay şeklinde kullandığım için benim projemde bu kod doğrulama kodu gönderiyor yani şunu demek istiyorum ben kod satırlarında $code = substr(str_shuffle("1234567890"), 0, 6); böyle bir değişken tanımladım PHP kodlamada substr(str_shuffle("karistirilacakdeger")); kodu karistirilacakdeger seklinde yazdığım kısma yani "" tırnaklar arasına yazdığınız harf veya sayıları karıştırır daha sonra yazdığım 0, 6 ise karıştırdığı sayıların 0. yani 1. PHP kodlamada 0 değeri 1 değeridir, şu şekilde karıştırdığı sayıların 0. ve 6. değerlerini al örneğin ben yukarıda 0 dan 9 a kadar toplam 10 sayı karıştırdım örneğin bana 56483214795 şeklinde bir sayı karıştırdı benim verdiğim komut ile bu karıştırdığı sayıların 6. sıraya kadar olanını yani 564832 bu sayıyı bana verdi ve bu benim doğrulama kodum oldu.  Yani şu an değiştirmediğiniz taktirde bu kod sadece yazacağınız telefon numarasına doğrulama kodu gönderir, değiştireceğiniz alanları şimdi size söyleyeceğim. Lütfen burayı çok dikkatli okuyun;
CTRL + F kombinasyonu ile bu kod satırını aratın $sendSms = $tl->sendSms([$phone], "Onay Kodunuz :".$code, "DarkPortal"); burada $phone değişkeni sizin formda yazdığınız telefon numarasını çeker, "Onay Kodunuz:"$code, şeklindeki kısım ise telefon ekranında gözükecek kodu yani az önce shuffle ile karıştırdığımız kodun ilk 6 hanesini çeken değişkendir, "DarkPortal" ise size az önce açıkladığım kimden : DarkPortal yani mesajın kimden geldiğini telefonda gösteren başlıktır, siz şimdi diyeceksiniz e sitede yazdık bir de burada neden yazıyoruz, eğer buraya yazmazsak sitede yazdığımız isim ile gönderir, örneğin siz siteye yazdığınız isim ile göndermek istemiyorsunuz başka bir isimle göndermek istiyorsunuz o zaman buraya yazacaksınız. Şimdi eğer siz onaylama kodu değil de başka bir mesaj göndermek istiyorsanız tekrar CTRL + F kombinasyonu ile $sendSms = $tl->sendSms([$phone], "Onay Kodunuz :".$code, "DarkPortal"); kod satırını aratın ve şöyle değiştirin; $sendSms = $tl->sendSms([$phone], "mesajicerik",  "mesajkimden"); mesajicerik yazdığım kısma göndereceğiniz mesajı mesajkimden kısmına ise gösterdiğim örnek olan kimden : TURKCELL şeklinde telefonda gözükecek başlığı girin. Şimdi bir üye kayıt ve SMS ile doğrulama yapalım ve mantığı daha kolay kavrayalım.

---



Böyle bir üye kaydı yaptım ve Continue yani devam butonuna bastım daha sonra karşıma telefonuma gönderilen kodu doğrulamam için bir sayfa çıkacak, fakat doğrulamadan önce veritabanıma kaydettirdiği kod ile telefonuma gönderdiği kod aynımı bir bakalım.



Evet göründüğü üzere veritabanıma kaydettirdiği yani bana göndermesi gereken aktivitasyon kodu 274589 olan altı haneli sayıdır, hemen telefonumu kontrol ediyorum ve buraya bir ekran görüntüsü bırakıyorum.



Burada da gördüğünüz gibi gelen kod 274589 yani veritabanında bulunan onay kodu ile aynı sonuç, şimdi kodumuzı sayfamıza girelim ve bakalım hesabımız onaylanıyor mu.



---

Zaman ayırıp okuyan tüm ucubelere teşekkürü borç bilir konudan yararlanan ve daha fazla kitleye ulaşmamızı isteyen arkadaşlardan da ufak bir ricam olacak, lütfen konuyu güncel tutarak bu konu ve seriden yararlanmak isteyen diğer arkadaşlara da öncü ve yardımcı olunuz, esen kalın ucubeler!​
 

Râiw Kâli

Yeni Ucube
14 Haz 2018
45
1
0
25
Cvp: #2 PHP API Key Tabanlı SMS Scripti

ET TA MERE' Alıntı:
dostum güzel bilgi. emek vermişsin. pek anlamasam da emeğine ufak ta olsa teşekkür etmek isterm.
Ben teşekkür ederim, belki bir gün bir yerlerde işine yarar
 

Yasal Uyarı

  • 5651 Sayılı Kanun'un 8. Maddesine ve T.C.K'nin 125. Maddesine göre tüm üyelerimiz, yaptıkları paylaşımlardan sorumludur. Ucubeler.Net hakkında yapılacak tüm hukuksal şikayetler, ''İletişim'' linkimizden bize ulaşıldıktan en geç 3 (üç) gün içerisinde ilgili kanunlar ve yönetmenlikler çerçevesinde tarafımızca incelenerek şikayetler hakkında gereken işlemler yapılacak ve site yöneticilerimiz tarafından şikayet sahibi şahıslara bilgi verilecektir.

Hızlı Navigasyon

Kullanıcı Menüsü