php 判断用户连续签到_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));

echo json_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,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));

echo json_encode(array('state'=>'success','msg'=>"您是第".$info."天签到"));

break;

default :

echo json_encode(array("ret"=>0,"msg"=>"操作不存在!"));

break;

}

CREATE TABLE IF NOT EXISTS `qian_dao` (

`id` int(11) NOT NULL AUTO_INCREMENT,`uid` int(1) NOT NULL COMMENT '用户id',`qian_dao_num` int(11) NOT NULL COMMENT '签到次数',`qian_dao_time` int(11) NOT NULL COMMENT '签到时间',PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `sign` (

`uid` int(11) NOT NULL,`dateline` varchar(10) COLLATE utf8_bin NOT NULL,KEY `uid` (`uid`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

html:

include './global.PHP';

$uid = 1;

$todayBegin=strtotime(date('Y-m-d')." 00:00:00");

$todayEnd= strtotime(date('Y-m-d')." 23:59:59");

$isexit = $db -> get('qian_dao','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:1px solid #DCDBDB;padding:10px;height:45px;line-height:45px;width:290px;margin:20px auto;}

.ul{border:1px solid #DCDBDB;padding:0 10px 10px 10px;;width:290px;margin:20px auto;}

.li{border:1px solid #DCDBDB;padding-left:10px;height:25px;line-height:25px;width:280px;margin:10px 0 0 0;}

.singer_l_cont,.singer_r_img{float:left;}

.singer_l_cont{width:145px;background:url(images/sing_per.gif) no-repeat left 12px;text-indent:23px;font-size:12px;}

.singer_r_img{display:block;width:114px;height:52px;background:url(images/sing_week.gif) right 2px no-repeat;vertical-align:middle;float:right;*margin-bottom:-10px;}

.singer_r_img:hover{background-position:right -53px;text-decoration:none;}

.singer_r_img span{margin-left:14px;font-size:16px;font-family:'Hiragino Sans GB','Microsoft YaHei',sans-serif !important;font-weight:700;color:#165379;}

.singer_r_img.current{background:url(images/sing_sing.gif) no-repeat 0 2px;}

每天签到赢取PK币

/*签到模块日期捕捉:*/

function week(){

var objDate= new Date();

var week = objDate.getDay();

switch(week)

{

case 0:

week="周日";

break;

case 1:

week="周一";

break;

case 2:

week="周二";

break;

case 3:

week="周三";

break;

case 4:

week="周四";

break;

case 5:

week="周五";

break;

case 6:

week="周六";

break;

}

$("#sing_for_number").html( week );

}

$(document).ready(function(){

week();

var cache=new Array(); // 缓存变量,当数据被访问过之后放置在缓存中,加快访问速度

$(".singer_r_img").click(function(){

// 如果缓存中存在数据,那么直接从缓存中读取;如果不存在数据,那么就从数据库中读取,并把数据存入缓存

if (typeof(cache['stop'])=='undefined') {

$.ajax({

url:"action.PHP?act=qiandao",type:"post",dataType:'json',data:{

uid:1,},async:false,success:function(data){

// alert(data.msg);

switch(data.state){

case 'success':

alert(data.msg);

break

case 'stop':

cache['stop'] = data.msg;

alert(data.msg);

break;

}

$(".singer_r_img").addClass("current");

}

})

}else{

alert(cache['stop'])

}

})

})

// 获取签到记录

$sign = $db -> select('sign','ORDER'=>'dateline DESC'));

?>

if(empty($sign)){

?>

暂无签到信息

}else{

foreach($sign as $k=>$v){

?>

<?PHP echo ($k + 1);?> <?PHP echo date('Y-m-d H:i:s',$v['dateline']);?>

}

}

?>

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP+MysqL数据库操作入门教程》、《PHP+MysqLi数据库程序设计技巧总结》、《PHP面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP字符串(string)用法总结》及《PHP常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

总结

以上是编程之家为你收集整理的PHP连续签到功能实现方法详解全部内容,希望文章能够帮你解决PHP连续签到功能实现方法详解所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值