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

吾爱主题 阅读:206 2021-09-18 16:49:00 评论:0

本文实例讲述了PHP连续签到功能实现方法。分享给大家供大家参考,具体如下:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 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:

?
1 2 3 4 5 6 7 8 9 10 11 12 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:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 <?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>&nbsp;<?php echo date ( 'Y-m-d H:i:s' , $v [ 'dateline' ]);?></li>    <?php      }    }    ?> </ul>

希望本文所述对大家PHP程序设计有所帮助。

原文链接:https://www.cnblogs.com/phpfensi/p/4601834.html

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容