Tema Koruma
Temanın modül sınıfı yoktur ve şablonları şifrelenemez. Neyin korunabildiği, lisans kontrolünün nereye konduğu ve bir şablonun dürüstçe neyi zorlayabildiği.
Genel Bakış
Yalnız PHP şifrelenebilir. Temada bunlar hooks.php, theme.php ve yalnızca tema engine: 'php' bildirdiğinde view dosyalarının kendisidir.
Şablon yalnız gösterir. Karşılaştırdığı değer ve kararı veren kod şifreli PHP dosyasında yaşar.
Ön Koşullar
Yapı
Üç katman var ve ilk ikisi aynı dosyadır.
| Katman | Nerede | Ne yapar |
|---|---|---|
| Kontrol | hooks.php, şifreli | Sunucunuza sorar. İlk sayfa gösterilmeden önce bir kez çalışır, böylece lisanssız kopya en başta yargılanır |
| Yayım | hooks.php, şifreli | Cevap "evet" ise şablon verisine bir mühür koyar, değilse hiçbir şey koymaz |
| Zorlama | korunan her şablon | Kendi taşıdığı sabit mühürle karşılaştırır. Paketleyici burada hiçbir şey şifrelemez, karşılaştırmanın kendisi tek dayanaktır |
Dosya yalnız varsa yüklenir. Silinmiş bir hooks.php hiç mühür yayımlamaz ve korunan her şablon kapalı tarafa düşer.
Adım Adım
Kontrolü hooks.php içine koyun
- Sunucunuza
hooks.phpiçinden sorun. Burası, ilk sayfa gösterilmeden önce bir kez çalışan tek yerdir. - Cevabı saklayın. Tema her sayfada devrededir, cache'siz bir kontrol sayfa başına bir istek demektir.
- Kararı orada, şifreli dosyada verin. Şablonlara ulaşan şey bir değerdir, gerekçe değil.
Mührü tek kancadan yayımlayın
- Tema için tek bir
filter:template.variableskancası kaydedin ve temanın ihtiyaç duyduğu her şeyi onun içinde toplayın. - Lisans "evet" dediğinde mührü döndürdüğü diziye ekleyin, demediğinde hiç eklemeyin.
- İkinci bir kanca kaydetmeyin. Yalnız son dönen dizi yaşar, ikinci kayıt birincinin verisini sessizce düşürür.
Bayrağı değil değeri karşılaştırın
- Şablonun taşıdığı sabit dizeyle karşılaştırın. Boolean burada işe yaramaz: isteyen kendi kancasını kaydedip "true" yayımlayabilir.
- Karşılaştırmayı lisanssız çalışmaması gereken her şablona koyun, tek bir ortak sarmalayıcıya değil. Tek kontrol, bulunup silinecek tek dosya demektir.
- Lisanslı yolun sayfanın ihtiyaç duyduğu bir şeyi üretmesini sağlayın. Böylece kontrolü sökmek uyarıyı gizlemek yerine tasarımı bozar.
Tam koruma PHP tema demektir
- Künyede
engine: 'php'bildirin. View dosyaları PHP olur ve geri kalanla birlikte şifrelenir. - Karşılığında sandbox'tan vazgeçer, kaçış sorumluluğunu üstlenirsiniz. Motor seçimi bu takası açıkça söyler.
- Varlıklar iki durumda da açık kalır.
Referans
Örnek
\Hook::add('filter:template.variables', 1, function ($template, $data) {
$answer = \License::remote_check('https://vendor.example/api/licence', [
'product' => 'aurora-theme',
'domain' => \Utility::getDomain(),
]);
$body = \Utility::jdecode((string) ($answer['body'] ?? ''), true);
$ok = $answer === null || ($body['data']['valid'] ?? false) === true;
// Mühür yalnız "evet" cevabında eklenir. Temanın yayımladığı diğer her şey de aynı
// dizidedir: ikinci bir kanca hepsini birden düşürür.
if ($ok) $data['aurora_seal'] = 'a7f3c1d90e5b';
return $data;
});
{if $aurora_seal|default:'' !== 'a7f3c1d90e5b'}
{include file='partials/unlicensed.tpl'}
{else}
{* bölümün kendisi *}
{/if}
Tuzaklar
Lisanslı kopyası olan biri, lisanslı yolun ne yayımladığını izleyebilir. Bu, ömrü bir sürüm kadar olan bir anahtardır. Her sürümde yenisini yazın ki eski paketten alınan değer ilk güncellemede ölsün.
Yalnız son dönen dizi yaşar. İkinci bir kayıt mührü, menüleri ve birincinin yayımladığı her şeyi düşürür.
Lisanslı yol sayfanın ihtiyaç duyduğu bir şeyi taşısın ve kurulumları bildirin ki kopyaların nerede çalıştığını görebilesiniz. Temanın gerçek koruması şifreleme değil, lisanstır.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.