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开发模式(简写版)
Mar 15 PHP
php 执行系统命令的方法
Jul 07 PHP
一道关于php变量引用的面试题
Aug 08 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
PHP获取当前url的具体方法全面解析
Nov 26 PHP
PHP程序漏洞产生的原因分析与防范方法说明
Mar 06 PHP
php获取远程文件的内容和大小
Nov 03 PHP
yii2分页之实现跳转到具体某页的实例代码
Jun 02 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
Aug 17 PHP
PHP+mysql实现从数据库获取下拉树功能示例
Jan 06 PHP
php文件包含目录配置open_basedir的使用与性能详解
Apr 03 PHP
Laravel下生成验证码的类
Nov 15 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
PHP读取xml方法介绍
2013/01/12 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
2016/11/22 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
2016/11/27 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
Three.js获取鼠标点击的三维坐标示例代码
2017/03/24 Javascript
详解用webpack2.0构建vue2.0超详细精简版
2017/04/05 Javascript
React中ES5与ES6写法的区别总结
2017/04/21 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
vue使用监听实现全选反选功能
2018/07/06 Javascript
浅谈vue方法内的方法使用this的问题
2018/09/15 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
python 装饰器重要在哪
2021/02/14 Python
欠款起诉书范文
2015/05/19 职场文书
步步惊心观后感
2015/06/12 职场文书
蓝天保卫战收官在即 :15行业将开展环保分级评价
2019/07/19 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
python munch库的使用解析
2021/05/25 Python
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS