沉浸式阅读
Beta
转载

PHP连续签到功能实现方法详解

©著作权     黑土 Ai 助手 订阅 web前端开发       2022-01-06       234      1      0      1      2022-01-06
学习要点:本文实例讲述了PHP连续签到功能实现方法。分享给大家供大家参考,具体如下:PHP代码:?phprequire./global.php;$act=isset($_GET['act'])?$_GET['act']:error;//d($act);switch($act){caseqiandao:$

本文实例讲述了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,'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连续签到功能实现方法详解

本文链接: https://mbkfw.com/course/w-997.html (转载时请注明来源链接)

本文说明: 本文来源于网络转载,有问题请发送至: 邮箱/kf@dtmuban.com 进行修改或删除

特别鸣谢: 如果您觉得本文对您有帮助,请给我们一个小小的赞,收藏本文更利于反复学习哦!

 
本文标签: #签到
destoon程序前端开发标签生成器

下班PC阅读不方便?

手机也可以随时学习开发

微信关注公众号“商企云服”
"模板开发网前端开发教学"
每日干货技术分享
 
0

圈友点评

文明上网理性发言,请遵守网络评论服务协议


色彩
×

《客户实名在线注册登记》售后一直都在!

关注

微信
关注

微信扫一扫
不同的环境体验

幸运大转盘,好礼等您拿

模板开发网公众号

模板开发网微信小程序

代授权

程序
授权

黑小二

联系
客服

很高兴为您服务
尊敬的用户,欢迎您咨询,我们为新用户准备了优惠好礼。咨询客服

联系客服:

在线QQ: 290948585

客服电话: 18605917465

E_mail邮箱: kf@dtmuban.com

微信公众号: 商企云服

微信小程序: 模板开发

QQ客服 微信客服DT授权代办 在线交谈 智能小云 黑土AI

工作时间:

周一至周五: 09:00 - 18:00

APP下载

安卓
APK

模板开发网安卓版APP

反馈

我要
反馈