PHP Post Tekrarını Engelleme

Konu Bilgileri

Konu Hakkında Merhaba, tarihinde PHP Hazır Kodlar kategorisinde mxaksoy tarafından oluşturulan PHP Post Tekrarını Engelleme başlıklı konuyu okuyorsunuz. Bu konu şimdiye dek 1,787 kez görüntülenmiş, 2 yorum ve 0 tepki puanı almıştır...
Kategori Adı PHP Hazır Kodlar
Konu Başlığı PHP Post Tekrarını Engelleme
Konbuyu başlatan mxaksoy
Başlangıç tarihi
Cevaplar
Görüntüleme
İlk mesaj tepki puanı
Son Mesaj Yazan mxaksoy

mxaksoy

Banlı Kullanıcı
31 Tem 2018
16
0
0
Pendik
safyazar.xyz
Offline
Bağlantı Sayfanız:
PHP:
session_start();
unset($_SESSION["securiy"]);
Post Yaptığınız Sayfa:
PHP:
if ($_SERVER['REQUEST_METHOD'] == "POST"){
    if( $_SESSION["securiy"] != "1" ){
        $_SESSION["securiy"] = "1";
        sleep(5);
    }
}
 

Pekso

Kayıtlı Üye
31 Tem 2018
35
0
0
Offline
Ellerine sağlık. Üzerinde çalıştığım bir yazılım vardı bu kodu kullanırım. Birde diyelim mesela X ip si bir post işlemi yaptı bunu 1 gün engelleyebilirmiyiz?

Yani 24 saate 1 kere post yapabilsin.
 

mxaksoy

Banlı Kullanıcı
31 Tem 2018
16
0
0
Pendik
safyazar.xyz
Offline
Hocam veritabanına bir tablo oluşturun ve aşağıda verdiğim veritabaniadi_process tablo değerleri:
process_id
process_computer varchar 500
process_date varchar 20 (normal tarih kaydedilecek)
process_banned 1 veya 0.

daha sonra aşağıda verdiğim, ziyaretçinin benzersiz kodunu alıp yönlendirirsin. Kod:
PHP:
<?php
		
function UniqueMachineID($salt = "") {
    if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
        $temp = sys_get_temp_dir().DIRECTORY_SEPARATOR."diskpartscript.txt";
        if(!file_exists($temp) && !is_file($temp)) file_put_contents($temp, "select disk 0\ndetail disk");
        $output = shell_exec("diskpart /s ".$temp);
        $lines = explode("\n",$output);
        $result = array_filter($lines,function($line) {
            return stripos($line,"ID:")!==false;
        });
        if(count($result)>0) {
            $result = array_shift(array_values($result));
            $result = explode(":",$result);
            $result = trim(end($result));       
        } else $result = $output;       
    } else {
        $result = shell_exec("blkid -o value -s UUID");  
        if(stripos($result,"blkid")!==false) {
            $result = $_SERVER['HTTP_HOST'];
        }
    }   
    return hash("sha512", md5($salt.md5($result)));
}

$UniqueMachineCode = UniqueMachineID();
echo $UniqueMachineCode.'<br>';
if($UniqueMachineCode == "veritabanındaki process_computer değeri"){

}
		?>
daha sonra kaydettiğin tarihi (bu arada bilgisayar kimliği ile vt kaydı sorgusunu yap. kontrol ettir. varsa kayıt banı sorgula) tarih biçimi: d.m.Y H:i
sonra 24 saat sorgusu ile kontrol et 1 gün yani 24 saat * 3600 = 86400
eğer banlıysa:
$timeA = "30.07.2018 14:00"; //Veritabanındaki eski tarih
$timeB = date("d.m.Y H:i"); //şu anki tarih
$timeDiff = strtotime($timeA) - strtotime($timeB);
if($timeDiff > 86400){
eğer geçtiyse banı kaldıracak update sorgusu
}eğer geçmediyse{
header("location:https://google.com/");
}

toplamak gerekirse veritabanındaki uyuşursa ban kontrolü daha sonra 24 saat kontrolü.
 

Benzer konular