PHP连续签到功能实现方法详解
本文实例讲述了PHP连续签到功能实现方法。分享给大家供大家参考,具体如下:
require"./global.php";
$act=isset($_GET['act'])?$_GET['act']:"error";
//d($act);
switch($act){
case"qiandao":
$uid=intval($_POST['uid']);
$res=$db->get('qian_dao','*',array('uid'=>$uid));
//last_query();
$time=time();
//判断今天是否签到
$todayBegin=strtotime(date('Y-m-d')."00:00:00");
$todayEnd=strtotime(date('Y-m-d')."23:59:59");
$isexit=$db->get('qian_dao','id',array('AND'=>array('uid'=>$uid,'qian_dao_time[>=]'=>$todayBegin,'qian_dao_time[<=]'=>$todayEnd)));
//last_query();
if($isexit){
//echo"今天已签到!";
Log::writeLog(print_r(array('state'=>'stop','msg'=>'今天已签到!'),true));
echojson_encode(array('state'=>'stop','msg'=>'今天已签到!'));
exit;
}
if($res){
//存在签到
if((time()-$res['qian_dao_time']>24*60*60)){//判断时间是否大于24小时
//让字段归0
$addInfo=$db->update('qian_dao',array('qian_dao_num'=>1,'qian_dao_time'=>$time),array('uid'=>$uid));
}else{
//更新签到的天数
$addInfo=$db->update('qian_dao',array('qian_dao_num[+]'=>1,'qian_dao_time'=>$time),array('uid'=>$uid));
}
}else{
//echo'您还没有签到过';
//没有签到过
$db->insert('qian_dao',array('uid'=>$uid,'qian_dao_num'=>1,'qian_dao_time'=>$time));
//echo$db->last_query();
}
//插入签到记录
$db->insert('sign',array(
'uid'=>$uid,
'dateline'=>$time,
));
//获取连续签到的天数
$info=$db->get('qian_dao','qian_dao_num',array('uid'=>$uid));
echojson_encode(array('state'=>'success','msg'=>"您是第".$info."天签到"));
break;
default:
echojson_encode(array("ret"=>0,"msg"=>"操作不存在!"));
break;
}
sql:
CREATETABLEIFNOTEXISTS`qian_dao`( `id`int(11)NOTNULLAUTO_INCREMENT, `uid`int(1)NOTNULLCOMMENT'用户id', `qian_dao_num`int(11)NOTNULLCOMMENT'签到次数', `qian_dao_time`int(11)NOTNULLCOMMENT'签到时间', PRIMARYKEY(`id`) )ENGINE=InnoDBDEFAULTCHARSET=utf8AUTO_INCREMENT=1; CREATETABLEIFNOTEXISTS`sign`( `uid`int(11)NOTNULL, `dateline`varchar(10)COLLATEutf8_binNOTNULL, KEY`uid`(`uid`) )ENGINE=MyISAMDEFAULTCHARSET=utf8COLLATE=utf8_bin;
html:
get('qian_dao','id',array('AND'=>array('uid'=>$uid,'qian_dao_time[>=]'=>$todayBegin,'qian_dao_time[<=]'=>$todayEnd)));
$flag='';
if($isexit){
$flag='current';
}
?>
jquery制作每天或每日打卡签到特效
*{margin:0;padding:0;list-style-type:none;}
a,img{border:0;text-decoration:none;}
/*今日签到*/
.singer{border:1pxsolid#DCDBDB;padding:10px;height:45px;line-height:45px;width:290px;margin:20pxauto;}
.ul{border:1pxsolid#DCDBDB;padding:010px10px10px;;width:290px;margin:20pxauto;}
.li{border:1pxsolid#DCDBDB;padding-left:10px;height:25px;line-height:25px;width:280px;margin:10px000;}
.singer_l_cont,.singer_r_img{float:left;}
.singer_l_cont{width:145px;background:url(images/sing_per.gif)no-repeatleft12px;text-indent:23px;font-size:12px;}
.singer_r_img{display:block;width:114px;height:52px;background:url(images/sing_week.gif)right2pxno-repeat;vertical-align:middle;float:right;*margin-bottom:-10px;}
.singer_r_img:hover{background-position:right-53px;text-decoration:none;}
.singer_r_imgspan{margin-left:14px;font-size:16px;font-family:'HiraginoSansGB','MicrosoftYaHei',sans-serif!important;font-weight:700;color:#165379;}
.singer_r_img.current{background:url(images/sing_sing.gif)no-repeat02px;}
每天签到赢取PK币