【问题标题】:Implementing trial period for local PHP application为本地 PHP 应用程序实施试用期
【发布时间】:2012-04-18 20:40:57
【问题描述】:

我最近完成了我的 PHP 应用程序,我想知道是否有可能有某种试用期。这样当达到该时间段时,屏幕上就会出现错误。

感谢您的时间和回答。我非常感谢他们。

【问题讨论】:

  • 是的,可以这样做。
  • 要求用户注册,记录日期然后你就可以使用了。如果用户愿意,他们将继续创建新帐户来解决这个问题。
  • 如果我记录他们注册的日期并将试用期添加到它上面说 date() + 30.. 那么会发生什么?
  • @marabutt:OP 谈论分布式应用程序。所以源和数据库由他们的客户托管
  • @marabutt ....他们不会继续创建新用户名吗?

标签: php localhost trial


【解决方案1】:

按照以下步骤在 php 项目中获得完全安全的试用期...

1。在您的数据库中为试用期创建一个表

ex. trial(id,reg_date,days_of_trial).

2。在您的索引页面或登录页面中,添加如下代码逻辑

i.get 'reg_date','days_of_trial' from 'trial' table.<br/>
   ii.get today's date.<br/>
   iii.calculate difference using as $dDiff= date_diff($reg_date,$today); <br/>
   iv.now compare difference with 'days_of_trial'.<br/><br/>
      ex. <br/>
          if($dDiff->days>=$row['days_of_trial'])<br/>
            {    <br/>
                 v.update trial table set days_of_trial=0.<br/><br/>
                 //redirect to expired page..<br/><br/>
              ex.
              header("Location:http://localhost/project_dir/expired/index.php");}.

3。在 expired/index.php 文件中删除你的项目主目录为..&lt;br/&gt;&lt;br/&gt;

    ex.
<br/>
          if(file_exists("../folder1"))<br/>
          rmdir("../folder1");  
   redirect to expired page wherein you can display "Trial expired  message"<br/>
    ex.
<br/>
           header("Location: http://localhost/proj_dir/expired/expired.html");<br/><br/>

4。现在替换您原来的主页代码以重定向到过期页面..

ex.
    $file = fopen("../index.php","w");<br/>
fwrite($file,"<?php header('Location: http://localhost/proj_dir/expired/');?>");<br/>
fclose($file);<br/>
  • 别忘了备份项目目录和数据库..
  • 您的 php 项目在试用期完全安全.....

【讨论】:

    【解决方案2】:

    是的,你可以:前段时间出现需要时,我也这样做了。它很简单,你可以改进它。 遵循这个算法;

    1. 获取今天的日期
    2. 设置试用期
    3. 将试用期添加到今天(作为开始日期)以获取到期日期
    4. 检查上面的代码之前是否执行过
      如果没有,则将 startdate 和 `expierydate` 发送到 mysql 中的表中
      否则获取开始日期并与今天进行比较
      如果匹配 displ

    这是代码。

    function timebomb(){
      $today = date("d-M-Y",time());
      $trialPeriod = 1;
      $startDate = date("d-M-Y", time());
      $getExpiryDate = strtotime('+'.$trialPeriod."days", strtotime($startDate));
      $expiryDate = date("d-M-Y", $getExpiryDate);
      $checkStatus = mysql_num_rows(mysql_query("SELECT * FROM timebomb"));
        if($checkStatus == 0){
        mysql_query("INSERT INTO timebomb(StartDate,ExpiryDate) values   
             ('$startDate','$expiryDate')") or die(mysql_error());
       }else{
       $getPeriod = mysql_query("SELECT * FROM timebomb");
        WHILE($period = mysql_fetch_object($getPeriod)){
        $endOfTrial = $period->ExpiryDate;
        }
        IF($endOfTrial == $today){`enter code here`
        echo 
    
        <center><font size='5' color='red'>
     PLEASE YOUR TRIAL PERIOD IS OVER. 
     IF YOU ENJOYED USING THIS PRODUCT, <br/>
     CONTACT ALBERT (0205173224) FOR THE FULL VERSION. 
      THANK YOU."
    
    ;
        exit();
                }
    
            }
    
        }
    timebomb();
    

    【讨论】:

      【解决方案3】:

      一种解决方案可以是使用应用程序的某种已编译(或字节编译)形式而不是源文件。结帐此链接。 http://php.net/manual/en/book.bcompiler.php, http://www.phpcompiler.org

      【讨论】:

        【解决方案4】:

        您可以使用 Zend Encoder 或 Ioncube 加密您的源,或对其进行混淆处理。

        但事实是,上面的所有内容都可以修补。因此,如果目标用户有足够的经验 - 他们可以删除您的试用期检查。

        【讨论】:

        • 我会尝试看看您的解决方案如何运作。我很确定他们不具备取消支票的专业知识。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-17
        • 2013-05-31
        • 1970-01-01
        • 2021-07-20
        • 2015-08-13
        • 2021-06-04
        • 1970-01-01
        相关资源
        最近更新 更多