本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《php+mysql数据库操作入门教程》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
© 版权声明
THE END
暂无评论内容