Защита WordPress тема с проверкой лицензионного ключа - PullRequest
3 голосов
/ 07 июля 2011

Я планирую разработать несколько профессиональных тем для Wordpress и хотел бы защитить их с помощью лицензионных ключей, возможно ли это?

Если это так, будет ли кто-нибудь готов сослаться на некоторые посты или статьи, чтобы помочьмне начать?

Ответы [ 2 ]

3 голосов
/ 01 мая 2012

Вы можете настроить базу данных на своем собственном сервере, держа лицензионный ключ и лицензионный 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, вы не можете выпускать ее под любой другой лицензией, кроме WP, то есть GPL.

1 голос
/ 08 июля 2011

Я так не думаю. В конце концов, у пользователей должен быть php-код, чтобы использовать тему, и, если они есть, они могут изменить его таким образом, чтобы он больше не нуждался в ключе.

...