最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

php签到功能的实现

来源:懂视网 责编:小采 时间:2020-11-02 18:24:14
文档

php签到功能的实现

php签到功能的实现:php签到功能的实现方法:首先在数据库里建两张表,一个是用户的积分表,一个是签到状态表;然后通过时间戳的判断,及时更新状态表;最后根据上次签到时间和这次签到时间进行比较判断有没有漏签和今日是否已签到即可。推荐:《PHP视频教程》首先我在数据库里建
推荐度:
导读php签到功能的实现:php签到功能的实现方法:首先在数据库里建两张表,一个是用户的积分表,一个是签到状态表;然后通过时间戳的判断,及时更新状态表;最后根据上次签到时间和这次签到时间进行比较判断有没有漏签和今日是否已签到即可。推荐:《PHP视频教程》首先我在数据库里建

php签到功能的实现方法:首先在数据库里建两张表,一个是用户的积分表,一个是签到状态表;然后通过时间戳的判断,及时更新状态表;最后根据上次签到时间和这次签到时间进行比较判断有没有漏签和今日是否已签到即可。

推荐:《PHP视频教程》

首先我在数据库里建了两张表,一个是用户的积分表,一个是签到状态表,分来用来记录用户的积分数和先到状态

在用户签到状态表中我们有一个字段,last_sign_time,即上一次签到时间,每次可以签到的时候把这个时间与当前时间进行比较 如果相差为0天,则说明今天已签到(这个签到是24小时内只能签到一次,即两次签到时间要相差24小时以上).如果等于一天则今日可以签到,如果2天及其以上则说明漏签了.

通过时间戳的判断,及时更新状态表,并且当可以签到的时候则对用户积分表进行操作,即更新用户积分.

<?php
$user_id=@$_REQUEST['user_id'];
//功能:计算两个时间戳之间相差的日时分秒
//$begin_time 开始时间戳
//$end_time 结束时间戳
function timediff($begin_time,$end_time)
{
 if($begin_time < $end_time){
 $starttime = $begin_time;
 $endtime = $end_time;
 }else{
 $starttime = $end_time;
 $endtime = $begin_time;
 }

 //计算天数
 $timediff = $endtime-$starttime;
 $days = intval($timediff/86400);
 //计算小时数
 $remain = $timediff%86400;
 $hours = intval($remain/3600);
 //计算分钟数
 $remain = $remain%3600;
 $mins = intval($remain/60);
 //计算秒数
 $secs = $remain%60;
 $res = array("day" => $days,"hour" => $hours,"min" => $mins,"sec" => $secs);
 return $res;
}


function upuserscore($current_total_day){
$user_id=@$_REQUEST['user_id'];
//读取数据库配置信息的ini文件
 $ary=parse_ini_file('db.ini');
 $db_login_name=base64_decode($ary['db_login_name']);
 $db_login_password=base64_decode($ary['db_login_password']);
 $db_host=base64_decode($ary['db_host']);
 $db_name=base64_decode($ary['db_name']);
//链接数据库
 $scorelink=mysqli_connect($db_host,$db_login_name,$db_login_password);

mysqli_select_db($scorelink,$db_name); //选择数据库

//检查积分表里是否有该用户 有的话则更新数据 没有的话则插入数据
$scoreq = "SELECT * FROM user_score WHERE user_id=$user_id"; //SQL插入语句
 mysqli_query($scorelink,"SET NAMES utf8");

 $rs = mysqli_query($scorelink,$scoreq); //获取数据集
 if(!$rs){
 exit(json_encode(array('status'=>"success",'code'=>"1",'error'=>mysqli_error($scorelink))));
 }
 
 if(mysqli_num_rows($rs)){//该用户有数据 则更新其积分信息
 $total_score="";
 while($row = mysqli_fetch_row($rs)) {
 $total_score=$row[4];
 }
 $scoreusdateq = "UPDATE user_score SET user_total_score ='98' WHERE user_id=$user_id;"; //更新
 mysqli_query($scorelink,"SET NAMES utf8");
 $ustaters = mysqli_query($scorelink,$scoreusdateq); //获取数据集
 if($ustaters ==1){
 exit(json_encode(array('status'=>"success",'code'=>"100")));
 mysqli_close($scorelink);//关闭连接 
 exit();
 }else{
 exit(json_encode(array('status'=>"success",'code'=>"1")));
 mysqli_close($scorelink);//关闭连接
 exit();
 }
 }else{//没有该用户数据 则插入其积分信息
 $scoreinsertq = "insert into user_score (user_id,user_total_score)values($user_id,10)"; //SQL插入语句
 mysqli_query($scorelink,"SET NAMES utf8");

 $rs = mysqli_query($scorelink,$scoreinsertq); //获取数据集

 if(!$rs){
 exit(json_encode(array('status'=>"success",'code'=>"1",'error'=>mysqli_error($scorelink))));
 }
 if(strpos($q,"SELECT") === false){
 exit(json_encode(array('status'=>"success",'code'=>"100")));
 }

 mysqli_close($scorelink);//关闭连接

 }

}




//读取数据库配置信息的ini文件
 $ary=parse_ini_file('db.ini');
 $db_login_name=base64_decode($ary['db_login_name']);
 $db_login_password=base64_decode($ary['db_login_password']);
 $db_host=base64_decode($ary['db_host']);
 $db_name=base64_decode($ary['db_name']);

//链接数据库
 $link=mysqli_connect($db_host,$db_login_name,$db_login_password);

mysqli_select_db($link,$db_name); //选择数据库

//检查签到表里是否有该用户 有的话则更新数据 没有的话则插入数据
$q = "SELECT * FROM user_signin WHERE user_id=$user_id"; //SQL插入语句
 mysqli_query($link,"SET NAMES utf8");

 $rs = mysqli_query($link,$q); //获取数据集
 if(!$rs){
 exit(json_encode(array('status'=>"success",'code'=>"1",'error'=>mysqli_error($link))));
 }
 
 if(mysqli_num_rows($rs)){//该用户有数据 则更新其签到信息
 $last_time="";
 $total_day="";
 while($row = mysqli_fetch_row($rs)) {
 $last_time=$row[4]."<br/>";
 $total_day=$row[5];
 }
 //根据上次签到时间和这次签到时间作比较判断有没有漏签和今日是否已签到
 $current_total_day=intval($total_day)+1;
 $current_day=time();
 $ary = timediff($last_time,$current_day);
 if($ary[day]==0){//今天已签到
 exit(json_encode(array('status'=>"success",'code'=>"5")));
 mysqli_close($link);//关闭连接 
 exit();
 }else if($ary[day]==1){//没有漏签
 $usdateq = "UPDATE user_signin SET last_sign_time='$current_day', total_day='$current_total_day' WHERE user_id=$user_id;"; //更新
 mysqli_query($link,"SET NAMES utf8");
 $ustaters = mysqli_query($link,$usdateq); //获取数据集
 if($ustaters ==1){
 upuserscore($current_total_day);
 //exit(json_encode(array('status'=>"success",'code'=>"100")));
 mysqli_close($link);//关闭连接 
 exit();
 }else{
 exit(json_encode(array('status'=>"success",'code'=>"1")));
 mysqli_close($link);//关闭连接
 exit();
 }
 }else{//漏签过
 $usdateq = "UPDATE user_signin SET last_sign_time='$current_day', total_day=1 WHERE user_id=$user_id;"; //更新
 mysqli_query($link,"SET NAMES utf8");
 $ustaters = mysqli_query($link,$usdateq); //获取数据集
 if($ustaters ==1){
 upuserscore($current_total_day);
 //exit(json_encode(array('status'=>"success",'code'=>"100")));
 mysqli_close($link);//关闭连接 
 exit();
 }else{
 exit(json_encode(array('status'=>"success",'code'=>"1")));
 mysqli_close($link);//关闭连接
 exit();
 }
 }

 }else{//没有该用户记录则插入
 $current_day=time();
 $insertq = "insert into user_signin (user_id,last_sign_time,total_day)values($user_id,'$current_day',1)"; //SQL插入语句
 
 mysqli_query($link,"SET NAMES utf8");
 $insertrs = mysqli_query($link,$insertq); //获取数据集

 if(strpos($insertrs,"SELECT") === false){//出入数据成功
 upuserscore('1');
 //exit(json_encode(array('status'=>"success",'code'=>"100")));

 }

 }

 mysqli_close($link);//关闭连接


?>

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

php签到功能的实现

php签到功能的实现:php签到功能的实现方法:首先在数据库里建两张表,一个是用户的积分表,一个是签到状态表;然后通过时间戳的判断,及时更新状态表;最后根据上次签到时间和这次签到时间进行比较判断有没有漏签和今日是否已签到即可。推荐:《PHP视频教程》首先我在数据库里建
推荐度:
标签: 签到 php 实现
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top