>  기사  >  백엔드 개발  >  PHP는 카운트다운 effect_php 기술을 달성했습니다.

PHP는 카운트다운 effect_php 기술을 달성했습니다.

WBOY
WBOY원래의
2016-05-16 20:02:491618검색

이제 많은 공동 구매 웹사이트에서 남은 시간을 표시합니다. 남은 시간 표시는 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 레이아웃

남은 시험 시간:

코드 복사코드는 다음과 같습니다:
c7df19b33ab56fd0abf76d59651fdd2c0054bdf357c58b8a65c66d7c19c8e4d114시5866ea4e677c7ac366bd7423f1dcdb820054bdf357c58b8a65c66d7c19c8e4d114분c7e9691220380280e80f2ec34b521e1e0054bdf357c58b8a65c66d7c19c8e4d114초

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&#63;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에서 카운트다운을 구현하는 핵심 코드입니다. 모두의 학습에 도움이 되기를 바랍니다.

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