Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP CMS:;“打电话回家”;安装时的排序功能_Php_Content Management System_Monitoring - Fatal编程技术网

PHP CMS:;“打电话回家”;安装时的排序功能

PHP CMS:;“打电话回家”;安装时的排序功能,php,content-management-system,monitoring,Php,Content Management System,Monitoring,我正在开发一个web应用程序,该应用程序将与其他生产站点许可证一起免费下载试用。我知道这类事情是不受欢迎的,但我希望在安装文件中包含一两行内容,将当前安装URL保存回我的数据库,以便我可以与付费用户交叉检查。我并没有试图验证许可证(然而),这些URL将不会以任何方式使用,除非用于监视盗版。如果用户删除此代码或没有internet连接(在本地安装),则不会出现错误。此外,出于法律原因,我会让用户了解EULA中的此功能 大多数呼叫总部函数都使用文件获取内容,但它们正在验证,我只想存储一个URL。使用

我正在开发一个web应用程序,该应用程序将与其他生产站点许可证一起免费下载试用。我知道这类事情是不受欢迎的,但我希望在安装文件中包含一两行内容,将当前安装URL保存回我的数据库,以便我可以与付费用户交叉检查。我并没有试图验证许可证(然而),这些URL将不会以任何方式使用,除非用于监视盗版。如果用户删除此代码或没有internet连接(在本地安装),则不会出现错误。此外,出于法律原因,我会让用户了解EULA中的此功能

大多数呼叫总部函数都使用
文件获取内容
,但它们正在验证,我只想存储一个URL。使用GET变量中转义的URL发送请求是否可行?安全性、速度和功能在各种服务器设置上都是关键

也欢迎任何其他建议。。。我仍在努力找出许可和“保护”该软件的最佳方法


提前感谢您的帮助

我建议查看如何加密他们的源代码并获取解密密钥和授权。他们是相当大的,会有可靠的方法。为了好玩,我试着破解它,但失败了。

这是一个相当简单的系统版本,但它现在应该可以完成这项工作。它通过提供当前服务器的URL作为密钥来工作,但是您可以将其替换为许可证的唯一ID

对于CMS/应用程序:

<?php
define('SITE_INVALID', 'invalid');
define('AUTH_SITE',    'http://www.example.com/verify.php');

function verify_install($key){
    $result = file_get_contents(AUTH_SITE.'?key='.urlencode($key));

    if($result == SITE_INVALID){
        return false;
    }

    // Valid
    return true;
};
?>

然后在页面的某个地方(早期):


在许可证服务器上:

<?php
define('SITE_VALID',    'valid');
define('SITE_INVALID',  'invalid');

function verify_remote_install(){
    if(!isset($_GET['key'])){
        // Nothing sent - assume fine
        return true;
    }

    $key = urldecode($_GET['key']);

    // (Check if key in database, etc)
    $result = key_is_valid($key);   // Replace with your own method

    if(!$result){
        // Invalid
        return false;
    }

    // Valid
    return true;
}
?>

然后验证:

<?php
$result = verify_local_install();

if(!$result){
    echo SITE_INVALID;
} else {
    echo SITE_VALID;
}
?>

您需要使用验证密钥的方法来替换
key\u is\u valid()
函数,无论该方法是检查密钥是否在数据库中

此外,如果您不确定(例如:如果与验证服务器的连接失败,或者如果未发送密钥),您最好假设它是有效的,这样,如果出现用户无法控制的错误,您可以让他们放心。您希望给合法用户提供最佳体验,并尽可能阻止盗版,而不是给付费用户带来不便


如前所述,任何具有PHP基本知识(甚至只是能够阅读)的人都可以很容易地找到它,并在代码没有以某种方式混淆的情况下禁用它。可以在以下位置找到一个开源应用程序来为您实现这一点。如果你仍然想让开发人员修改应用程序,你可以考虑仅仅混淆授权代码,放入一个单独的文件,并给它一个假的,无辜的名字。

谢谢@ OHMUSAMA,但是我还不想走到文件加密的道路上。我希望开发人员可以随意调整(即使是在试用版中)。这主要是一种检查盗版的基本方法(尽管我知道这种方法很容易找到并从代码中删除)。file()还可以读取远程主机,您还可以使用DB connect以“只读”DB用户名连接到远程SQL主机并进行验证。有很多选择。如果您真的对做一些独特的事情感兴趣,请尝试打开一个套接字并使用您自己的协议。更难复制。。。除了$validated=true旁路…哇,我甚至没想过这些选项。。。都很酷。远程数据库选项暂时不起作用,因为我必须添加远程连接的任何人的IP地址(太糟糕了,我喜欢这个)。自定义协议可能有点超出我的理解范围。至于file(),我不需要从我的主机读取任何内容,只需将URL作为字符串发送到它的存储区即可。这太棒了,谢谢!正如描述所说,我并不是在测试许可证,只是试图将安装软件的URL聚合到我的数据库中。因为我很可能会以某种方式实现这一点,所以我投票赞成。。。但我担心的是,我根本不希望安装程序依赖我的服务器进行响应。我还担心人们看到这个脚本,然后使用提交URL向数据库发送一堆错误的URL。有什么想法吗?@cbh-我想我理解你的意思,在这种情况下,只需发送当前URL,只需执行
file\u get\u contents(AUTH\u SITE.”?URL='.urlencode($\u SERVER['SERVER\u NAME'])
即可将URL发送到远程服务器(最后,如果不需要响应来保持页面),然后在远程服务器上存储
urldecode即可($\u GET['url'])
在您的数据库中。如果您最终使用上述授权设置,只需将密钥保留为网站url,或同时发送,您就可以将其保存。使用某种单独的密钥而不仅仅是url进行验证将停止批量检查。我希望这有帮助!非常好。感谢您的帮助!
<?php
$result = verify_local_install();

if(!$result){
    echo SITE_INVALID;
} else {
    echo SITE_VALID;
}
?>