Merhabalar;
Daha öncesinde wordpress için sayfayı sms doğrulaması ile açma ile ilgili bir makale yazmıştım. Bu makale de ise sayfayı şifreleyerek nasıl açabileceğinizden bahsedeceğim.
Bunun için yine Sweet Alert 2 kutularından yararlanacağım. Gayet şık duruyorlar.
- 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 "Deneme Metni"; ?>
yazın. Artık bütün yazı sayfalarına girdiğinizde ekranda Deneme Metni 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.
- Buraya kadar aynı işlemi yaptık. Şimdi ise kontrol.php sayfamızı oluşturalım.
<?php if($_POST) { if(@$_GET['i']=="kontrol") { $gelen_sifre = $_POST['sifre']; $gecerli_sifre = "123456"; if($gelen_sifre==$gecerli_sifre) { session_start(); $_SESSION['sayfa'] = "1"; echo "1"; } else { echo "0"; } }else { echo "Bu sayfaya dışarıdan erişim bulunmamaktadır!"; } } else { echo "Bu sayfaya dışarıdan erişim bulunmamaktadır!"; }
Burada $gelen_sifre değişkeni ile kullanıcının yazdığı şifre değerini alıyoruz. Daha sonra $gecerli_sifre ile karşılaştırıp eğer doğru ise 1, yanlış ise 0 değerini döndürüyoruz. Bu değeri ise javascript dosyamız ile alıp kullanıcıya bilgi veriyoruz. Son olarak şifre doğru ise session oturumunu başlatıyoruz.
- En son kontrol.js adında bir dosya oluşturuyoruz ve içerisine şunları yapıştırıyoruz;
$(document).ready(function() { swal({ title: 'Lütfen Şifreyi Giriniz', input: 'text', showCancelButton: false, confirmButtonText: 'Submit', showLoaderOnConfirm: true, preConfirm: function (pass) { return new Promise(function (resolve, reject) { setTimeout(function() { if (pass === '') { reject('Lütfen Geçerli Bir Değer Giriniz') } else { resolve() } }, 2000) }) }, allowOutsideClick: false }).then(function (pass) { var data = 'sifre='+pass; var gelsifre = $.ajax({ type: 'POST', url: "kontrol.php?i=kontrol", data: data, dataType: 'html', context: document.body, global: false, async:false, success: function(data) { return data; } }).responseText; if(gelsifre=='1') { swal({ type: 'success', title: 'Teşekkürler!', html: '2sn İçerisinde Sayfa Yenilenecek' }) setTimeout(function(){ window.location.reload(1); }, 2000); } else { swal({ type: 'warning', title: 'Dikkat!', html: 'Şifreyi Yanlış Girdin.' }) } }) })
Böylece kullanıcı eğer doğru şifreyi yazar ise sayfayı görüntülemiş oluyor. Siz bu mantığı istediğiniz gibi geliştirebilirsiniz. Ben en basit hali ile anlatmaya çalıştım. Önerilerinizi ve yaşadığınız sorunları yorum bölümünden belirtirseniz yardımcı olmaya çalışırım. Sağlıcakla kalın.