1. 程式人生 > 實用技巧 >php域名授權後 網站才能訪問 網站加密 防止拷貝

php域名授權後 網站才能訪問 網站加密 防止拷貝

網站A是開發好的一個成品站!可以免費/收費使用,或者條件啥!但是有點技術的可以拷貝原始碼搭建!B站就是授權後臺網站

防止普通使用者拷貝就是授權!

寫了一個簡單的訪問控制!

速度略有下降,但這點效能忽略不計!

流程A站使用者開啟會去訪問B站的介面 查詢資料庫是否授權 ,沒授權就停止執行,授權就繼續執行! B站的介面判斷是否同一個ip(有的使用者可能是同一個ip繫結多個域名)

A站程式碼如下

 1         // //訪問網站
 2         $method = 'DES-ECB';//加密方法
 3         $passwd = 'qq496631085';//加密金鑰
 4         $options
= 0;//資料格式選項(可選) 5 $iv = '';//加密初始化向量(可選) 6 $url = base64_decode('aHR0cDovL2FkbWluLmhlNDk2Ni5jbi9pbmRleC5waHAvYXBpL2hlL2dldGRhdGEvdXJsLw==').base64_encode(Request::domain()); 7 // halt($url); 8 $result = file_get_contents($url); 9 $jiemi2 = (openssl_decrypt($result
, $method, $passwd, 0)); 10 $jiemi1 = substr($jiemi2,3,strlen($jiemi2)-7-3); 11 $data = json_decode(base64_decode($jiemi1)); 12 $date = $data->date; 13 if(strtotime($date)<time()+50){ 14 echo $data->msg; 15 exit(); 16 }

B站大概程式碼如下(初稿,沒經過細節優化,時間來不及)B站是寫的一個介面

  1     public function getdata()
  2     {   
  3 
  4 // json
  5 // 
  6 // endtime
  7 // lasttime
  8 // createtime
  9 // updatetime
 10 // deletetime
 11 // weigh
 12 // switch
 13 // state
 14 
 15         //獲取域名 或者ip
 16         $data['ip'] = $this->request->ip();
 17         $data['url'] = base64_decode($this->request->param('url'));
 18         // halt($data);
 19         //先判斷是否有這個ip和域名,
 20 
 21 
 22         $res = $this->addnew($data);
 23 
 24         $this->tongip($data);
 25         $res = Db::name('shouquan')
 26         ->where($data)
 27         ->find();
 28          
 29         // if(!$res){//沒有就新增
 30             
 31         //     exit($this->no($data));
 32             
 33         // }else{//有就判斷是否授權 !然後 返回資料
 34         
 35             if($res['state']==1){
 36                 //授權過的返回正常加密
 37                 // return json(['code'=>1,'data'=>$this->ok($data)]);
 38                 exit($this->ok($res));
 39             }else{
 40  
 41                 exit($this->no($data));
 42             }
 43         // }
 44         //views
 45 
 46         $data['title'] = '';//獲取配置
 47         
 48         halt($data);
 49         $this->success('請求成功');
 50     }
 51 
 52 
 53     public function tongip($data)
 54     {
 55                 $tongip = Db::name('shouquan')
 56                 ->where('ip',$data['ip'])
 57                 ->where('state',1)
 58                 ->find();
 59                 if($tongip){
 60                     $this->addnew($data);
 61                     $update = Db::name('shouquan')->where($data)->update(['state'=>1,'updatetime'=>time()]);
 62                     exit($this->ok($data));
 63                 }else{
 64                     exit($this->no($data));
 65                 }
 66     }
 67 
 68     public function addnew($data)
 69     {
 70             
 71         $res = Db::name('shouquan')
 72         ->where($data)
 73         ->find();
 74         if(!$res){
 75             $data['endtime'] = 0;
 76             $data['createtime'] = time();
 77             $data['state'] = 0;
 78             $data['switch'] = 0;
 79             $insert = Db::name('shouquan')->insert($data);
 80             return true;
 81         }else{
 82                Db::name('shouquan')->where($data)->setInc('views');
 83             Db::name('shouquan')->where($data)->update(['lasttime'=>time()]);
 84             return false;//有資料
 85         }
 86     }
 87 
 88 
 89     public function ok($data = null)
 90     {   
 91         $json['date'] = date('Y-m-d H:i:s',strtotime(date('Y-m-d')." +1 day"));
 92         // $json['url'] =  $data['url'];
 93         // $json['ulr'] = 'http://admin.he4966.cn/index.php/api/he/ok';
 94         $json['ip'] =$data['ip'];
 95         $json['url'] =$data['url'];
 96 
 97         $strs = "QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
 98         $qian = substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),3);
 99         $hou = substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),7);
100     //    var_dump(json_encode($json));
101         $data1 = $qian.base64_encode(json_encode($json)).$hou;
102 
103         // var_dump($data);
104         // echo '<br>加密前'.$data.'<br>';
105         // $data = '1234567887654321';//加密明文
106         $method = 'DES-ECB';//加密方法
107         $passwd = 'qq496631085';//加密金鑰
108         $options = 0;//資料格式選項(可選)
109         $iv = '';//加密初始化向量(可選)
110 
111 
112         //加密:
113         $result = openssl_encrypt($data1, $method, $passwd, $options);
114         // var_dump($result);
115         //結果:string(32) "kQYOdswcm9I5elv2wdJucplqAgqDNqXg"
116 
117 
118 
119         return $result;
120         //解密
121         // $result = 'kQYOdswcm9I5elv2wdJucplqAgqDNqXg';
122         $jiemi2 = (openssl_decrypt($result, $method, $passwd, 0));
123         // var_dump($jiemi2);
124         // echo '<br>'.'解密後'.$jiemi2.'<br>';
125         $jiemi1 = substr($jiemi2,3,strlen($jiemi2)-10);
126         // var_dump($jiemi1);
127         halt(json_decode(base64_decode($jiemi1)));
128         //結果:string(16) "1234567887654321"
129 
130 
131         halt(base64_encode($data));
132         // return $json;
133     }
134 
135     public function no($data = null)
136     {   
137         $json['date'] = date('Y-m-d H:i:s',time()+10);
138         // $json['url'] =  $data['url'];
139         // $json['ulr'] = 'http://admin.he4966.cn/index.php/api/he/ok';
140         $json['msg'] = date("當前時間Y-m-d H:i:s")."<br>網站未授權請聯絡QQ496631085";
141         $json['ip'] =$data['ip'];
142         $json['url'] =$data['url'];
143 
144         $strs = "QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
145         $qian = substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),3);
146         $hou = substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),7);
147     //    var_dump(json_encode($json));
148         $data1 = $qian.base64_encode(json_encode($json)).$hou;
149 
150         // var_dump($data);
151         // echo '<br>加密前'.$data.'<br>';
152         // $data = '1234567887654321';//加密明文
153         $method = 'DES-ECB';//加密方法
154         $passwd = 'qq496631085';//加密金鑰
155         $options = 0;//資料格式選項(可選)
156         $iv = '';//加密初始化向量(可選)
157 
158 
159         //加密:
160         $result = openssl_encrypt($data1, $method, $passwd, $options);
161         // var_dump($result);
162         //結果:string(32) "kQYOdswcm9I5elv2wdJucplqAgqDNqXg"
163 
164 
165 
166         return $result;
167         //解密
168         // $result = 'kQYOdswcm9I5elv2wdJucplqAgqDNqXg';
169         $jiemi2 = (openssl_decrypt($result, $method, $passwd, 0));
170         // var_dump($jiemi2);
171         // echo '<br>'.'解密後'.$jiemi2.'<br>';
172         $jiemi1 = substr($jiemi2,3,strlen($jiemi2)-7-3);
173         // var_dump($jiemi1);
174         halt(json_decode(base64_decode($jiemi1)));
175         //結果:string(16) "1234567887654321"
176 
177 
178         halt(base64_encode($data));
179         // return $json;
180     }

QQ496631085