php签到功能实现,php怎么做签到积分?

用户投稿 39 0

关于“php签到算法”的问题,小编就整理了【4】个相关介绍“php签到算法”的解答:

php怎么做签到积分?

以淘宝网领取淘金币的签到系统为例:

目标:

第一天签到增加5个积分;第二天连续签到则增加8个积分;第三天连续签到,增加11个积分,第四天连续签到,增加15个积分;第五天连续签到,增加19个积分;第六天连续签到,增加24个积分;第七天连续签到,增加29个积分;第八天以后的连续签到,都增加29个积分。连续签到断开,则积分从第一天开始计算。

思路:

这个比较简单,思路是这样的:

在用户表里添加一个连续登录的字段,如果每天连续登录自增1,如果超过24小时的话就直接归0.

再增加一个最后登录的时间,格式是时间戳的。

首先判断最后登录的时间和现在的时间的时间差值是多少,函数如下:

function checkTime() {

if (time() - 最后登录时间 > 24*60*60 ) { // 判断时间是否大于24小时

// 让字段归0

}

}

?>

这个样子就可以了。

至于加分就简单了。

如果字段值为:

1就加5,

2就加8,

3就加11,

4就加15,

5就加19,

6就加24,

大于7就加29

Mysql查询连续签到天数?

数据表里存储两个字段,一个int存时间戳,一个int存签到计数。每次签到发生时,php页面做判断,计算本次签到时间戳与系统记录的最后一次签到时间戳之差,超过3600*24,则将计数修改为零,否则+1。sql语句就不写了吧,就一个update的事情。。。

php异或算法?

/**

* PHP字符串“异或”算法

* param array key

* @param Request $request

* @return mixed|string|void

*/

public function setSecretKey(Request $request){

$keyArr = $request->input('key');

if(!is_array($keyArr) || empty($keyArr))

return;

foreach ($keyArr as $v){

if(empty($v) || (strlen($v) != 32)){

return;

}

}

if(count($keyArr) == 1)

return $keyArr[0];

$arrLength = count($keyArr);

$initKey = "00000000000000000000000000000000";

$initKeyArr = str_split($initKey);

for($i = 0;$i < $arrLength;$i++){

$newKey = '';

for($j = 0;$j < strlen($keyArr[$i]);$j++){

php中,计算指定日期还有多少天?

思路是先求两个时间的秒数差,然后将结果转换即可:

echo calcTime('2018-08-20', '2018-08-30');function calcTime($fromTime, $toTime){ //转时间戳 $fromTime = strtotime($fromTime); $toTime = strtotime($toTime); //计算时间差 $newTime = $toTime - $fromTime; return round($newTime / 86400) . '天' . round($newTime % 86400 / 3600) . '小时' . round($newTime % 86400 % 3600 / 60) . '分钟'; }

到此,以上就是小编对于“php签到算法”的问题就介绍到这了,希望介绍关于“php签到算法”的【4】点解答对大家有用。

抱歉,评论功能暂时关闭!