开发com组件可以用c++,vc++,net,我比较熟悉net,演示用dnet
(1).创建项目:启动vs2017,新建项目,选择Visual C# ->Windows桌面->类库通用windows

(2). 修改Com项目:点击 项目->项目属性,再点击应用程序->程序集信息,勾选使程序集COM可见,并保存

(3).创建强命名签名文件:使用vs2017的开发人员命令提示符,执行以下命令,将签名文件生成到D盘根目录(建议以管理员身份运行):
sn -k D:\ThinkShop.snk


(4).使用签名文件:点击 项目->项目属性,再点签名->勾选为程序签名->选择在D盘创建的签名文件

(5).编写代码:编写玩组件方法,编译生成dll文件
namespace ThinkShop
{
public class App
{
//校验客户软件是否正版
private bool isAuthorize()
{
string ip = "127.0.0.1";
if (ip != "127.0.0.1")
{
return false;
}
else
{
return true;
}
}
//获取网站标题设置
public string GetWebsiteTitle()
{
bool isAuthorize = this.isAuthorize();
if (isAuthorize)
{
return "This is website title!";
}
else
{
return "Please support authentic edition!";
}
}
}
}(6.)dll类库转com组件:将dll转为com组件,使用vs2017的开发人员命令提示符以管理员方式运行,执行以下命令(要在dll目录下,)
regasm ThinkShop.dll

(7).将程序集添加到全局程序集缓存中:可以直接在第6步骤直接执行,加到这里方便阅读。执行以下命令
gacutil /I ThinkShop.dll

(8).php调用com组件:(记得开启php.ini中的extension=php_com_dotnet.dll)
<?php
$thinkShop=new Com("ThinkShop.App");
$title = $thinkShop->GetWebsiteTitle();
var_dump($title);
?>php源码保护:
可以将核心操作用com组件实现,然后加密dll,注册到程序集,再删除dll文件。
vs2019种需要标准的接口实现来写com,参考我的gitee项目代码,很快入手,上面的是基于vs2017的代码
//参数1 文件名 参数2 缩放比例 function _thumb($_filename,$_percent){ ob_clean();...
【一】.介绍session由于HTTP是无状态的请求,创建一个会话需要保持必须需要身份标识。当用户第一次访问,PHP会为用户创建一个唯一的sessionid,并将sessionid通过cookie发送给浏览器,并在服务器的临时文件创建一个以sessionid为名的文件用来保存这个sessionid保...
在项目下的composer配置文件修改(PaySdk是我这里一个支付sdk的目录,包含各种各样的支付sdk,这样写的意思让composer自动把PaySdk下的所有文件自动加载):"autoload": { &...
断点下载的原理:http请求头添加Range参数告诉文件服务器端需要的字节范围例如1个文本文件的字节为1000,第一次请求Range: bytes=0-500第二次请求Range: bytes=501-1000通过每次的请求将返回的流追加写入到文件。注意的项目:断点下载服务器端的每次只返回字节传输的...
PHP简单定时器可以通过pcntl_signal创建闹钟信号来实现。但是缺点很明显,性能一般,要自己实现守护进程,不支持毫秒级定时器,单进程不支持多个闹钟信号,不能跨平台运行event扩展支持的事件多,性能高。<?php //创建event配置.[空配置] $eventConfig ...
在调用微信code换openid的接口curl报错curl Received HTTP code 403 from proxy after CONNECT,错误码56。可以看到是curl的代理有问题。然后我自己电脑设置代理去访问curl请求的地址,的确也返回了403,说明代理不允许访问这个地址,联系...