php 출석 기능 실현 방법 실례 분석
먼저 저 는 데이터베이스 에 두 장의 표를 만 들 었 습 니 다.하 나 는 사용자 의 포인트 표 이 고 하 나 는 출석 상태 표 이 며 사용자 의 포인트 수 와 도착 상 태 를 기록 하 는 데 사 용 됩 니 다.
사용자 서명 상태 표 에 필드 가 있 습 니 다.lastsign_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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.