PHP实现域名授权的两种方法

web前端 17144 10年前 (2016-09-18)

01. 在线校验域名授权的方法

客户端代码:

<?php
//获取不带端口号的域名前缀
$servername = trim($_SERVER['SERVER_NAME']);
//获取服务端授权文件校验
$verifyurl = file_get_contents('https://www.toyean.com/zb_users/upload/copyright.php?domain='.$servername);
if(!empty($verifyurl)){
	echo "已授权!";    //授权成功
}else{
	die("未授权!");    //授权失败
}
?>

服务端代码:

<?php
header('Content-Type: text/plain; charset=utf-8');
$domain = $_GET['domain'] ?? '';
$domain = trim($domain);
$whiteList = [
    '127.0.0.1',
    'localhost'
];
echo in_array($domain, $whiteList, true) ? 'yes' : '';
?>

域名授权代码可封装进函数,或者进行加密,对于常用的PHP加密形式,都有其破解的方法,比如ZendGuard、ionCube等,如果授权的域名较多,可以在项目中增加域名字段,将域名写入数据库再进行读取和校验,此方法我们已发布成独立的插件,详见:ZBlogPHP域名授权插件-AllowURL, 通过插件可以将域名等信息添加到数据库中进行校验。


02. 独立校验域名授权的方法

<?php
function allow_domain(){
	$is_allow=false;
	//获取不带端口号的域名前缀,统一转小写
	$servername = strtolower(trim($_SERVER['SERVER_NAME']));
	//授权域名列表
	$whiteList = ["localhost","127.0.0.1"];
	//遍历数组
	foreach ($whiteList as $domain) {
            if (strtolower(trim($domain)) === $servername) {
                $is_allow = true;
                break;
            }
        }
	if(!$is_allow){
		die("域名未授权!");   //授权失败
	}else{
		echo "域名已授权!";   //授权成功
	}
}
allow_domain();
?>

域名授权的目的在于保护知识产权,鼓励开发者能够发布更多优秀的作品,推动整个网络社会的文化发展与科技进步,有着十分重要的意义。

分享给朋友: