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下使用SimpleXML 处理XML 文件
Feb 27 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
Sep 10 PHP
QQ登录 PHP OAuth示例代码
Jul 20 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
Dec 16 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 PHP
PHP加密函数 Javascript/Js 解密函数
Sep 23 PHP
ThinkPHP的I方法使用详解
Jun 18 PHP
php中使用gd库实现远程图片下载实例
May 12 PHP
从性能方面考虑PHP下载远程文件的3种方法
Dec 29 PHP
PHP获取二叉树镜像的方法
Jan 17 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
php7 参数、整形及字符串处理机制修改实例分析
May 25 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
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
JavaScript自定义事件介绍
2013/08/29 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
jQuery获取选中单选按钮radio的值
2016/12/27 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
vue生成token保存在客户端localStorage中的方法
2017/10/25 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
Python中的with...as用法介绍
2015/05/28 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
浅谈Python实现2种文件复制的方法
2018/01/19 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
matplotlib subplots 调整子图间矩的实例
2018/05/25 Python
python 反向输出字符串的方法
2018/07/16 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
基于pytorch的保存和加载模型参数的方法
2019/08/17 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
2014年教师培训的自我评价
2014/01/03 职场文书
英语商务邀请函范文
2014/01/16 职场文书
师生聚会感言
2014/01/26 职场文书
寒山寺导游词
2015/02/03 职场文书
Vue的生命周期一起来看看
2022/02/24 Vue.js
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python