PHP连续签到功能实现方法详解
发布:smiling 来源: PHP粉丝网 添加日期:2022-01-25 20:16:18 浏览: 评论:0
这篇文章主要介绍了PHP连续签到功能实现方法,结合实例形式详细分析了PHP结合mysql数据库实现连续签到功能相关操作技巧,需要的朋友可以参考下。
本文实例讲述了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(emptyempty($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>
Tags: PHP连续签到功能
- 上一篇:PHP框架实现WebSocket在线聊天通讯系统
- 下一篇:最后一页
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)