php - 如何管理许可以启用 Web 应用程序的功能?

标签 php mysql web-applications licensing license-key

<分区>

我将销售一种新产品,该产品将由我自己服务器上的 Web 应用程序管理。 Web 应用程序将允许管理一些设备。

我想将可管理设备的数量限制为用户购买的许可证数量。

我的网络应用目前允许管理所有设备,没有数量限制。

我不知道从哪里开始实现许可(许可证 key 生成和检查),也不知道如何根据用户拥有的许可证 key 限制设备。

我们非常欢迎任何帮助。 提前谢谢你。

仅供引用:我正在使用 jquery、php 和 mysql。

最佳答案

我会在数据库中实现几个表,如下所示:

将有以下实体:用户许可证设备

并且这些实体将如上所示相互关联。每个许可证都将包含有关许可设备数量的信息。

当设备连接到您的服务时,您的服务通过其 ID 识别它,该 ID 在连接时由设备发送。然后你可以查看,设备是否已注册,以及与此设备相关的许可证。

将在设备注册时检查设备数量限制。

当用户注册设备时(将信息添加到表:DevicesLicensedDevices),您的代码应根据检查具有此许可证的已注册设备的数量Licenses 表中的 >devicesQty 字段值。

如果 devicesQty 值允许添加更多设备,那么您的代码会将新设备添加到数据库中。

更新:

要控制许可设备的数量,您需要注册这些设备(例如 - 使用这些设备的唯一 ID)。否则您无法控制使用您的服务的设备数量。

一台设备连接、工作、断开连接,然后是另一台,然后是另一台,依此类推。在这种情况下如何控制数量?我认为除非注册这些设备的 ID,否则没有办法。

如果用户将他的设备更换为新设备,则应该有一个程序来更新有关已注册设备的信息。

如果您的客户仅使用网络浏览器来使用您的服务,那么控制许可证/设备的唯一方法是将用户 ID+密码+设备 ID 绑定(bind)到许可证。并在登录到您的网络服务/网络服务器时检查此信息。

如果您在移动设备上使用 native 应用程序连接到您的网络服务,那么还有更复杂的方法。

通过 asymetric encryption approach 实现许可证 key 生成/验证。

为每个用户生成公钥和私钥。然后将私钥存储在您的数据库中,不要将其显示给任何人。

假设您的公钥是:ABC-123-456

使用 Base64 algorithm 将公钥字节转换为字母数字字符。

然后,在出售许可证时生成任意唯一的许可证代码。

假设您的许可证代码是:XYZ-789-012

并向最终用户提供公钥和许可证代码:ABC-123-456XYZ-789-012

用户将公钥和许可证代码设置为自定义移动应用程序设置。并且此应用程序使用此公钥加密所有发送数据。并且在加密之前将许可证代码包含在数据包中。

当您的服务器从设备接收到数据时,它会通过 deviceId 找到合适的用户,然后找到合适的私钥来解密数据包。然后检查此数据包的正确性。

关于php - 如何管理许可以启用 Web 应用程序的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15699618/

相关文章:

php - 如何在我的站点 ssl 上制作表单

mysql - 无法使用柴油箱从 mysql 数据库加载结果

javascript - 如何在移动页面末尾自动显示 "load more"

javascript - 突出显示与 Perl 正则表达式匹配的 HTML 部分 - 在服务器端 Perl 或客户端 javascript 中执行吗?

java - 谷歌地图可以用于非 GPS 相关功能,例如提供游戏 map 吗?

php - 在 PHP 中解析 SEF url 中的数值

php - 在 php 中创建图像,显示有效,保存到文件不

php - 如何计算PHP中两个日期之间的天数?

mysql - 加入来自同一个表的三个查询

php - 如何在 PHP 代码中将两个表中的两个查询合并为一个查询?