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 删除记录同时删除图片文件的实现代码
May 12 PHP
如何用php获取程序执行的时间
Jun 09 PHP
php打印输出棋盘的实现方法
Dec 23 PHP
PHP实现Javascript中的escape及unescape函数代码分享
Feb 10 PHP
php实现俄罗斯乘法实例
Mar 07 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
Apr 30 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
php微信开发接入
Aug 27 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 PHP
Laravel中错误与异常处理的用法示例
Sep 16 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 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
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
做个自己站内搜索引擎
2006/10/09 PHP
在php MYSQL中插入当前时间
2008/04/06 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
原生js事件的添加和删除的封装
2014/07/01 Javascript
JavaScript的arguments对象应用示例
2014/09/15 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
scrapy爬虫完整实例
2018/01/25 Python
python读取文件名称生成list的方法
2018/04/27 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
大学自主招生自荐信
2013/12/16 职场文书
企业总经理任命书
2014/06/05 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js
德生2P3收音机开箱评测
2022/04/30 无线电
JavaScript中reduce()的用法
2022/05/11 Javascript