Merhabalar;
Bu sabah forumda gezerken bir konu gördüm. Konudaki arkadaş wordpress’teki yazı sayfalarının sms ile gönderdiği şifre onaylanınca açılmasını istiyordu. Yapı gerçekten ilgimi çekti ve bende bunun üstüne makale yazmaya karar verdim. Elbette bu genel bir makale olacak, yani hem wordpress hemde özel kodladığınız bütün php uyumlu scriptlerde çalışacaktır.
Ben bunun için Sweet Alert 2 ‘nin kutucuklarından yararlanacağım. Gayet hoş duracağı görüşündeyim.
- Öncelikle scriptinizde yazı sayfalarının yayınlandığı dosyayı bulun. ( wordpress için genellikle wp-content/themes/temanız/single.php olacaktır.). Emin olmak için dosyanın bir yedeğini alın ve içerisine;
<? echo "Merhaba Dünya"; ?>
yazın. Artık bütün yazı sayfalarına girdiğinizde ekranda Merhaba Dünya yazacaktır.
- Yazı dosyanızı eski hale getirin ve şöyle bir yapıya dönüştürün.
<?php session_start(); if(@$_SESSION['sayfa']!="1") { echo'<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.6.6/sweetalert2.js"></script> <script src="kontrol.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.6.6/sweetalert2.min.css">'; } else { ?> Buraya Yazı Dosyanızda ki Kodlar Gelecek <?}?>
Buraya Yazı Dosyanızda ki Kodlar Gelecek yazdığım alana dosyanın ilk halini direk yapıştırın. Burada yaptığımız şey sayfa adında bir session oturumunu kontrol ediyoruz. Eğer 1 değerine eşit değilse sayfa onaylanmamış oluyor ve onay istiyoruz. 3. sırada çektiğimiz kontrol.js dosyasını birazdan oluşturacağız, siz oluşturduğunuz dizindeki dosya adını yazınız.
- Şimdi ise kontrol.php adında bir dosya oluşturuyoruz. Bu dosya içerisinde gelen telefon numarasını alıp şifre göndereceğiz. Eğer kullanıcı gelen şifreyi doğru yazar ise session oturumunu başlatacağız.
<?php if($_POST) { if(@$_GET['i']=="giris") { $tel = $_POST['telno']; // Burada kullanıcının telefonuna şifre göndereceğin fonksiyonlar olacak. $tel değişkeni ile telefon numarası alınacak. //En son echo komutu ile kullanıcıya önderilen şifre yazdırılacak. Yazılan değeri ilk sayfa alıp karşılaştırma yapacak. echo "123456"; }else if(@$_GET['i']=="durum") { if(@$_POST['durum']=='onay') { session_start(); @$_SESSION['sayfa'] = "1"; } } else { echo "Bu sayfaya dışarıdan erişim bulunmamaktadır!"; } } else { echo "Bu sayfaya dışarıdan erişim bulunmamaktadır!"; }
Bu sayfada $tel değişkeni gelen numarayı yakalıyor. Bu numara ile sms gönderimini yapıyorsunuz. Gerekli bütün fonksiyonlarınızı tamamladıktan sonra ise kullanıcıya sms ile gönderdiğiniz şifreyi echo ile ekrana basıyorsunuz. Merak etmeyin, bu şifreyi kullanıcı okuyamaz. Şifreyi javascript dosyamıza alıp kullanıcının yazdığı değer ile karşılaştırma yapması için kullanacağız.
- En son kontrol.js adında bir dosya oluşturuyoruz ve içerisine şunları yapıştırıyoruz;
$(document).ready(function() { swal({ title: 'Sayfayı Görüntülemek İçin Telefonunuzu Doğrulayın', input: 'tel', showCancelButton: false, confirmButtonText: 'Gönder', showLoaderOnConfirm: true, preConfirm: function (email) { return new Promise(function (resolve, reject) { setTimeout(function() { var a = email; var filter = /^(\+90-|\+90|0)?\d{10}$/; if (filter.test(a)) { resolve() } else { reject('Lütfen Geçerli Bir Numara Giriniz.') } }, 2000) }) }, allowOutsideClick: false }).then(function (email) { var data = 'telno='+email; var gelsifre = $.ajax({ type: 'POST', url: "kontrol.php?i=giris", data: data, dataType: 'html', context: document.body, global: false, async:false, success: function(data) { return data; } }).responseText; swal({ title: 'Şifre '+email+' Nolu Telefona Gönderildi.', input: 'text', showCancelButton: false, confirmButtonText: 'Doğrula', showLoaderOnConfirm: true, preConfirm: function (email) { return new Promise(function (resolve, reject) { setTimeout(function() { if (email === gelsifre) { var data = 'durum=onay'; $.ajax({ type: "POST", url: "kontrol.php?i=durum", data: data, success:function(cevap){ return cevap; }}); swal( 'Teşekkürler', '2 sn içerisinde sayfa yenilenecek!', 'success' ) setTimeout(function(){ window.location.reload(1); }, 2000);} else { reject('Lütfen Şifreyi Kontrol Et.') } }, 2000) }) }, allowOutsideClick: false }).then(function (email) { }) }) })
Bu dosyada ise olanlar gayet açık. Alınan değerler kontrol.php’ye post ediliyor, ordan aldığı geri dönüşleri değerlendirip ekrana sonucu yazdırıyor. Dosyaları biraz incelerseniz mantığın ne kadar basit olduğunu anlarsınız. Eğer işinize yaradı ise teşekkür etmeniz yeterli olur 🙂 İyi günler dilerim.
2 yorum
sms aboneliği olmaz zorundamı yoksa ücretsizmi?
Böyle bir kullanımda kullanıcıya sms göndermeniz için bir sağlayıcı ile anlaşmanız gerekecektir. Fakat siz burada sms yerine eposta gönderme gibi bir sistem de kurabilirsiniz, tamamen size kalmış. Eğer hiçbir onaylatma yapmadan sadece şifre koruması isterseniz şu konuma göz atabilirsiniz.