我目前正试图在我的网站(编码经验有限)上整理出一个没有很多参考资料的系统,看起来。
我目前有贝宝 IPN 集成(未经测试),然后我用它来更新数据库,为用户提供他们帐户的“时间”。我在他们的帐户中还有一个“停止/开始”功能,允许他们停止和开始他们的时间,想法是当他们“开始”他们的时间将开始倒计时。相反,当它们“停止”时,它们的倒计时不会倒计时。我想这类似于暂停有效订阅,但我的是在短期内。
mysql_query("UPDATE `table` SET
`user_id`=$user_id,
`timeadded`=$timeadded,
`amountpaid`=$mc_gross,
`token`=$txnId,
`currtime`=TIMESTAMP()");
^ 那是我用来更新 mysql 表的片段。
$new_time = date('H:i', strtotime('+$timeadded'));
这就是我目前正在使用的方法,允许我在没有我上面提到的开始/停止功能的情况下计算结束日期。我不确定如何从这里开始集成该功能,因为显然结束日期需要根据当前日期以外的其他变量动态变化。
我也提到了这个,我认为这可能会引导我走上正确的道路,但我还没有成功。
//time when start clicked
$first = new DateTime
//time when stop clicked
$second = new DateTime
//when start is clicked
exec(mysql_query("UPDATE `newtable` SET `userid`=$userid, `start`= $first"));
//when stop is clicked
exec(mysql_query("UPDATE `newtable` SET `userid`=$userid, `end`= $second"));
//use array to select all entries from newtable where userid=$userid (can fill this in if wanted).
$elapsed = $first->diff( $second );
$timeleft = (strtotime($timeadded) - strtotime($elapsed));
$updateelapsed = mysql_query("UPDATE `newtable` SET `userid`=$userid, `elapsed`=$elapsed")
$allelapsed = mysql_query("SELECT * FROM newtable WHERE userid=$user_id");
$allelapsedarray = mysql_fetch_array($allelapsed);
$timeelapsed = array_sum($allelapsedarray);
//so now i have my total time spent "started", i should be able to compare that to the amount of time they bought. if its more than that, they are rejected, otherwise can continue as normal.
这就是我迄今为止所拥有的启动/停止功能。这是在遇到我上面给出的第二个链接后即时完成的,我觉得它比我在前几段中提到的潜在方法更有成效。
到下面的评论 - 它不会更新我的关于开始/停止时间的数据库,也不会更新经过的时间列。考虑到这些事情,它不会阻止人们访问那些需要“时间”的区域,但我认为在对上述内容进行排序后,这将自行解决。我开发的这种方法似乎也很啰嗦,所以我可能忽略了一种更简单的编码这个看似简单的任务的方法。提前感谢任何提示。