开源php代码如何加域名授权?
php在web开发领域是最热门的语言,也是开发项目的不二选择,许多PHP开发者说它是当今世界上最好的开发语言,php开发项目效率高,是因为开源项目太多了,不管是国内,还是国外,开源的框架,开源的CMS系统,开源的商城系统太多了,所以php的生态圈很好。如果你想对项目进行开源,那就需要对源码进行一个简单的版权保护,代码可以开源,但是项目的版权,所有权是你的。
域名授权代码可封装进函数,或者进行加密,对于常用的PHP加密形式,都有其破解的方法,比如ZendGuard、ionCube等,如果授权的域名较多,可以在项目中增加域名字段,将域名写入数据库再进行读取和校验,此方法你可以封装成类或插件,下面给大家分享两种代码,大家可以学习一下。
一.独立校验域名授权的方法:
-
function allow_domain(){
$is_allow=false;
//获取不带端口号的域名前缀
$servername=trim($_SERVER['SERVER_NAME']);
//授权域名列表
$Array=array("www.yunmasucai.com","www.zzphp.cn");
//遍历数组
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();
- 二.在线校验域名授权的方法:
/*
* 服务端代码
*/
//获取域名
$domain = $_GET['domain'];
//授权域名列表
$Array = array('www.yunmasucai.com','www.zzphp.cn');
//校验结果
echo in_array($domain, $Array) ? 'yes' : '';
/*
* 客户端代码
*/
//获取不带端口号的域名前缀
$servername = trim($_SERVER['SERVER_NAME']);
//获取服务端授权文件校验
$verifyurl = file_get_contents('http://www.yunmasucai.com/data/upload/copyright.php?domain='.$servername);
if(!empty($verifyurl)){
echo "已授权!"; //授权成功
}else{
die("未授权!"); //授权失败
}
这个只要对获取的域名 进行赋值就直接过了判断。所以对于程序员来说这个太容易猜出来了,即使是加密过的PHP。那么怎么处理?有的人有更复杂的授权方式,就是带上各种服务器的信息 还要加个KEY来作为授权码。
function authorization($seed = ”) {
$encode = $_SERVER[‘SERVER_SOFTWARE’] . $_SERVER[‘SERVER_NAME’] . $_SERVER[‘DOCUMENT_ROOT’] .
$_SERVER[‘SERVER_ADMIN’] . $_SERVER[‘SERVER_ADDR’] . PHP_VERSION . PHP_OS . __FILE__;
return md5 ($encode);
}
$authorization_key = ‘www.yunmasucai.com’;
echo authorization($authorization_key);//这里是生成字符串验证
$authorization_check = array(‘dd670852938815f3892d3c511cc8fceb’,’ddc976cc02bce5c3c22c4d7d201c0cae’ );//授权字串,把生成的字符验证复制到这里来
if (!in_array(authorization ($authorization_key), $authorization_check)) {
die(‘对不起,你的程序未经过小一授权!!’);
}
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!