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

原文地址:https://www.cnblogs.com/xiaohe520/p/13498960.html