这是一个相当简单的系统版本,但它现在应该可以完成这项工作。它通过提供当前服务器的URL作为密钥工作,但您可以将其交换为许可证的唯一ID。
对于CMS /应用:
<?php
define('SITE_INVALID', 'invalid');
define('AUTH_SITE', 'http://www.example.com/verify.php');
function verify_install($key){
$result = file_get_contents(AUTH_SITE.'?key='.urlencode($key));
if($result == SITE_INVALID){
return false;
}
// Valid
return true;
};
?>
(早期),然后在你的页面的话:
<?php
$site_key = $_SERVER['SERVER_NAME']; // Use current site URL (eg: www.example.com)
if(!verify_install($site_key)){
// Invalid
echo 'Your account is disabled';
exit();
}
// Continue as normal
?>
和许可证服务器上:
<?php
define('SITE_VALID', 'valid');
define('SITE_INVALID', 'invalid');
function verify_remote_install(){
if(!isset($_GET['key'])){
// Nothing sent - assume fine
return true;
}
$key = urldecode($_GET['key']);
// (Check if key in database, etc)
$result = key_is_valid($key); // Replace with your own method
if(!$result){
// Invalid
return false;
}
// Valid
return true;
}
?>
然后验证:
<?php
$result = verify_local_install();
if(!$result){
echo SITE_INVALID;
} else {
echo SITE_VALID;
}
?>
您需要用验证密钥的方法替换key_is_valid()
函数,无论是检查密钥是否在数据库中或否则。
如果您不确定(例如:如果与验证服务器的连接失败,或者密钥未发送),您会更好地认为它是有效的,这样应该会出现问题用户的控制,你会给他们带来的好处。您希望为合法用户提供最佳体验,并在可能的情况下阻止盗版者,而不是给付费用户造成不便。
如前所述,任何具有PHP基本知识(甚至只是能够读取)的人都可以很容易地找到它并在代码没有以某种方式混淆时将其禁用。您可以在http://code.google.com/p/phpobfuscator/找到一个开源应用程序。如果您仍然希望开发人员修改应用程序,则可以考虑只是混淆许可代码,将其放在单独的文件中并为其提供一个虚假的无辜名称。
这太棒了,谢谢!正如描述所说,我并不试图仅仅试图将软件安装到的URL聚合到我的数据库中。 Upvoted,因为我很可能会以某种方式实现这一点...但我担心的是我不希望安装程序依赖我的服务器进行响应。我也担心人们看到这个脚本,然后使用提交URL向数据库发送一串错误的URL。有任何想法吗? – RANGER 2011-04-14 05:16:08
@cbh - 我想我明白你的意思,在这种情况下,只发送当前的URL,只要执行'file_get_contents(AUTH_SITE。'?url ='。urlencode($ _ SERVER ['SERVER_NAME']))'发送到远程服务器的URL(最后如果你不需要响应而不能保存页面),那么在远程服务器上只需要在你的数据库中存储'urldecode($ _ GET ['url'])''。如果您最终使用上述授权设置,只需将该密钥保留为网站网址,或将其发送,也可以将其保存。使用某种单独的密钥而不是仅用于验证的URL将会停止批量检查。我希望这有助于! – Adam 2011-04-14 05:29:27
完美。感谢您的帮助! – RANGER 2011-04-14 18:09:15