selam, ip + subnet tek başına yetmez hocam, cgnat yüzünden aynı apartman bile aynı ip havuzundan çıkar, bir de vpn var. ben olsam katmanlı kurardım:
1. kayıtta ip, subnet ve tarayıcı parmağını aynı satıra yaz
$ip = $_SERVER['REMOTE_ADDR'];
$parca = explode('.', $ip);
$subnet = count($parca) === 4 ? implode('.', array_slice($parca, 0, 3)) : substr($ip, 0, 10);2. aynı subnetten son 30 günde kaç ücretsiz verilmiş bak, 2-3 ü geçerse otomatik verme, onaya düşür
select count(*) from free_trials where subnet = ? and created_at > now() - interval 30 day;
3. e-posta + sms doğrulaması şart koş, hosting ve vpn ip aralıklarından geleni de onaya at
tek eşleşmede direkt banlama, skoru topla: aynı subnet + aynı parmak izi + çöp mail bir aradaysa red, biri tutuyorsa manuel onay. yapay zekâya gerek yok, bu basit skorlama işi görür.