• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php实现签到功能的方法实例分析

    本文实例讲述了php实现签到功能的方法。分享给大家供大家参考,具体如下:

    首先我在数据库里建了两张表,一个是用户的积分表,一个是签到状态表,分来用来记录用户的积分数和先到状态

    在用户签到状态表中我们有一个字段,last_sign_time,即上一次签到时间,每次可以签到的时候把这个时间与当前时间进行比较 如果相差为0天,则说明今天已签到(这个签到是24小时内只能签到一次,即两次签到时间要相差24小时以上).如果等于一天则今日可以签到,如果2天及其以上则说明漏签了.

    通过时间戳的判断,及时更新状态表,并且当可以签到的时候则对用户积分表进行操作,即更新用户积分.

    具体代码如下:

    ?php
    $user_id=@$_REQUEST['user_id'];
    //功能:计算两个时间戳之间相差的日时分秒
    //$begin_time 开始时间戳
    //$end_time 结束时间戳
    function timediff($begin_time,$end_time)
    {
       if($begin_time  $end_time){
         $starttime = $begin_time;
         $endtime = $end_time;
       }else{
         $starttime = $end_time;
         $endtime = $begin_time;
       }
       //计算天数
       $timediff = $endtime-$starttime;
       $days = intval($timediff/86400);
       //计算小时数
       $remain = $timediff%86400;
       $hours = intval($remain/3600);
       //计算分钟数
       $remain = $remain%3600;
       $mins = intval($remain/60);
       //计算秒数
       $secs = $remain%60;
       $res = array("day" => $days,"hour" => $hours,"min" => $mins,"sec" => $secs);
       return $res;
    }
    function upuserscore($current_total_day){
    $user_id=@$_REQUEST['user_id'];
    //读取数据库配置信息的ini文件
      $ary=parse_ini_file('db.ini');
      $db_login_name=base64_decode($ary['db_login_name']);
      $db_login_password=base64_decode($ary['db_login_password']);
      $db_host=base64_decode($ary['db_host']);
      $db_name=base64_decode($ary['db_name']);
    //链接数据库
     $scorelink=mysqli_connect($db_host,$db_login_name,$db_login_password);
    mysqli_select_db($scorelink,$db_name); //选择数据库
    //检查积分表里是否有该用户 有的话则更新数据 没有的话则插入数据
    $scoreq = "SELECT * FROM user_score WHERE user_id=$user_id"; //SQL插入语句
        mysqli_query($scorelink,"SET NAMES utf8");
        $rs = mysqli_query($scorelink,$scoreq); //获取数据集
        if(!$rs){
            exit(json_encode(array('status'=>"success",'code'=>"1",'error'=>mysqli_error($scorelink))));
        }
        if(mysqli_num_rows($rs)){//该用户有数据 则更新其积分信息
          $total_score="";
           while($row = mysqli_fetch_row($rs)) {
          $total_score=$row[4];
          }
          $scoreusdateq = "UPDATE user_score SET user_total_score ='98' WHERE user_id=$user_id;"; //更新
          mysqli_query($scorelink,"SET NAMES utf8");
          $ustaters = mysqli_query($scorelink,$scoreusdateq); //获取数据集
          if($ustaters ==1){
              exit(json_encode(array('status'=>"success",'code'=>"100")));
            mysqli_close($scorelink);//关闭连接  
            exit();
          }else{
              exit(json_encode(array('status'=>"success",'code'=>"1")));
               mysqli_close($scorelink);//关闭连接
               exit();
          }
        }else{//没有该用户数据 则插入其积分信息
          $scoreinsertq = "insert into user_score (user_id,user_total_score)values($user_id,10)"; //SQL插入语句
          mysqli_query($scorelink,"SET NAMES utf8");
          $rs = mysqli_query($scorelink,$scoreinsertq); //获取数据集
          if(!$rs){
              exit(json_encode(array('status'=>"success",'code'=>"1",'error'=>mysqli_error($scorelink))));
          }
          if(strpos($q,"SELECT") === false){
              exit(json_encode(array('status'=>"success",'code'=>"100")));
          }
          mysqli_close($scorelink);//关闭连接
        }
    }
    //读取数据库配置信息的ini文件
      $ary=parse_ini_file('db.ini');
      $db_login_name=base64_decode($ary['db_login_name']);
      $db_login_password=base64_decode($ary['db_login_password']);
      $db_host=base64_decode($ary['db_host']);
      $db_name=base64_decode($ary['db_name']);
    //链接数据库
     $link=mysqli_connect($db_host,$db_login_name,$db_login_password);
    mysqli_select_db($link,$db_name); //选择数据库
    //检查签到表里是否有该用户 有的话则更新数据 没有的话则插入数据
    $q = "SELECT * FROM user_signin WHERE user_id=$user_id"; //SQL插入语句
        mysqli_query($link,"SET NAMES utf8");
        $rs = mysqli_query($link,$q); //获取数据集
        if(!$rs){
            exit(json_encode(array('status'=>"success",'code'=>"1",'error'=>mysqli_error($link))));
        }
        if(mysqli_num_rows($rs)){//该用户有数据 则更新其签到信息
          $last_time="";
          $total_day="";
           while($row = mysqli_fetch_row($rs)) {
          $last_time=$row[4]."br/>";
          $total_day=$row[5];
        }
          //根据上次签到时间和这次签到时间作比较判断有没有漏签和今日是否已签到
          $current_total_day=intval($total_day)+1;
          $current_day=time();
          $ary = timediff($last_time,$current_day);
        if($ary[day]==0){//今天已签到
           exit(json_encode(array('status'=>"success",'code'=>"5")));
            mysqli_close($link);//关闭连接  
            exit();
        }else if($ary[day]==1){//没有漏签
          $usdateq = "UPDATE user_signin SET last_sign_time='$current_day', total_day='$current_total_day' WHERE user_id=$user_id;"; //更新
          mysqli_query($link,"SET NAMES utf8");
          $ustaters = mysqli_query($link,$usdateq); //获取数据集
          if($ustaters ==1){
          upuserscore($current_total_day);
              //exit(json_encode(array('status'=>"success",'code'=>"100")));
            mysqli_close($link);//关闭连接  
            exit();
          }else{
              exit(json_encode(array('status'=>"success",'code'=>"1")));
               mysqli_close($link);//关闭连接
             exit();
          }
        }else{//漏签过
        $usdateq = "UPDATE user_signin SET last_sign_time='$current_day', total_day=1 WHERE user_id=$user_id;"; //更新
        mysqli_query($link,"SET NAMES utf8");
        $ustaters = mysqli_query($link,$usdateq); //获取数据集
        if($ustaters ==1){
          upuserscore($current_total_day);
            //exit(json_encode(array('status'=>"success",'code'=>"100")));
          mysqli_close($link);//关闭连接  
          exit();
        }else{
            exit(json_encode(array('status'=>"success",'code'=>"1")));
           mysqli_close($link);//关闭连接
           exit();
        }
      }
      }else{//没有该用户记录则插入
        $current_day=time();
        $insertq = "insert into user_signin (user_id,last_sign_time,total_day)values($user_id,'$current_day',1)"; //SQL插入语句
        mysqli_query($link,"SET NAMES utf8");
        $insertrs = mysqli_query($link,$insertq); //获取数据集
        if(strpos($insertrs,"SELECT") === false){//出入数据成功
          upuserscore('1');
          //exit(json_encode(array('status'=>"success",'code'=>"100")));
          }
      }
      mysqli_close($link);//关闭连接
    ?>
    
    

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP+MySQL会员系统开发专题》、《php+mysql数据库操作入门教程》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • thinkPHP实现签到功能的方法
    • php+mysql+jquery实现日历签到功能
    • php实现每日签到功能
    • 定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
    • PHP使用redis位图bitMap 实现签到功能
    • Php连接及读取和写入mysql数据库的常用代码
    • php中关于mysqli和mysql区别的一些知识点分析
    • PHP读取MySQL数据代码
    • PHP+MYSQL实现用户的增删改查
    • php基础之连接mysql数据库和查询数据
    • PHP连续签到功能实现方法详解
    上一篇:解决Linux下php-fpm进程过多导致内存耗尽问题
    下一篇:linux下的php-fpm参数配置介绍与参数优化说明
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    php实现签到功能的方法实例分析 php,实现,签到,功能,的,方法,