lostyazilim
tr.link

PHP Script Lisanslama Mekanizması

40 Mesajlar 35.801 Okunma
acebozum
tr.link

saintx saintx .... Kullanıcı
  • Üyelik 19.07.2012
  • Yaş/Cinsiyet 44 / E
  • Meslek ...
  • Konum Diğer
  • Ad Soyad .** .**
  • Mesajlar 148
  • Beğeniler 1 / 40
  • Ticaret 2, (%100)
Merhaba arkadaşlar,

Sistemi tamamiyle değiştirdim ve sınıfsal bir yapıya kavuşturdum.Sizlerin yorumları doğrultusunda cache sistemini entegre ettim.
Öncelikle nasıl kuracağınızı adım adım anlatacağım.

1-) alttaki kodu lisans.php diyerek ana dizine kaydediyoruz.

class checklicense
{

protected $cl_license_server;
protected $cl_ip_address;
protected $cl_product_key;
protected $cl_license_array;

/* önbellekleme değişkenleri */

protected $cl_cache_time;
protected $cl_cache_file;

public function __construct($license_server, $cache_time)
{
$this->cl_ip_address = $_SERVER['HTTP_HOST'];
$this->cl_product_key = null;
$this->cl_license_server = $license_server;
$this->cl_cache_time = $cache_time;
$this->cl_cache_file = 'cache/'.md5($this->cl_license_server.$this->cl_ip_address).'.cache';
/* Çalıştırmalar */
$this->_check_ip_address();
$this->_create_product_key();
if( $this->_is_available_cache() != true )
{
$this->_write_cache($this->cl_cache_file, $this->_get_license_file());
$this->_check_license($this->_read_cache($this->cl_cache_file));
}
else
{
$this->_check_license($this->_read_cache($this->cl_cache_file));
}
}

/* IP Kontrolleri */

protected function _check_ip_address()
{
if( ! is_numeric(substr($this->cl_ip_address, 0, 3)) )
{
if( substr($this->cl_ip_address, 0, 4) == 'www.' )
{
$this->cl_ip_address = substr($this->cl_ip_address, 4);
}
}
}

/* Ürün anahtarı oluşturma ve kontroller */

protected function _create_product_key()
{
$this->cl_product_key = wordwrap(strtoupper(md5(sha1(sha1($this->cl_product_key)))), 4, '-', true);
}

protected function _check_license(array $data)
{
if( ! in_array($this->cl_product_key, $data) )
{
die($_SERVER['HTTP_HOST'].' isimli sunucunuzun lisansı bulunmamaktadır.');
exit;
}
}

/* Uzak sunucudan dosya okuma işlemleri */

protected function _get_license_file()
{
if( function_exists('file') )
{
$file = file($this->cl_license_server, FILE_IGNORE_NEW_LINES);
$data = array();
foreach($file as $key => $value)
{
$data[$key] = rtrim($value, '\r\n');
}
return $data;
}
}

/* Önbellekleme Fonksiyonları */

protected function _is_available_cache()
{
$this->cl_cache_file = 'cache/'.md5($this->cl_license_server.$this->cl_ip_address).'.cache';
if( ! file_exists($this->cl_cache_file) ) return false;
$this->cl_cache_time = $this->cl_cache_time * 60;
if( time() - filemtime($this->cl_cache_file) > $this->cl_cache_time )
{
unlink($this->cl_cache_file);
return false;
}
return true;
}

protected function _write_cache($path, $data)
{
$handler = fopen($path, 'a');
fwrite($handler, serialize($data));
fclose($handler);
}

protected function _read_cache($path)
{
$data = unserialize(file_get_contents($path));
return $data;
}
}

?>

2-) scriptinizin kilit dosyalarından bir tanesine şu kodları en üst kısma ekliyoruz. ;
include('lisans.php');
new checklicense('http://127.0.0.1:81/lisans.txt', 10); // 1. parametre lisans dosyası 2. parametre kaç dakika cache kalacak.

3-) lisanslamak istediğiniz sunucu için bir adet key oluşturmanız gerekir bu key'i ise şu kodlar ile oluşturacağız.

$lisans_adresi = 'www.saintx.net';
$olustur = wordwrap(strtoupper(md5(sha1(sha1($lisans_adresi)))), 4, '-', true);
echo $lisans_adresi.'\'i için oluşturulan ürün anahtarı ;';
echo '

';
echo $olustur;

?>

4-) yemeğimiz hazır :) iyi forumlar www.saintx.net ~~ saintx
Batuhan cudjex JpnTr26

kişi bu mesajı beğendi.

elektronikssl
webimgo

ayqo ayqo WM Aracı Kullanıcı
  • Üyelik 15.02.2012
  • Yaş/Cinsiyet 33 / E
  • Meslek Öğretmen
  • Konum Kastamonu
  • Ad Soyad A** T**
  • Mesajlar 386
  • Beğeniler 20 / 68
  • Ticaret 14, (%100)
yararlı bir paylaşım teşekkürler
 

 

isousluer isousluer Usluer Kullanıcı
  • Üyelik 05.04.2011
  • Yaş/Cinsiyet 31 / E
  • Meslek Yazılım Geliştirici
  • Konum Konya
  • Ad Soyad İ** U**
  • Mesajlar 4900
  • Beğeniler 1419 / 2962
  • Ticaret 45, (%100)
Eğer buradaki algoritma baz alınarak script lisanslanırsa scriptin çözülmesi çok kolay olur. md5 şifrelemenin yanında birkaç defa sha1 şifreleme de kullanılabilir.
Batuhan oerdem soulmy

kişi bu mesajı beğendi.

saintx saintx .... Kullanıcı
  • Üyelik 19.07.2012
  • Yaş/Cinsiyet 44 / E
  • Meslek ...
  • Konum Diğer
  • Ad Soyad .** .**
  • Mesajlar 148
  • Beğeniler 1 / 40
  • Ticaret 2, (%100)

isousluer adlı üyeden alıntı

Eğer buradaki algoritma baz alınarak script lisanslanırsa scriptin çözülmesi çok kolay olur. md5 şifrelemenin yanında birkaç defa sha1 şifreleme de kullanılabilir.


gerisi size kalmış fakat şöylede birşey var keyleri scriptin çalışıtığı yerde değil ayrı bir sunucuda tutuyorsunuz sorun kalmıyor
 

 

wmaraci
wmaraci

isousluer isousluer Usluer Kullanıcı
  • Üyelik 05.04.2011
  • Yaş/Cinsiyet 31 / E
  • Meslek Yazılım Geliştirici
  • Konum Konya
  • Ad Soyad İ** U**
  • Mesajlar 4900
  • Beğeniler 1419 / 2962
  • Ticaret 45, (%100)
Hmm sanırım ben olayı tamamen farklı anladım hocam. Algoritmayı bi anlatabilir misiniz. Eğer tahmin ettiğim gibi ise çok iyi.

Ek Olarak: Galiba çözdüm.

Önce lisans.txt dosyasını farklı sunucudan çağırıyoruz. lisans.txt dosyasına lisansladığımız sitelerin lisans anahtarlarını giriyoruz. Daha sonra bu metot ile lisans.txt dosyasının içerisindeki lisans anahtarlarını sorguluyoruz. Eğer lisans anahtarını bulursa site açılıyor. Sanırım böyle.

Ek Olarak: Yalnız bu seferde şöyle bir sıkıntı doğuyor. lisans.txt dosyasının bulunduğu sunucuya ulaşılamazsa ne olacak? Biraz php bilgim olsa aklımda bunun çözümü var. Birden çok sunucuda lisans.txt dosyası olacak. Mesela birinci sunucuya erişilemezse ikinci sunucudan lisans anahtarını çekecek.
 

 

LadyArch3r LadyArch3r Web Developer Kullanıcı
  • Üyelik 02.04.2011
  • Yaş/Cinsiyet 34 / E
  • Meslek Web Developer
  • Konum Antalya
  • Ad Soyad B** K**
  • Mesajlar 930
  • Beğeniler 60 / 102
  • Ticaret 3, (%100)

isousluer adlı üyeden alıntı

Hmm sanırım ben olayı tamamen farklı anladım hocam. Algoritmayı bi anlatabilir misiniz. Eğer tahmin ettiğim gibi ise çok iyi.

Ek Olarak: Galiba çözdüm.

Önce lisans.txt dosyasını farklı sunucudan çağırıyoruz. lisans.txt dosyasına lisansladığımız sitelerin lisans anahtarlarını giriyoruz. Daha sonra bu metot ile lisans.txt dosyasının içerisindeki lisans anahtarlarını sorguluyoruz. Eğer lisans anahtarını bulursa site açılıyor. Sanırım böyle.

Ek Olarak: Yalnız bu seferde şöyle bir sıkıntı doğuyor. lisans.txt dosyasının bulunduğu sunucuya ulaşılamazsa ne olacak? Biraz php bilgim olsa aklımda bunun çözümü var. Birden çok sunucuda lisans.txt dosyası olacak. Mesela birinci sunucuya erişilemezse ikinci sunucudan lisans anahtarını çekecek.


Yüksek uptime sahp bir sunucuda barındırmanız lazım ve kodlara sunuda eklemek lazım.

Günde 1 defa sorgula gibi

http://www.soulsmasher.net/php-script-lisans-mekanizmasi/
isousluer oerdem

kişi bu mesajı beğendi.

saintx saintx .... Kullanıcı
  • Üyelik 19.07.2012
  • Yaş/Cinsiyet 44 / E
  • Meslek ...
  • Konum Diğer
  • Ad Soyad .** .**
  • Mesajlar 148
  • Beğeniler 1 / 40
  • Ticaret 2, (%100)

LadyArch3r adlı üyeden alıntı

Yüksek uptime sahp bir sunucuda barındırmanız lazım ve kodlara sunuda eklemek lazım.

Günde 1 defa sorgula gibi

http://www.soulsmasher.net/php-script-lisans-mekanizmasi/


önbelleğe yada cookie'ye aldırmak çözüm olabilir soulsmasher'in mekanizmasından tek farkı key eklemeli olmasıdır.sistemi geliştirebilirim.
 

 

isousluer isousluer Usluer Kullanıcı
  • Üyelik 05.04.2011
  • Yaş/Cinsiyet 31 / E
  • Meslek Yazılım Geliştirici
  • Konum Konya
  • Ad Soyad İ** U**
  • Mesajlar 4900
  • Beğeniler 1419 / 2962
  • Ticaret 45, (%100)

saintx adlı üyeden alıntı

önbelleğe yada cookie'ye aldırmak çözüm olabilir soulsmasher'in mekanizmasından tek farkı key eklemeli olmasıdır.sistemi geliştirebilirim.


Sistem geliştirilirse çok iyi olur.

Ek Olarak: Sanırım sitem geliştirilmeden de bu şekilde kullanılabilir. lisans.txt dosyasını Google Drive hesabımıza atıp yol olarak da orayı göstermemiz yeterli. Google sunucuları çökecek değil ya. :)
brk

kişi bu mesajı beğendi.

saintx saintx .... Kullanıcı
  • Üyelik 19.07.2012
  • Yaş/Cinsiyet 44 / E
  • Meslek ...
  • Konum Diğer
  • Ad Soyad .** .**
  • Mesajlar 148
  • Beğeniler 1 / 40
  • Ticaret 2, (%100)
Cookie kontrol sistemi eklendi.Günde 1 kez kontrol yapar.
 

 

cudjex cudjex ozergul.net Kullanıcı
  • Üyelik 23.11.2011
  • Yaş/Cinsiyet 31 / E
  • Meslek öğrenci
  • Konum İzmir
  • Ad Soyad Ö** G**
  • Mesajlar 1647
  • Beğeniler 347 / 570
  • Ticaret 8, (%100)
Sizin yazdığınız bu lisans mekanizmasını kullanarak kendime çok kullanışlı bir lisans paneli yazıyorum elinize sağlık :)
 

 

ozergul.net/com
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al