這是一個相當簡單的系統版本,但它現在應該可以完成這項工作。它通過提供當前服務器的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