PHP实现限制域名访问(本地验证),更好地保护你的代码

码农公社  210.net.cn   210是何含义?10月24日是程序员节,1024 = 210、210既 210 之意。

PHP实现限制域名访问的实现代码(本地验证)


PHP编写的源码,如何不被其它人利用?

首先想到的是加密,但现在除了Zend 5加密还比较难破解外,其它的加密方式都不堪一击。

即使不破解,不怀好意的人同样可以使用你的源码搭建一个和你一模一样的网站。

你的劳动成果白白被别人占有!!!


下面介绍一种方法来保护你的源代码不被直接拷贝运行,该方法就是限制域名

比如你的网站通过 www.210.cx 来访问,某天一个土贼把你的PHP程序窃走了,

但万幸的是你做了域名限制,被窃走的php程序根本就无法运行,这样岂不美哉!


如何通过程序限制域名呢?

源码如下:

1、限制域名访问方法一

 <?php 
if(!in_array($_SERVER['HTTP_HOST'],array('test.com','www.210.cx'))){
    exit('建站请联系:http://www.210.cx');
} 
?>

2、限制域名访问方法二

function allow_domain(){
    $is_allow=false;
    $servername=trim($_SERVER['SERVER_NAME']);
    $Array=array("localhost","127.0.0.1","210.cx","210.net.cn");
    foreach($Array as $value){
        $value=trim($value);
        $domain=explode($value,$servername);
        if(count($domain)>1){
            $is_allow=true;
            break;
        }
    }
    if(!$is_allow){
        die("<center>仅限本地使用!需要域名授权请联系210.net.cn");
    }
}
allow_domain();

然后用zend加密,其他加密容易被破解。


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

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

客户端代码:

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

服务端代码:

<?php
//获取域名
$domain = $_GET['domain'];
//授权域名列表
$Array = array('127.0.0.1','localhost');
//校验结果
echo in_array($domain, $Array) ? 'yes' : '';
?>

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

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

<?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();
?>



 


评论