PHP連續(xù)簽到功能實現(xiàn)方法詳解
本文實例講述了PHP連續(xù)簽到功能實現(xiàn)方法。分享給大家供大家參考,具體如下:
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{ // 更新簽到的天數(shù) $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, )); // 獲取連續(xù)簽到的天數(shù) $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 '簽到次數(shù)', `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制作論壇或社交網(wǎng)站的每日或每天打卡簽到特效,點擊打卡標簽顯示打卡簽到效果。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(); // 緩存變量,當數(shù)據(jù)被訪問過之后放置在緩存中,加快訪問速度 $(".singer_r_img").click(function(){ // 如果緩存中存在數(shù)據(jù),那么直接從緩存中讀取;如果不存在數(shù)據(jù),那么就從數(shù)據(jù)庫中讀取,并把數(shù)據(jù)存入緩存 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>
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php+mysql數(shù)據(jù)庫操作入門教程》、《php+mysqli數(shù)據(jù)庫程序設(shè)計技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計有所幫助。
相關(guān)文章
php number_format() 函數(shù)通過千位分組來格式化數(shù)字的實現(xiàn)代碼
以下是對php中的number format()函數(shù)通過千位分組來格式化數(shù)字的實現(xiàn)代碼進行了詳細的分析介紹,需要的朋友可以過來參考下2013-08-08PHP-FPM運行狀態(tài)的實時查看及監(jiān)控詳解
php-fpm和nginx一樣內(nèi)建了一個狀態(tài)頁,對于想了解php-fpm的狀態(tài)以及監(jiān)控php-fpm非常有幫助。這篇文章就給大家詳細介紹了PHP-FPM運行狀態(tài)的實時查看及監(jiān)控,有需要的朋友們可以參考學(xué)習(xí),感興趣的朋友們下面來一起看看吧。2016-11-11PHP使用preg_split和explode分割textarea存放內(nèi)容的方法分析
這篇文章主要介紹了PHP使用preg_split和explode分割textarea存放內(nèi)容的方法,結(jié)合實例形式分析preg_split和explode函數(shù)的功能、使用技巧與文本字符串分割過程中的相關(guān)注意事項,需要的朋友可以參考下2017-07-07jquery+php實現(xiàn)導(dǎo)出datatables插件數(shù)據(jù)到excel的方法
這篇文章主要介紹了jquery+php實現(xiàn)導(dǎo)出datatables插件數(shù)據(jù)到excel的方法,實例分析了jquery插件datatables的使用方法與php導(dǎo)出datatables數(shù)據(jù)到Excel的技巧,需要的朋友可以參考下2015-07-07php通過asort()給關(guān)聯(lián)數(shù)組按照值排序的方法
這篇文章主要介紹了php通過asort()給關(guān)聯(lián)數(shù)組按照值排序的方法,實例分析了php中asort()函數(shù)的功能與使用技巧,需要的朋友可以參考下2015-03-03再Docker中架設(shè)完整的WordPress站點全攻略
這篇文章主要介紹了再Docker中架設(shè)完整的WordPress站點全攻略,Docker是當下最火爆的虛擬機類技術(shù),需要的朋友可以參考下2015-07-07