php代碼如何加域名授權?開源php項目如何保護版權 商業授權?


php在web開發領域是最熱門的語言,也是開發項目的不二選擇,許多PHP開發者說它是當今世界上最好的開發語言,php開發項目效率高,是因為開源項目太多了,不管是國內,還是國外,開源的框架,開源的CMS系統,開源的商城系統太多了,所以php的生態圈很好。如果你想對項目進行開源,那就需要對源碼進行一個簡單的版權保護,代碼可以開源,但是項目的版權,所有權是你的。

php代碼如何加域名授權?開源php項目如何保護版權 商業授權?

 

域名授權代碼可封裝進函數,或者進行加密,對於常用的PHP加密形式,都有其破解的方法,比如ZendGuard、ionCube等,如果授權的域名較多,可以在項目中增加域名字段,將域名寫入數據庫再進行讀取和校驗,此方法你可以封裝成類或插件,下面給大家分享兩種代碼,大家可以學習一下。

php代碼如何加域名授權?開源php項目如何保護版權 商業授權?

 

一.獨立校驗域名授權的方法:

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來作為授權碼。再經過代碼加密,似乎看起來很牛B了,可是如果源碼一旦破解淪陷,所有的判斷函數不就是 魚肉么?有的人說 我代碼加密了你怎么破解?

php代碼如何加域名授權?開源php項目如何保護版權 商業授權?

 

還真別說,日前看到淘寶上有這樣一個商品叫作:沒有不能解密的代碼,標價好像是10個大洋起。我去,一個起碼萬記的代碼就這樣被10元了,盡管店主文字申明了不能用於商業用途只供學習。於是shopnc采用了核心代碼加密,利用URL的路由格式在搜索引擎來搜索出搭建這個站點的未授權域名,然后就給你發律師函了。這也不失為一種方案,所以理由也要有自己在的風格。那么PHP到底有沒有這樣一款或者一個很哇塞的授權方案呢?目前也沒有什么好的解決方案?給大家提供個代碼思路。

php代碼如何加域名授權?開源php項目如何保護版權 商業授權?

 

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('對不起,你的程序未經過小一授權!!');
}

  

其實還有很多的思路,大家可以分享討論一下,我只是總結了一部分,比如C 擴展加密,zendloader 加密等,不過那種方法,只要是能解決用戶的需求就是好代碼。

歡迎關注公眾號:雲碼素材,交流分享! 雲碼素材原創作品,更多精品資源下載,技術分享請關注,私信雲碼素材!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM