>백엔드 개발 >PHP 튜토리얼 >로그인 기능을 구현하기 위한 PHP의 그래픽 및 텍스트 코드에 대한 자세한 설명

로그인 기능을 구현하기 위한 PHP의 그래픽 및 텍스트 코드에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-04 14:20:162022검색

먼저 데이터베이스에 두 개의 테이블을 구축했는데, 하나는 사용자의 포인트 테이블이고, 다른 하나는 사용자의 포인트와 첫 도착 상태를 기록하는 데 사용되는 체크인 상태 테이블입니다

사용자 로그인 상태 테이블에는 마지막 로그인 시간인 last_sign_time 필드가 있습니다. , 이 시간과 현재 시간을 비교해 보세요. 차이가 0일이면 오늘 로그인했다는 의미입니다. (이 로그인은 24시간에 한 번만 수행할 수 있습니다. 즉, 두 로그인 간의 차이는 다음과 같아야 합니다. 24시간 이상) 1일이면 오늘부터 로그인이 가능하다는 뜻이고, 2일 이상이면 로그인을 놓친 것입니다

제때에 상태표를 업데이트하세요. 타임스탬프의 판단에 따라 체크인이 가능할 때 사용자 포인트 테이블을 운영, 즉 사용자 포인트를 업데이트합니다.

<?php
$user_id=@$_REQUEST[&#39;user_id&#39;];
//功能:计算两个时间戳之间相差的日时分秒
//$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[&#39;user_id&#39;];
//读取数据库配置信息的ini文件
    $ary=parse_ini_file(&#39;db.ini&#39;);
    $db_login_name=base64_decode($ary[&#39;db_login_name&#39;]);
    $db_login_password=base64_decode($ary[&#39;db_login_password&#39;]);
    $db_host=base64_decode($ary[&#39;db_host&#39;]);
    $db_name=base64_decode($ary[&#39;db_name&#39;]);
//链接数据库
 $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(&#39;status&#39;=>"success",&#39;code&#39;=>"1",&#39;error&#39;=>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 =&#39;98&#39; WHERE user_id=$user_id;"; //更新
            mysqli_query($scorelink,"SET NAMES utf8");
            $ustaters = mysqli_query($scorelink,$scoreusdateq); //获取数据集
            if($ustaters ==1){
                    exit(json_encode(array(&#39;status&#39;=>"success",&#39;code&#39;=>"100")));
                mysqli_close($scorelink);//关闭连接    
                exit();
            }else{
                    exit(json_encode(array(&#39;status&#39;=>"success",&#39;code&#39;=>"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(&#39;status&#39;=>"success",&#39;code&#39;=>"1",&#39;error&#39;=>mysqli_error($scorelink))));
            }
            if(strpos($q,"SELECT") === false){
                    exit(json_encode(array(&#39;status&#39;=>"success",&#39;code&#39;=>"100")));
            }

            mysqli_close($scorelink);//关闭连接

        }

}




//读取数据库配置信息的ini文件
    $ary=parse_ini_file(&#39;db.ini&#39;);
    $db_login_name=base64_decode($ary[&#39;db_login_name&#39;]);
    $db_login_password=base64_decode($ary[&#39;db_login_password&#39;]);
    $db_host=base64_decode($ary[&#39;db_host&#39;]);
    $db_name=base64_decode($ary[&#39;db_name&#39;]);

//链接数据库
 $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(&#39;status&#39;=>"success",&#39;code&#39;=>"1",&#39;error&#39;=>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(&#39;status&#39;=>"success",&#39;code&#39;=>"5")));
                mysqli_close($link);//关闭连接    
                exit();
        }else if($ary[day]==1){//没有漏签
            $usdateq = "UPDATE user_signin SET last_sign_time=&#39;$current_day&#39;, total_day=&#39;$current_total_day&#39; 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(&#39;status&#39;=>"success",&#39;code&#39;=>"100")));
                mysqli_close($link);//关闭连接    
                exit();
            }else{
                    exit(json_encode(array(&#39;status&#39;=>"success",&#39;code&#39;=>"1")));
                     mysqli_close($link);//关闭连接
                  exit();
            }
        }else{//漏签过
        $usdateq = "UPDATE user_signin SET last_sign_time=&#39;$current_day&#39;, 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(&#39;status&#39;=>"success",&#39;code&#39;=>"100")));
            mysqli_close($link);//关闭连接    
            exit();
        }else{
                exit(json_encode(array(&#39;status&#39;=>"success",&#39;code&#39;=>"1")));
             mysqli_close($link);//关闭连接
              exit();
        }
    }

    }else{//没有该用户记录则插入
        $current_day=time();
        $insertq = "insert into user_signin (user_id,last_sign_time,total_day)values($user_id,&#39;$current_day&#39;,1)"; //SQL插入语句
            
        mysqli_query($link,"SET NAMES utf8");
        $insertrs = mysqli_query($link,$insertq); //获取数据集

        if(strpos($insertrs,"SELECT") === false){//出入数据成功
            upuserscore(&#39;1&#39;);
            //exit(json_encode(array(&#39;status&#39;=>"success",&#39;code&#39;=>"100")));

            }

    }

        mysqli_close($link);//关闭连接


?>

위는 체크인 기능을 구현하기 위한 PHP의 그래픽 코드에 대한 자세한 설명입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.