我打算开发一些专业的Wordpress主题,并希望使用许可证密钥保护它,是否可能?
如果是这样,是否有人愿意链接到某些帖子或文章以帮助我开始?
答案 0 :(得分:3)
您可以在自己的服务器上设置数据库,并保存许可证密钥和主题的许可URL。然后,为您的主题设置管理页面。在其中,首先注册许可证设置数组。然后在同一页面上实现隐藏设置字段,每当网站管理员更新许可证密钥时,该字段都会更新。 update函数向服务器发送请求,传递许可证密钥和$_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 :(得分:1)
我不这么认为。毕竟,用户必须拥有php代码才能使用主题,如果他们拥有主题 - 他们可能会以不再需要密钥的方式对其进行更改。