PHP连续签到功能实现方法详解
程序员文章站
2023-12-01 17:09:34
本文实例讲述了php连续签到功能实现方法。分享给大家供大家参考,具体如下:
require "./global.php";
$act = isset($_get['ac...
本文实例讲述了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,'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)); echo json_encode(array('state'=>'success','msg'=>"您是第".$info."天签到")); break; default : echo json_encode(array("ret"=>0,"msg"=>"操作不存在!")); break; }
sql:
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:
<?php 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','id',array('and'=>array('uid'=>$uid,'qian_dao_time[>=]'=>$todaybegin,'qian_dao_time[<=]'=>$todayend))); $flag = ''; if($isexit){ $flag = 'current'; } ?> <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>jquery制作每天或每日打卡签到特效</title> <meta name="description" content="jquery制作论坛或社交网站的每日或每天打卡签到特效,点击打卡标签显示打卡签到效果。jquery下载" /> </head> <body> <style type="text/css"> *{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;} </style> <div class="singer"> <div class="singer_l_cont"> <span>每天签到赢取pk币</span> </div> <div class="singer_r_r"> <a class="singer_r_img <?php echo $flag;?>" href="#" rel="external nofollow" > <span id="sing_for_number"></span> </a> </div> </div><!--singer end--> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script type="text/javascript"> /*签到模块日期捕捉:*/ 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']) } }) }) </script> </body> </html> <?php // 获取签到记录 $sign = $db -> select('sign','*',array('uid'=>$uid,'order'=>'dateline desc')); ?> <ul class='ul'> <?php if(empty($sign)){ ?> <li class="li">暂无签到信息</li> <?php }else{ foreach($sign as $k=>$v){ ?> <li class="li"><span><?php echo ($k + 1);?></span> <?php echo date('y-m-d h:i:s',$v['dateline']);?></li> <?php } } ?> </ul>
上一篇: 云服务架构有哪些(私有云和公有云的区别)
下一篇: PHP实现发送微博消息功能完整示例