PHP Script Lisanslama Örneği
Bazı yerlerde bu örnekleri $_SERVER değişkenine göre yaptıklarını gördüğüm için içime daha çok sinen haliyle bir örnek yapmak istedim. İçime sinmeme sebebi kolay müdahele edilebilir olmasıdır. Siz kodları ne kadar kilitlerseniz kilitleyin
$_SERVER[' SERVER_NAME']=$_SERVER['HTTP_HOST']='www.cnylmz.net';
gibi bir satır kullanıldığında, lisans sisteminiz işlevini tamamen kaybeder. İçime sinmesi için, bu müdaheleyi olabildiğince zorlaştırmak gerekiyor.
Lisansın her dosyada çalıştırılması trafiği arttıracağı için hem bant limitini taşırabilir, hem de gereksiz yavaşlama sağlar. Tani aynı anda çalışan lisanslı betikler de sizin sunucunuza zorluk çıkarabilir. Böyle bir sorunun çözümünü de, ilk iki sayfadaki yöntemleri birleştirerek çözebiliriz.
İlk olarak unutmamız gereken, bilgiyi betik aracılığı ile kaydedeceğimiz için lisans.php dosyasına yazma izni vermemiz gerektiğidir. Bu işlemi yaptıktan sonra lisanslanacak betiğinizdeki her sayfa tarafından include edilen dosyanızın başına aşağıdaki kodları eklememiz gerekir.
PHP kodu
<?php
require('lisans.php');
$lisans['site']=
getenv('HTTP_HOST');
if (substr($lisans['site'],
0,
4) ==
"www.") $lisans['site']=
substr($lisans['site'],
4);
if($lisans['hash']!==$lisans_anahtar)
{
$lisans_cevap=
file_get_contents('http://www.cnylmz.net/kontrol.php?site='.
$lisans['site']);
if($lisans_cevap!='ONAYLANDI')
die('Bu site lisanslı değil!!!');
// Onaylı ise dosyaya yazalım
$tut =
fopen('lisans.php',
"w+");
?>');
}
?>
Bu kodları eklediğinizde sistem öncelikle lisans.php içideki lisans_anahtar değişkenini kontrol edecektir. date('Ymd') fonksiyonu ile YILaygün şeklinde bir ekleme yaptığımız için lisans anahtarı günden güne değişme ihtiyacı doğacaktır. Eğer lisans_anahtar değişkeni geçersiz ise, sizin cnylmz.net/kontrol.php yerine yazdığınız dosyanıza bağlanıp bir de orasını kontrol edecektir.
PHP kodu
<?php
$lisansli_siteler=
array('cnylmz.net',
'seyranli.com',
'bilgisaray.net');
else
?>
şeklinde kaydettiğiniz kontrol.php eğer ONAYLANDI mesajını gönderirse, lisans sistemi o gün için bir key oluşturup bunu lisans.php dosyasına kaydedecektir.
Betiğin bundan sonraki çalışmalarında lisans_anahtar değişkeni doğru olacağı için, tekrar sizin sunucunuza bağlanma gereği duymayacaktır. Bir sonraki gün yine sunucunuza bir kez bağlanıp lisans.php dosyasını güncelleyecektir
Bu sayfadaki uygulama örneğini indirmek için BURAYA TIKLAYIN.
rar içinden çıkan sunucu.php sizin sitenize,
ornek.php ve lisans.phpmüşterinizin sitesine yüklenecektir.
1 2 3
PHP Script Lisanslama Örneği
Oy Sayısı: 41
Puan: 7.95/
10.00
Etiketler
php lisans ,
php lisanslama ,
script lisanslama ,
php script lisanslama ,
site lisanslama ,
php ile lisans ,
php domain lisanslama ,
php domain lisans ,
php ile lisanslama ,
php lisans sistemi ,
burak kurum02 Şubat 2010 Salı 00:52:03
güzel metin
Selim Çakal23 Mart 2010 Salı 11:00:20
Hocam iyide lisans php ye ne koyacaz ya da ne yazacaz
Gündüz Can YILMAZ23 Mart 2010 Salı 11:23:33
Mesela cnylmz.net adresi için lisans kodu üretecekseniz, herhangi bir dosyada
yazıp lisans kodunu görebilrisiniz. Bu kod da
BE64-F977-1336-F1DF-7273-299C-8EE1-D8C9
oluyor. artık siz lisans.php dosyası içine
PHP kodu
<?php
$lisans_anahtar='BE64-F977-1336-F1DF-7273-299C-8EE1-D8C9';
?>
yazarak kodların yalnızca o sitede çalışmasını sağlayabilrisiniz.
mustafa21 Nisan 2010 Çarşamba 14:58:26
hocam çok güzel hazırlamışsınız. ancak bu localhost da çalışıyor. yani scripti localhost da entegre edip lisans anahtarını localhost için alınca çalışıyor. ama hosta atıp domain.com için lisans kodu alınca çalışmıyor. çok uğraştım ama çözemedim bunu nasıl halledicez
Gündüz Can YILMAZ22 Nisan 2010 Perşembe 06:03:14
if (substr($site, 0, 4) == "www.")
olan satırda problem varmış
if (substr($lisans['site'], 0, 4) == "www.")
şekline getirdim. Üstteki kodlarda da düzeltme yaptım. Siz de kodunuzdaki o satırı değiştirirseniz sorun kalmayacaktır. İlginiz için teşekkür ederim
mustafa22 Nisan 2010 Perşembe 09:15:25
ilginize çok teşekkür ederim. evet şimdi çalıştı ancak yine bir sorunla karşılaştım. lisansı domain.com için alınca sadece domain.com diye girince açılıyor. www.domain.com diye girince lisans geçersiz diyor açılmıyor. böyle bir sorun var. uğraştım ama çözemedim.
Gündüz Can YILMAZ22 Nisan 2010 Perşembe 11:56:55
Kodları düzgünleştirmek adına değişkenleri değiştirirken hata yapmışım. Bir önceki hatanın aynısı hemen alt satırında tekrarlamış.
$lisans['site']=substr($site,4);
satırı yerine
$lisans['site']=substr($lisans['site'],4);
yazdığınızda düzelecektir.
Hasan Can ÖZKAN02 Haziran 2010 Çarşamba 12:25:52
Peki lisans.php'yi çağırmak yerine başka bir sunucudan nasıl çekebilirim? Mesela izin verdiğim siteleri ben www.site.com/siteler.txt veya siteler.php gibi uzak sunucudan çekmek istiyorum?
Gündüz Can YILMAZ02 Haziran 2010 Çarşamba 13:13:10
O şekilde iken lisans anahtarı uygulaması olmaz çünkü tüm anahtarlar bir şekilde görüntülenebilri ancak yina aynı ayarları yapıp doğrulama fonksiyonunu
if($lisans['hash']!==$lisans_anahtar)
die('Lisans anahtarınız bu site için geçerli değil');
satırları yerine
$lisans_cevap=file_get_contents('http://www.cnylmz.net/lisans.php?site='.$lisans['site'].'&anahtar='.$lisans['hash']);
if($lisans_cevap!='ONAYLANDI')
die('HATALI ANAHTAR');
yazarak sunucu kontrollü hale getirebilrisiniz. file_get_contents yerine farklı fonksiyonlar da kullanabilrisiniz. hatta tavsiyem fsockopen, curl ve peşinden file veya fil_get_contents tir
Hasan Can ÖZKAN05 Haziran 2010 Cumartesi 03:10:21
Herşey iyi güzel de scripti kasmasa :)
Gündüz Can YILMAZ05 Haziran 2010 Cumartesi 04:09:10
Uzaktan okuma işlemi mecburen yavaşlamaya sebep olur. Tampon kullanın desem, sunucuya kaydettikten sonra lisansı başka sunucuda aramanın anlamı kalmaz. Bu durumda ancak betğinizin az kullanılan, yönetim paneli gibi yerlerinde bu korumayı aktifleştireilirsiniz. Yine de tavsiye etmediğim bir yöntem.
salih13 Haziran 2010 Pazar 23:51:54
hocam ben yeniyim bu konuda lisans kodu üretme konusunu anlamadım..
echo wordwrap(strtoupper(md5('benimsitem.net')),4,'-',true);
yazdım herhangi bir dosyada lisans kodunu nasıl görecem? bunu başaramadım..
BE64-F977-1336-F1DF-7273-299C-8EE1-D8C9 cnylmaz.net için buysa başka yazdığım domain için nasıl görürüm anahtarı?
Gündüz Can YILMAZ14 Haziran 2010 Pazartesi 07:22:06
Salih bey goster.php adında bir dosya içerisine
<?php echo wordwrap(strtoupper(md5('benimsitem.net')),4,'-',true); ?>
yazıp, http://adres/goster.php şeklinde bu dosyayı çağırırsnaız, karşınıza direk olaran benimsitem.net e ait lisans anahtarını okursunuz.
Hasan Can ÖZKAN16 Haziran 2010 Çarşamba 02:55:39
Uzak sunucudan çekeceğim lisans.php dosyası nasıl olmalı ? Onu ayarlayamadım ? Aşağıdaki satırlar için geçerli olan lisans.php dosyası.
$lisans_cevap=file_get_contents('http://www.cnylmz.net/lisans.php?site='.$lisans['site'].'&anahtar='.$lisans['hash']);
if($lisans_cevap!='ONAYLANDI')
die('HATALI ANAHTAR');
Gündüz Can YILMAZ16 Haziran 2010 Çarşamba 12:18:31
PHP kodu
<?php//uzaktaki lisans.php dosyası
else
?>
Hatta dosyanın başına
if(gethostbyname($_GET['site'])!=$_SERVER['REMOTE_ADDR'])
die('Bu site sizin değil!!!');
şeklinde uyarı da verdirebilrisin. Tabi IPv6 da sıkıntı olabilir, o yüzden eklemeni pek tavsiye etmiyorum
Hasan Can ÖZKAN16 Haziran 2010 Çarşamba 12:53:14
Ben hala daha anlamadım? bakın lisans.php dosyası oluşturdum bu dosyanın içinde izin verdiğim lisans anahtarı olacak bu nasıl olacak onu demek istiyorum ? bana örnek bir lisans.php dosyası gösterirmisiniz?
Gündüz Can YILMAZ16 Haziran 2010 Çarşamba 13:13:23
Bu yazdığım zaten örnek bir lisans.php dosyası idi, bu sizin sunucunuzda duracak. Bu da kullanıcının sitesinde olacak dosya şekli
PHP kodu
<?php
die('Güvenliğiniz için sunucu "SAFE MODE(Güvenli biçim)" durumunda çalıştırılmalıdır');
require('lisans.php');// içinde $lisans_anahtar değişkeni var
$lisans['site']=
getenv('HTTP_HOST');
if (substr($lisans['site'],
0,
4) ==
"www.") $lisans['site']=
substr($lisans['site'],
4);
-
$lisans_cevap=
file_get_contents('http://www.cnylmz.net/lisans.php?site='.
$lisans['site'].
'&anahtar='.
$lisans_anahtar);
if($lisans_cevap!='ONAYLANDI')
die('Lisans anahtarınız bu site için geçerli değil');
else
/*
burası da sizin php kodlarınız
*/
?>
Hasan Can ÖZKAN21 Haziran 2010 Pazartesi 02:55:20
Çok özür diliyorum, çok fazla oldum biliyorum affınıza sığınarak soruyorum. LOCALHOST site adresine lisanslanmış uzaktaki lisans.php örneğini yazarmısınız buraya lütfen :(
Gündüz Can YILMAZ21 Haziran 2010 Pazartesi 17:16:57
Aman efendim olur mu öyle şey.
http://www.cnylmz.net/dosyalar/lisans.rar adresine çalışır halde 3 dosya ekledim. Yalnız buradaki örneklerin dışında sunucu dosyasını sunucu.php olarak ayarladım. lisans.php de bulunan anahtarı değiştirip sağlıklı olup olmadığını kontrol edebilirsiniz.
Hasan Can ÖZKAN23 Haziran 2010 Çarşamba 07:46:13
Öncelikle çok çok teşekkür ederim, ilginiz için ayrıca teşekkür ederim. Bir maruzatım daha olacak. $lisans_anahtar değişkenini başka bir sunucu üzerinden çekme ihtimalimiz varmı ? (Örneğin: Script 1 aylık satın alındı diyelim 1 ayın sonunda ben lisans anahtarını silecem uzaktan script calısmayacak ?) Mümkünmüdür böyle birşey? Saygılar.
Gündüz Can YILMAZ23 Haziran 2010 Çarşamba 12:34:55
Böyle birşey için, lisans anahatarı tamamen gereksiz. Yani şöyle ki, son örnekte ki
$lisans_cevap=file_get_contents('http://www.cnylmz.net/lisans.php?site='.$lisans['site'].'&anahtar='.$lisans_anahtar);
satırını
$lisans_cevap=file_get_contents('http://www.cnylmz.net/lisans.php?site='.$lisans['site']);
olarak değiştirin. Ardından, sizin sunucunuzda bulunacak olan kontrol dosyasını da veritabanı ile çalışacak hale getirin,
PHP kodu
if($sonuc_dizi==0 || $sonuc_dizi<time())
else
şeklinde değiştirip daha rahat kullanabilrisiniz. tabi veritabanı yerine dosya vs. kullanmak da tercihinize kalır
Turgay Aksu24 Haziran 2010 Perşembe 08:39:30
Çok değerli bir bilgi, paylaştığınız için teşekkürler. Bir ekleme yapmamız mümkün mü? Lisans kontrolünü bir kez yaptıktan sonra bir daha yapmasın script. Yardımcı olabilirseniz sevinirim.
Selamlar.
Gündüz Can YILMAZ24 Haziran 2010 Perşembe 13:16:40
Turgay bey istekler doğrultusunda yorumlarda bulunan bilgileri de hesaba katarak 2 sayfa daha ekledim yazıya. Yazının 3. sayfası yani
http://www.cnylmz.net/php/php-script-lisanslama-ornegi-16/3.html
sayfası, sizin isteğinize oldukça uygun. Yerel dosyada yapacağı kontrol sistemi etkilemeyeceğinden bu halde sorun yaşamazsınız. Eğer günlük değil, yalnızca bir kere kontrolünü istiyorsanız ilk örnek tam size göre.
Turgay Aksu28 Haziran 2010 Pazartesi 04:22:35
Elinize, emeğinize sağlık...
Selamlar.
Metin GÜZEK18 Ağustos 2010 Çarşamba 02:09:40
merhaba.
lisans.php
include.php
++
kontrol.php
şeklinde bir rar hazırlıyabilirmisiniz. 3. sayfadaki örneğe göre. bi türlü beceremedim.
Parse error: syntax error, unexpected ';' in /home/xxxx/public_html/test/test.php on line 6
şeklinde hata alıyorum.
lisans.php ye 777 verdim. fakat kodu yazamıyor sanırsam.
Samet Arabacıoğlu19 Ağustos 2010 Perşembe 14:15:08
Ben çalıştırdım ancak bir türlü lisans anahtarını okumuyor.Her şekilde lisans anahtarınız yanlış demekte.
Gündüz Can YILMAZ19 Ağustos 2010 Perşembe 15:59:08
Metin Bey wordwrap yazan satırda bir parantezi kapatmayı unutmuşum. o satırı değiştirdimbaşka da bir sorun yokmuş. Kodları kopyalarken ?> işaretinden sorna kendisi bir boşluk koyuyor, o boşluk da ONAYLANDI dan sonra geldiği için farklı algılıyor. if($lisans_cevap!='ONAYLANDI') yerine if(strpos($lisans_cevap,'ONAYLANDI')===false) olarak değiştirebilirsiniz veya kontrol.php nin sonundan bir boşluk silin(Samet bey tahminimce sizin probleminiz buydu)
Çalışan 3. sayfa örneğini http://www.cnylmz.net/dosyalar/lisans.rar adresinden indirebilirsiniz
Gökhan28 Ocak 2011 Cuma 05:48:30
Yukarıdaki Örneği bir türlü çalıştıramadım . Sürekli lisans bu site için geçerli değil hatası geliyor. lisans.rar olan dosya çalışıyor fakat oda fazla güvenli gelmedi her lisans.php dosyasını sürekli değiştirip şifrelemek gerekiyor. Günlük bir kez kontrol eden kodlar ise sürekli lisans hatası veriyor yardımlarınızı bekliyorum.
Arda20 Nisan 2011 Çarşamba 23:07:54
Yazının kaynağını belirtmemişsiniz. Bu benim yazım!
www[dot]soulsmasher[dot]net/php-script-lisans-mekanizmasi/
Lütfen bunu belirtin!
Gündüz Can YILMAZ21 Nisan 2011 Perşembe 12:45:40
Gerçek misiniz fake misiniz bilemem ama yazının verdiğiniz linkle tek alakası aynı işi yapıyor olması. Yazılarımın kaynagı bizzat kendi deneyimlerimdir. eğer gerçekten yazı sahibi olduğunuzu düşünüyorsanız lütfen makalemi okuyun. Makaleyi okumanıza rağmen hak sahibi olduğunuzu düşünüyorsanız sizin adınıza üzülürüm.
Üstelik kaynak olduğunu düşündüğünüz makale olsa olsa benim ilk paragrafımda eleştirdiğim scriptlere kaynak olabilir. Kimseye işini öğretmek haddim değil tabi ama bu benim işim ve bu iş budur, böyle yapılır.
varlık27 Nisan 2011 Çarşamba 12:13:34
Hocam merhaba inan baştan sona okudum.Konu o kadar dağılmış ki. Müsait zamanında konuyu toparlarsan benim gibi bu sayfaya ulaşanlar daha kolay anlar.Acemi olduğum için kafamda çok karıştı.Yani hangi dosya müşteri de hangisi bizde nedir ne değildir çorba olmuş yukarısı.Teşekkürler makale için baştan okuyup tekrar denicem 3 ncü kez
varlık22 Mayıs 2011 Pazar 04:28:30
İlgin için tşk ederim.Kullanmaya başladım gönderdiğiniz rar'lı dosya sorunsuz çalışıyor
Fatih SARI03 Haziran 2011 Cuma 10:51:28
Allah senden razı olsun kardeş.
Ellerine sağlık. Temalarımı lisanslamak için uzak sunucu kullanıyordum artık bu sistemi kullanacağım.
Ömür Yavuz05 Ağustos 2011 Cuma 08:51:15
Hocam çok teşekkür ederim. Güzel bir paylaşımda bulunmuşsunuz. 3. Sayfadaki sistem ile 3 dosyalık rarlı sistemi denedim sonuç gayet mutlu edici. 3. sayfadaki sistem mükemmel çalışıyor. Sanırım biraz üstünde durmak gerekli sistemin mantığıı anlamak lazım.
Gündüz Can YILMAZ05 Ağustos 2011 Cuma 13:47:44
Ben teşekkür ederim, faydası oluyorsa ne mutlu bana
orçun07 Ağustos 2011 Pazar 21:56:36
paylaşımınız için teşekkür ederim. bir şey sormak istiyorum. peki bu lisans kodlarını saklayacaım dosyayı bi şekilde ulaşıma nasıl kitleyebilirim? yani sonuçta kodları verdiğimiz kişi yine bu dosyayı açıp müdahele edebilir ???
Gündüz Can YILMAZ08 Ağustos 2011 Pazartesi 13:16:33
sourcecop, sourceguardian, ioncube, zend encoder gibi çeşitli yazılımlar kodların kilitlenmesini sağlıyor. basit anlamda base64 de kullanabilirsiniz ancak zend ve ioncube gibi koruma sağlayamayacaktır.
Berque Cemilian11 Eylül 2011 Pazar 12:00:38
Hocam valla takdir ettim tesadüfen lisans anlatımı araştırırken bu postunuda denk geldim, yorumlarda resmen canla başla çalışmış insanların yardımına koşmuşsunuz. Sadece internet değil reel hayata da sizin gibi yardımsever insanlar gerek. Toplum olarak buna çok ihtiyacımız var...
Allah razı olsun,
İyi çalışmalar.
Gündüz Can YILMAZ11 Eylül 2011 Pazar 13:57:42
Teşekkür ederim, yorumunuz oldukça güzel ve mutlu edici. Allah sizden de, sizin gibi iyiliğe önem verenlerden de razı olsun
Yusuf12 Eylül 2011 Pazartesi 11:57:02
Peki Hocam 3. sayfadaki lisanslama dosyasını kullandık ve bir kod oluşturduk xxx.com olarak ve bunu lisans.php ye yazdık. Birde sunucumuza koyduk kontrolü çalıştı. xxx.com kontrolünü xxx.com üzerinde sunucudan yönetemiyoruz bu sıradan sonra şimdi yapmak istediğim şu ki; şimdiden teşekkür ediyorum. xxx.com üzerindeki lisanslama işlemini sunucu üzerinden kontrol etmek. Ben sunucu üzerinde bulunan xxx.com dosyasını değiştirdiğimde lisansı iptal olacak. Bu yüzden site üzerinde kontrol etmemize gerek yok. Sadece sunucu üzerinde kontrol yapmam gerekiyor. Yazılıma başladığımda sitenizi inceleyip mantığı kapmıştım fakat şimdi çok yoğun bir düşünce içerisinde yapmak istediğimin ne olduğunu kestiremiyorum yazının içerisinde olmasına rağmen. Müsait olursanız bir örnek dosya oluşturabilirseniz çok mutlu olacağım.
Şimdiden teşekkürler bu güzel paylaşım için
Gündüz Can YILMAZ12 Eylül 2011 Pazartesi 12:24:20
Yusuf Bey 3. sayfadaki son örnek zaten tüm domainleri kontrol edebileceğiniz tek bir sayfa. Yani müşterilerinizin tamamını bu şekilde kontrol edebilirsiniz.
Engin YILDIRIM01 Ekim 2011 Cumartesi 08:49:35
3. sayfada şurada hata yokmu ?
$lisans_cevap=file_get_contents('http://www.cnylmz.net/kontrol.php?site='.$lisans['site']);
if($lisans_cevap!='ONAYLANDI')
die('Bu site lisanslı değil!!!');
ONAYLANDI ise bu site lisanslı değil diyor sanki ?
Gündüz Can YILMAZ01 Ekim 2011 Cumartesi 12:49:28
Engin bey gözünüzden kaçmış sanırım, aradaki operatör eşit değildir operatörü. != ifadesini == gibi görmüşsünüz
ahmet23 Ekim 2011 Pazar 16:32:22
harika bilgi tşkler.
Nida ŞAHİN30 Kasım 2011 Çarşamba 04:33:27
Can bey merhaba.Benim ciddi anlamda kafam karıştı. Zaten çok bilgili değilim ama sanırım fazla detay olunca karıştırdım.
Ustam ben mesela www.nidahaber.com için yapacağım yeni haber sitesini lisanslamak istiyorum.
1-) scriptin kurulacağı site www.nidahaber.com
( nidahaber.com sitesinde lisans.php yada hangi kodlamalar bulunacak.lisans anahtarını md5 mi yapmamız gerekir yoksa kafamıza göre bir sayı verebilirmiyiz.)
Gündüz Can YILMAZ30 Kasım 2011 Çarşamba 05:15:55
Hocam istediğiniz gibi rakam, harf verebilirsiniz hiç farketmez. kendi sitenize koyacağınız kontrol.php üzerinde de tanımlamaları ona göre düzenlemeniz gerekir.
3. sayfada eklediğim rarlı dosya var, o dosyayı açın, lisans.php dosyasını nida habere yükleyin ornek.php deki kodları nida haberin header dosyasına şifreli halde ekleyin. sunucu.php dosyasını da kendi sitenize yükleyin tamamdır :)
Nida ŞAHİN30 Kasım 2011 Çarşamba 06:55:22
can bey md5 şifreleyici sitelerde sağlıklı bir şifreleme yapamadım.
tavsiye edebileceğiniz site yada program varmı acaba benim gibi md5 şifrelemesini sağlıklı yapamayan arkadaşların olabileceğine inanıyorum. e-posta olarak ya da buradan yardımcı olursanız çok sevinirim.
Şuana kadar denemelerim başarılı olmadı.İnşallah başarılı olacak.
Gündüz Can YILMAZ30 Kasım 2011 Çarşamba 08:07:47
echo wordwrap(strtoupper(md5("nidahaber.com")),4,'-',true);
şeklinde http:// ve www. olmadan bir php dosyasına yazıp çalıştırın. ekrana gereken lisansı basacaktır
Ertuğrul Boyacı07 Şubat 2012 Salı 09:04:10
hocam öncelikle merhabalar, ben olayı kısmen anladım ama rardaki dosyaları çözemedim onlar sunucu kaynaklı sorgulayanlar için mi ?
Gündüz Can YILMAZ07 Şubat 2012 Salı 11:13:15
Evet hocam, uzak sunucu ile key kontrolü yapmak isteyenler için