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="#">
                <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>&nbsp;<?php echo date(‘Y-m-d H:i:s‘,$v[‘dateline‘]);?></li>
    <?php
        }
    }
    ?>
</ul>
时间: 2024-10-06 08:45:36

PHP连续签到的相关文章

统计连续签到的方法

/** * 从最后一次签到时间反推连续签到天数 * * @param list * List<Date> * @param asc * boolean (true:ASC,false:DESC) 对list的描述,是升序还是降序 * @return * * */ public static Map<String, Object> calcuContinue(List<Date> list, boolean asc) { Date end = new Date(); Da

获取连续登陆天数,连续签到天数 ,方法优化

获取连续登陆天数,连续签到天数,类似这样的需求应该是一个常见的需求,那么我们有没有一套成熟的解决方案呢 ?下面我来跟大家分享一下我的故事. 在猴年马月的一天,有个用户反馈个人中心打开缓慢,需要7.8秒,做为一个认真负责任的程序员GG,我尼玛放下手中的其他工作,跟踪调查并且解决该问题. 第一步重现问题: 连着登陆了好几个账号到个人中心,打开都不慢呀 ,那是什么问题呢,就你一个人出问题,是你人品差吧,正当打算以此敷衍用户的时候,测试组的小陶说,他也遇到了这个问题,纳尼 !!你个人品差的家伙 ,让俺来

sqlserver查询连续签到天数

create table #t(keyId int identity,actionDate datetime)insert into #t(actionDate) select distinct CreateDate from CRM_ScoreTransaction WHERE MemberID='1E7DFF7F-51ED-4E21-8471-E892E0326BBD' order BY CreateDate desc ---采用遍历的方式生成用户连续签到的天数 start declare

使用jmeter实现当前日期连续增加达到连续签到目的

一.概要 1.测试连续签到接口,起初是在swagger上修改日期进行测试,效率太慢,执行后还要查看数据库变化和页面变化,于是想起了使用jmeter根据当前时间每执行一次,在原有日期加一天的操作. 二.实现过程 1.打开jmeter,添加线程组,在线程组依次添加请求.查看结果树 2.该请求是post请求,传参在body中,在传参中需要使用函数助手中的时间函数,来获取当前时间. 3.把生成的函数式放在参数值中,可是这样也有一个弊端,每执行一次还需要修改数字,比如把1改成2才可以. 4.这时需要用到函

传入用户id查询连续签到天数

DROP FUNCTION IF EXISTS getTimes; DELIMITER $$ CREATE    FUNCTION  getTimes(idstr VARCHAR(50)) RETURNS INT BEGIN DECLARE times INT; DECLARE a INT; DECLARE tempdt DATETIME; DECLARE tempdt2 DATETIME; SET  times = 0; SET a=1; SELECT COUNT(*) INTO times

NYOJ题目874签到

---------------------------------------------- 是有规律的,我们可以看做是每天都能领取一个币,并且每满五天就额外的奖励5个币,公式如下: 连续签到的币数取值: AC代码如下: 1 import java.util.Scanner; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 7 Scanner sc=new Scanner(System.in); 8 9

thinkphp签到的实现代码

数据表 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE `members_sign` (   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,   `uid` int(11) unsigned NOT NULL COMMENT '用户id',   `days` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '连续签到的天数',   `is_share` tinyint(1) 

PHP+MYSQL+AJAX实现每日签到功能

一.web前端及ajax部分 文件index.html <html> <head> <meta http-equiv=Content-Type content="text/html;charset=utf-8"> <title>PHP+AJAX+MYSQL实现每日签到</title> <script type="text/javascript" src="js/jquery.min.js&q

商城签到功能的设计与实现

需求分析        1.用户当天登录商城,只要签到就直接奖励一定的积分或者根据用户本周或者本月内已经连续签到的天数进行积分奖励,后台可以设置具体的奖励规则,这里假设本周内连续登录三天奖励 1 积分,五天奖励 2 积分,七天奖励 3 积分,每周一签到次数归零(归零方法不一定是每周一签到次数自动设为零,详见下文) 2.实现形式:在个人中心放置签到按钮或者登录成功之后进行弹窗提示 3.个人中心,用户可以看到签到日志(如果设置日志记录的话)和积分流水 4.商城后台可以对签到送积分的规则进行设置,也可