php实现每日签到功能


Posted in PHP onNovember 29, 2018

每日签到的功能,供大家参考,具体内容如下

首次签到获得1个积分,第二次签到获得2个积分,第三次签到获得3个积分,以此类推但是签到必须每天连续积分才可以递增,如果有中断再次签到时获得积分仍然从1开始递增;
user: id,username,count,point,sign_time

php实现每日签到功能

sign.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>sign</title>
</head>
<body>
<center>
<input type="text" name="username">
<button>签到</button><span id='span'></span>
<div>
  <table id="box" border="1"></table>
</div>
</center>
</body>
</html>
<script src="jquery.1.12.min.js"></script>
<script>
  $(function(){
    $('button').click(function(){
      var username=$(':text').val();
      $.ajax({
        type:'post',
        url:'admin.php',
        data:{username:username},
        dataType:'json',
        success:function(res){
          if(res.success==1){
            $('#span').html('签到成功');
            var str='<tr><td>用户名</td><td>连续签到天数</td><td>总积分</td></tr>';
            str+='<tr><td>'+res.msg.username+'</td><td>'+res.msg.count+'</td><td>'+res.msg.point+'</td></tr>';
            $('#box').html(str);
          }
        }
      })
    });
  })
</script>

admin.php

<?php 
  header('content-type:text/html;charset=utf-8');
  $pdo=new PDO('mysql:host=localhost;dbname=databasename;','root','root');
  $pdo->exec('set names utf8');
  $username=$_POST['username'];
  $sqlQuery="select * from user where username='$username'";
  $row=$pdo->query($sqlQuery)->fetch(PDO::FETCH_ASSOC);
  if($row){
    $sign_time=$row['sign_time'];
    $sign_time=strtotime($sign_time);
    $int=date('Y-m-d');
    $int=strtotime($int);//5
    $ints=$int+86400;  //6
    $int_s=$int-86400;  //4
    //当天已签到
    if($int<$sign_time&&$sign_time<$ints){
      // echo '您已签到';
    }
    //昨天未签到,积分,天数在签到修改为1
    if($sign_time<$int_s){
      $count=1;
      $point=1;
      $sign_time=date('Y-m-d H:s:i');
      $sqlRow="update user set count='$count',point='$point',sign_time='$sign_time' where username='$username'";
      $res=$pdo->exec($sqlRow);
      // echo '签到成功修改为1';
    }
    //请签到
    if($int_s<$sign_time&&$sign_time<$int){
      $count=$row['count']+1;
      $point=$row['point']+1;
      $sign_time=date('Y-m-d H:s:i');
      $sqlupdate="update user set count='$count',point='$point',sign_time='$sign_time' where username='$username'";
      $res=$pdo->exec($sqlupdate);
      // echo '签到成功+1';
    }
  }else{
    $count=1;
    $point=1;
    $sign_time=date('Y-m-d H:s:i');
    $sqlAdd="insert into user values (null,'$username','$count','$point','$sign_time')";
    $res=$pdo->exec($sqlAdd);
    // echo '恭喜你签到成功----1';
  }
  //////////////////////响应
  $sqlEnd="select * from user where username='$username'";
  $info=$pdo->query($sqlEnd)->fetch(PDO::FETCH_ASSOC);
  echo json_encode(array('success'=>1,'msg'=>$info));die;
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
利用PHP实现与ASP Banner组件相似的类
Oct 09 PHP
一个好用的分页函数
Nov 16 PHP
如何使用PHP往windows中添加用户
Dec 06 PHP
处理单名多值表单的详解
Jun 08 PHP
php判断正常访问和外部访问的示例
Feb 10 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
Jul 03 PHP
php文件上传原理与实现方法详解
Dec 20 PHP
关于PHP求解三数之和问题详析
Nov 09 PHP
PHP7变量处理机制修改
Mar 09 PHP
PHP序列化的四种实现方法与横向对比
Nov 29 #PHP
PHP中如何使用Redis接管文件存储Session详解
Nov 28 #PHP
php基于Redis消息队列实现的消息推送的方法
Nov 28 #PHP
php获取用户真实IP和防刷机制的实例代码
Nov 28 #PHP
PHP实现小程序批量通知推送
Nov 27 #PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
Nov 22 #PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
Nov 20 #PHP
You might like
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
Prototype Array对象 学习
2009/07/19 Javascript
禁止js文件缓存的代码
2010/04/09 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
动态加载script文件的两种方法
2013/08/15 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
2017/01/04 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
2019/11/05 Javascript
Python MD5文件生成码
2009/01/12 Python
详解Python中for循环的使用方法
2015/05/14 Python
利用python画一颗心的方法示例
2017/01/31 Python
详谈在flask中使用jsonify和json.dumps的区别
2018/03/26 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
Python使用Matlab命令过程解析
2020/06/04 Python
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
美国台面电器和厨具品牌:KitchenAid
2019/04/12 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
青年创业培训欢迎词
2014/01/08 职场文书
党校个人自我鉴定范文
2014/03/28 职场文书
工厂车间标语
2014/06/19 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
小学生成绩单评语
2014/12/31 职场文书
老公保证书
2015/01/17 职场文书
python 如何在 Matplotlib 中绘制垂直线
2021/04/02 Python
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
利用python做数据拟合详情
2021/11/17 Python
在 Python 中利用 Pool 进行多线程
2022/04/24 Python