Если вам не нужны люди, снимающие ваш чек, вам действительно нужно добавить только оператор if
, который проверяет, действителен ли настроенный лицензионный ключ.
Я заметил, что вы упомянули, что ваши лицензионные ключи были просто хэшами SHA1. Вы можете легко добавить дополнительные 4 символа к хешу, которые вы можете использовать в качестве контрольной суммы.
Например:
function generate_key()
{
$serial = sha1(uniqid(rand(), true));
$checksum = substr(md5($serial), 0, 4);
return $serial . $checksum;
}
function verify_key($key)
{
$serial = substr($key, 0, 40);
$checksum = substr($key, -4);
return md5($serial, 0, 4) == $checksum;
}
Это очень простой пример, но он просто учебный.
По сути, вы бы проверили, является ли лицензионный ключ действительным на сервере хоста, вместо того, чтобы пропинговать скрипт на вашем сервере.
Недостатком этого является то, что любой сможет создать действительный ключ, открыв исходный код и найдя validate_key
.
Можно сделать так, чтобы он вызывал внешний сценарий verify_key
, но стоит ли оно того? Кроме того, вы будете жертвовать временем загрузки страницы для проверки ключа.
Я помню, что у vBulletin была очень простая система взлома лицензий, но у них было скрытое изображение 1x1 в нескольких разделах, что пинговало скрипт в их домене. Используя журналы, они смогли определить, на каких доменах размещались нелегальные копии их программного обеспечения, и просто отправили адвокатское письмо админу.
Если бы вы хотели более надежное решение, я бы посоветовал изучить Zend Guard , но вам, похоже, не безразлично, что люди взломают ваше программное обеспечение, поэтому я бы просто пошел как можно проще.