Ufak bi kod ile scriptleriniz lisanslıymış gibi kullanılabilir.
Örneğin; bu adresteki lisanslama örneğini ele alırsak;
<?php
$cekilecek_text="http://www.xxx.com/lisans.txt";
if (!function_exists("file")) { die("<strong><a href='http://www.php.net/file'>file</a></strong> fonksiyonu sunucuda yüklü olmalıdır<br /> fonction <strong><a href='http://www.php.net/file'>file</a></strong> must be installed on the server"); }
function lisanskontrol() {
if (substr($_SERVER['HTTP_HOST'], 0, 4) == "www.") {
$domainadi = substr($_SERVER['HTTP_HOST'], 4);
} else {
$domainadi = $_SERVER['HTTP_HOST'];
}
return $domainadi;
}
$alanadi=lisanskontrol();
$lisanstext=file($cekilecek_text,FILE_IGNORE_NEW_LINES);
$lisans=array();
foreach($lisanstext as $sayi => $cekveri) {
$lisans[$sayi]=rtrim($cekveri,"\r\n");
}
if (!in_array($alanadi,$lisans)) {
die("Lisanssiz Kullanim: ".$alanadi."<br /> Lisan geçersiz <br />
lütfen xxxx@xxx.com a ulaþarak lisans alýnýz. "); exit;
}
?>$_SERVER['HTTP_HOST'] bildiğiniz gibi bize o anki php dosyasının çalıştığı site adresini verir. Çoğu php lisanslama sistemlerinde http host ile lisans sahibi sitelerin listesinin bulunduğu uzak txt dosyasının içi karşılaştırılır eğer site varsa döngü true döndürülür ve site lisans kontrolünden geçirilir.Ancak şifreli lisans.php dosyamızın en üstüne alttaki vermiş olduğum kodu yazıp sitemizin görünen ismine müdahale edebiliriz. örneğin test yerine lisanslı sitelerin bulunduğu txt dosyasından herhangi birini alıp lisanlı olmayan sitemizi lisanslıymış gibi gösterebiliriz.
@$_SERVER[HTTP_HOST] = "test";Uzak sunucudaki lisans txt dosyasını nerden bulacak demeyin. Bulunur hemde çok basit. Locale veya serverinize scripti kurun bir defa çalıştırın.
Sonra eğer windows ise cmd komut satırından veya linux ise o anki ağ dinlenip adres test edilir. Sonra lisans.txt dosyanızın içinden bir site adresini alıp üstteki gibi hhtp host değişkenine yerleştirebilir.
Buna önlem almak size kalmış eğer dosyalarınızı bu mantıkla lisanlıyorsanız.
Önlem olarak lisans.txt'yi lisans.php çevirin daha sonra bu php dosyanızın içinde
txt yaptığınız gibi tüm siteleri içine bastırmayın. tüm lisanlı siteleri bir dizide tutun. Gelen her lisans doğrulama isteğinde http referer alın gelen siteden eğer referer ile dizinizin içinde uyan site varsa ekrana yazdırın yoksa boş döndürün. sorun çözülecektir.
txt dosyamı php ye çeviremem çevirirsem sattığım lisanslar bozulur sorunuylada karşı karşıyaysanız onun içinde gelen txt isteğini htacces le php dosyanıza 302 ile yönlendirebilirsiniz.
Not: özellikle bu açığı kapatmak eğer varsa tek lisans alıp birden fazla sitede kullananları tespit etmenizi sağlayacaktır.
Cümleten iyi akşamlar.
Ek olarak;
Şifreli lisans dosyalarınızda $_SERVER[HTTP_HOST] yerine
getenv('HTTP_HOST') kullanabilirsiniz.