5

いくつかの専門的な Wordpress テーマを開発する予定で、ライセンス キーを使用して保護したいのですが、可能ですか?

もしそうなら、誰かが私が始めるのを助けるためにいくつかの投稿や記事にリンクしてくれませんか?

4

2 に答える 2

4

テーマのライセンスキーとライセンスされたURLを保持して、独自のサーバーにデータベースを設定できます。次に、テーマの管理ページを設定します。内で、最初にライセンス設定アレイを登録します。次に、同じページに非表示の設定フィールドを実装します。このフィールドは、サイト管理者がライセンスキーを更新するたびに更新されます。更新関数は、ライセンスキーと$_SERVERのホストを渡し、非表示のlicense_settingsフィールドをtrueまたはfalseに設定して、サーバーにリクエストを送信します。

本当に単純化されたコードは次のようになります。

functions.php

<?php
// functions.php
require("myadminpage.php");

# Functions follow here...
?>

myadminpage.php

<?php
// myadminpage.php

// register settings
function my_settings_init() {
  register_setting('settings_license', 'settings_license');
}
// register admin page
function my_add_admin_page() {
  add_menu_page(__( '' ), __( 'Manage License' ), 'administrator', 'myadminpage', 'my_admin_page');
}
add_action('admin_init', 'my_settings_init');   
add_action('admin_menu', 'my_add_admin_page' );

if(isset($_GET["settings-updated"]) && $_GET["settings-updated"] == true) { 
    $options = get_option('settings_license');
    $key = $options["key"];
    $host = parse_url($GLOBALS['HTTP_SERVER_VARS']['REQUEST_URI'], PHP_URL_HOST);
    $url = sprintf("http://you.com/check-license.php?key=%s&url=%s", $key, $host);
    $options["valid"] = trim(file_get_contents($url)) == 1) ? "true" : "false"; 
    update_option('settings_license', $options);
}

// callback function that renders your admin page
function my_admin_page() {
  settings_fields('settings_license'); 
  $options = get_option('settings_license'); 
  ?>
  <form method="post" action="options.php"> 
  <input id="settings_license[key]" type="text" name="settings_license[key]" value="<?php echo $options["key"]; ?>">
  <input id="settings_license[valid]" type="hidden" name="settings_license[valid]" value="<?php echo $options["valid"]; ?>">
  <input type="submit" value="Save"> 
  </form> 
  <?php
}
?>

これで、必要なとき/必要なときにいつでも、ライセンスオプションを取得して、無効な使用法を任意の方法で処理できます。例(失礼な方法):

header.php

<?php
// very first line
$license = get_option('settings_license');
// see: http://ckon.wordpress.com/2006/08/09/server-request_uri-doesnt-always-work-correctly-heres-how-to-fix/
$ruri = $GLOBALS['HTTP_SERVER_VARS']['REQUEST_URI'];
if(!preg_match("#wp-admin#", $ruri) && $license["valid"] != "true") {
  wp_die( __('This website uses unlicensed software.<br>Administrators can update their license key <a href="'. get_bloginfo('url') .'/wp-admin/admin.php?page=myadminpage.php">here</a>.') );
}

# rest of header.php comes here..    

最後に、phpコード(例:http ://www.ioncube.com/sa_encoder.php )を難読化すれば完了です。ただし、WPなどの他のライセンスに違反していないことを確認してください。最終的なコード内で使用されているWordPressコア関数が1行ある場合、それをWP(GPL)以外のライセンスでリリースすることはできません。

于 2012-05-01T18:42:32.557 に答える
1

私はそうは思わない。結局のところ、ユーザーはテーマを使用するために php コードを持っている必要があり、持っている場合は、キーが不要になるように変更することができます。

于 2011-07-07T21:58:58.513 に答える