PHP Post Tekrarını Engelleme

mxaksoy

Banned
31 Tem 2018
16
0
0
Pendik
safyazar.xyz
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);
    }
}
 
31 Tem 2018
35
0
0
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

Banned
31 Tem 2018
16
0
0
Pendik
safyazar.xyz
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