為主題加上一個 PHP 網域授權
9,773 3
最近我思考了一下 WordPress 主題如何進行授權。最初,我想到了透過 JS 判斷網域的方式來實現授權,然而這個想法很快就被否定了,因為 JS 授權 容易被破解,只要透過審查元素就能輕鬆查看。接著,我考慮了 PHP 授權,這種方式相對安全,因為 PHP 有多種加密方法,破解起來也需要更多的時間和精力,這樣就能有效阻止很多人嘗試破解主題。
下面是 PHP 授權網域 的思路。
第一種:雲端校驗網域授權
用戶端程式碼:
PHP PHP
<?php
$shouname = trim($_SERVER['SERVER_NAME']); // 获取域名
$shouurl = file_get_contents('https://www.ikxin.com/shouquan.php?domain='.$shouname); // 获取服务端授权文件
if(!empty($shouurl)){
echo "已授权!"; // 授权成功
}else{
die("未授权!"); // 授权失败
}
?>
伺服器端程式碼:
PHP PHP
<?php
$domain = $_GET['domain']; // 获取域名
$Array = array('127.0.0.1','localhost','www.ikxin.com'); // 授权域名列表
echo in_array($domain, $Array) ? 'yes' : ''; // 校验结果
?>
說明:
- 網域授權程式碼可以封裝進函式,或者進行加密處理。
- 常見的 PHP 加密 方式,如 Zend、mzphp2、ionCube 等,都有一定的破解方法。如果授權的網域較多,可以在專案中增加網域欄位,將網域寫入資料庫進行讀取和校驗。
第二種:獨立校驗網域授權
PHP PHP
<?php
function allow_domain(){
$is_allow = false;
// 获取不带端口号的域名前缀
$servername = trim($_SERVER['SERVER_NAME']);
// 授权域名列表
$Array = array("localhost", "127.0.0.1");
// 遍历数组
foreach($Array as $value){
$value = trim($value);
$domain = explode($value, $servername);
if(count($domain) > 1){
$is_allow = true;
break;
}
}
if(!$is_allow){
die("域名未授权!"); // 授权失败
}else{
echo "域名已授权!"; // 授权成功
}
}
allow_domain();
?>
使用方法
以上方法中,推薦使用 第一種,因為第一種方法便於管理。你可以將用戶端程式碼寫到 WordPress 主題的全域 PHP 函式檔案 中,然後在自己的伺服器端配置好網域授權。用戶端的 PHP 檔案 也可以加密處理,當然,雖然 PHP 程式碼 加密有一定的難度,但世界上沒有絕對無法解密的程式碼。
評論
(3)OωO 谢谢博主,正在研究这方面。感觉最关键的还是加密,太容易破解不行,太影响性能也不行,授权长期有效就得每次都检查server,有点不好弄。
这种授权方式本来就是小白级别的,而且php也没有不可逆的加密,要想实现更可靠的授权机制,还得想其他方案
请问博主,如果是js代码怎么弄授权呢