Para un tema o un script vendido a alguien que no es desarrollador, tumbar el sitio ante una copia sin licencia es el gesto equivocado: quien lo sufre suele ser el comprador que copió mal su clave, y lo paga tu bandeja de soporte. banniere() devuelve en su lugar un pequeño aviso fijo: nada más cambia en la página.
require_once __DIR__ . '/Licence.php';
$reglages = @include __DIR__ . '/license.php';
$licence = new Licence(
is_array($reglages) ? $reglages['cle'] : '',
__DIR__ . '/cache'
);
register_shutdown_function(function () use ($licence) {
echo $licence->banniere('My theme');
});
El comprador lo quita poniendo su clave en un archivo, junto a la biblioteca. Ese archivo es lo único que tiene que tocar.
<?php
return array(
'cle' => '',
);
Devuelve una cadena vacía cuando la licencia es válida, y también cuando la red ha fallado: un visitante nunca ve un aviso porque nuestro servidor pasara una mala noche. Con una clave de desarrollo lo dice, con discreción, que es justo lo que quieres mientras construyes.
Un tema HTML, un archivo de Figma, un juego de iconos, una tipografía: nada de eso se ejecuta en un servidor al que puedas preguntar. Todo lo que entregas lo lee, lo modifica y lo redistribuye quien tenga los archivos. No hay comprobación que añadir, y no existe ninguna versión de esta página donde eso cambie.
No finjas. Un script ofuscado que llama a casa desde una página estática, una huella oculta en un canvas, una compilación que se rompe a los treinta días: todo eso lo quita en una tarde la única persona que iba a piratearte, y todo eso acaba en un ticket de soporte de los cincuenta que pagaron. Estarías gastando tu credibilidad para no proteger nada.
Lo que existe en su lugar actúa en la entrega, no en la ejecución. Cada descarga se reempaqueta para el comprador que la pidió, y lleva tres cosas:
Eso es trazabilidad, no prevención, y no te la vamos a vender como otra cosa: un comprador que borre el archivo y vacíe el comentario se va con una copia limpia. Lo que sí te da es un nombre cuando una copia aparece donde no debería, un motivo para que ese comprador se lo piense dos veces, y las dos cosas que una copia pirata nunca tiene: las actualizaciones y tu soporte.
Aquí importa una distinción. Si tu tema tiene algo de PHP — un formulario de contacto, un archivo de configuración, un include — entonces se ejecuta en un servidor, la comprobación de arriba es real y el aviso funciona. Solo en el caso totalmente estático, HTML y CSS y nada más, no hay comprobación posible en ejecución.
Escríbenos desde tu área de autor. Una pregunta que hubo que hacer suele significar que a esta página le falta un párrafo.