因为最近在帮朋友写一个WP的插件授权功能,验证逻辑很简单,就是用 file_get_contents()
比对文件就好了。
稍微改了一下就可以验证主题模板的文件是否完整了。
//我先随便找个地方宣布个全局参数 global $type_key; //如果从远端验证 $type_key = get_data(); //如果从本地验证 //$type_key = 'www.yeraph.com'; //curl获取验证信息,这里假设接口返回的是一段text格式文本'www.yeraph.com' function get_data(){ //验证接口的地址 $url = 'https://api.yeraph.com/info'; //创建一个curl会话 $info = curl_init(); //配置curl参数 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 500); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); //加载需要访问的url curl_setopt($info,CURLOPT_URL,$url); //返回获取的内容 $output = curl_exec($info); return $output; //关闭curl会话防止出错 curl_close($info); } //再随便找个地方加载验证函数 function type_data(){ global $type_key; //需要验证的文件,这里是加载了主题的index文件 $type_file = ''.get_template_directory().'/index.php'; //加载这个文件 $file_data = file_get_contents($type_file); //比对文件内容,如果文件中不包含文本 www.yeraph.com ,就 if (strstr($file_data, $type_key) == false){ //die就完事了 die('寄了'); }else{ return(''); } } //再再随便找个地方运行函数 type_data();
如果验证失败,进程就直接“寄了”。
get_template_directory()
是WP自带的一个函数,会直接返回主题的绝对路径(但是这个路径是不输出 / 的)。
curl_setopt()
是curl的配置函数,支持的功能很多,比如ssl验证的。
如果真要用的话用base64_encode()
之类的把必要的参数保护起来,省得被直接搜索出来。
因为这里没打算写验证接口的逻辑,直接假设我这个接口返回的是一段text格式文本,真要用的时候验证逻辑自己考虑嗷。
感觉这个逻辑用处很多,可以验证文件hash、验证授权、验证版权文本、之类的,函数放置的位置越诡异,防盗效果越好。
每天一点制造屎山小技巧。
感觉我好像莫名其妙的琢磨明白了大部分主题的授权逻辑呢。
另外别问我为什么2202年还在写PHP,问就是我菜比。