이제 많은 공동 구매 웹사이트에서 남은 시간을 표시합니다. 남은 시간 표시는 Javascript를 사용하여 구현할 수 있지만 Javascript를 사용하는 것은 클라이언트의 시간을 얻기 때문에 Javascript를 사용하는 것이 안전하지 않다는 것을 알게 됩니다. 예를 들어, 이 공동 구매는 종료되었지만 기술에 능숙한 방문자가 자신의 클라이언트 컴퓨터에서 시간을 변경하는 한 제품을 계속 구매할 수 있다고 표시됩니다. 분명히 이것은 우리 웹사이트 디자인의 원래 의도는 아닙니다. 공동구매가 종료되면 더 이상 구매하실 수 없습니다. 여기에서는 시험 시스템의 남은 시간 카운트다운을 표시하는 코드를 작성하고 이에 대해 모두와 논의했습니다.
구현 원칙:
PHP는 서버 측에서 시간을 가져옵니다. 시험의 시작 시간, 종료 시간 및 현재 시간만 설정하면 됩니다. 현재 시간이 시험 시간 범위 내에 있지 않으면 응시자에게 "현재 시험 시간이 아닙니다!"라는 메시지가 표시됩니다. 시험 시간 범위 내에 있으면 현재 시간을 뺀 시간이 남은 시간으로 "남은 시험 시간: 2시간 56분 32" 형식으로 출력됩니다. 초". 서버 측에서 남은 시간을 얻은 후에는 클라이언트 측에서도 남은 시간의 카운트다운을 동적으로 표시해야 합니다. 이는 AJAX를 사용하여 달성해야 합니다. 시작하기 전에 몇 가지 기능에 대해 알아볼까요?
PHP 함수:
strtotime(); //영어 날짜를 타임스탬프로 변환
floor() //반올림 방법은 int() 강제 변환과 유사합니다
json_encode() //변수를 JSON으로 인코딩하고 문자열을 반환합니다.
간단한 남은 일수 계산:
date_default_timezone_set('Asia/Hong_Kong'); $startDate = '2015-8-11'; $endDate = '2015-8-31'; // 将日期转换为Unix时间戳 $startDateStr = strtotime($startDate); $endtDateStr = strtotime($endDate); $total = $endtDateStr-$startDateStr; $now = strtotime(date('Y-m-d')); $remain = $endtDateStr-$now; echo '为期:'.$total/(3600*24).'天<br>'; echo '剩余:'.$remain/(3600*24).'天';
효과:
간단한 남은 시간 계산:
date_default_timezone_set('Asia/Hong_Kong'); $startTime = '09:00:00'; $endTime = '18:00:00'; // 将时间转化为unix时间戳 $startTimeStr = strtotime($startTime); $endTimeStr = strtotime($endTime); $total = $endTimeStr - $startTimeStr; $restHours = 1; // 休息1小时 $now = strtotime(date('H:i:s')); $remain = $endTimeStr - $now; echo '上班时间:'.($total/3600-$restHours).'小时<br>'; echo '还有:'.floor(($remain/3600)).'小时'.floor($remain/60).'分钟下班';
효과:
프런트엔드와 백엔드가 협력하여 남은 시험 시간을 실현합니다.
HTML 레이아웃
남은 시험 시간:
JS 스크립트
function dealData(id,value){ var place = document.getElementById(id); place.innerHTML = value; } window.setInterval(function(){ // 每秒从服务器取一次数据 var ajax = new Ajax(); ajax.get("remain_time.php?a="+Math.random(),function(data){ eval("var dtime = "+data); dealData('hour',dtime.hour); dealData('minute',dtime.minute); dealData('second',dtime.second); }); },1000);
PHP 코드:
date_default_timezone_set('PRC'); $start_time = '09:00:00'; $end_time = '18:00:00'; $start_famate_time = strtotime($start_time);//开始时间转化为时间戳 $end_famate_time = strtotime($end_time); //结束时间转化为时间戳 $now_time = time(); if($end_famate_time < $now_time || $start_time > $now_time){ echo '当前不在考试的时间范围内!'; exit; } $remain_time = $end_famate_time-$now_time; //剩余的秒数 $remain_hour = floor($remain_time/(60*60)); //剩余的小时 $remain_minute = floor(($remain_time - $remain_hour*60*60)/60); //剩余的分钟数 $remain_second = ($remain_time - $remain_hour*60*60 - $remain_minute*60); //剩余的秒数 echo json_encode(array('hour'=>$remain_hour,'minute'=>$remain_minute,'second'=>$remain_second));
위 내용은 PHP에서 카운트다운을 구현하는 핵심 코드입니다. 모두의 학습에 도움이 되기를 바랍니다.