회원가입시 생년월일 1970~이전 오류 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

회원가입시 생년월일 1970~이전 오류 정보

회원가입시 생년월일 1970~이전 오류

본문

오류가 나는곳의 주소를 알려주시면 더 빠르고 정확하게 답변 받을 수 있습니다.

오류 주소 :

Warning: mktime(): Windows does not support negative values for this function in d:\web\xxxxxxx\bbs\calendar.php on line 67

Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in d:\web\xxxxx\bbs\calendar.php on line 68

회원가입시 생년월일 입력할때 1970 이전 선택하면 오류가 뜹니다.

어느 부분을 수정해야 할까요?

calendar.php 에

18줄 // mktime() 함수는 1970 ~ 2038년까지만 계산되므로 사용하지 않음
19줄 // 참고 : http://phpschool.com/bbs2/inc_view.html?id=3924&code=tnt2&start=0&mode=search&s_que=mktime&field=title&operator=and&period=all

윈도우 서버에서 오류가 난다는 말인가요? (보고도 무슨 말인지 모르겠어요)

우선 67,68줄 주석처리하고 사용하고 있는데 해결 방법 좀 알려주십시오

댓글 전체

http://www.sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=9697

그누보드 / bbs / calendar.php 에서 아래의 내용을 추가 및 수정합니다.

// 해당월의 1일
$mktime = mktime(0,0,0,$mm,1,$yyyy);
$dt = getdate(strtotime(date("Y-m-1", $mktime)));


위의 2줄을 아래와 같이 수정합니다.


// 1970년 회원가입 오류 해결을 위한 함수 선언  ( 작성자 : 해결사 님 )
function mk_time($m,$d,$y){

  if($y<1970){

    $mk_time=mktime(9,0,0,1,1,1970);

    $i=1969;

      if(checkdate($m,$d,$y)){
          do{
            for($j=12;$j>=1;$j--){
              if($m==$j && $y==$i){
                for($k=31;$k>=$d;$k--){
                  if(checkdate($j,$k,$i)) {
                    $time++;
                  } else { //
                  }
                } //for k
                break;
              } else {
                for($z=31;$z>=1;$z--){
                  if(checkdate($j,$z,$i)) {
                      $time++;
                  } else { //
                  } //if
                } //for z
              }
          }  //for j
          $i--;
        }while($i>=$y);
        return $mk_time-(($time)*24*3600);//24*3600=1day
      } else {
        return $mk_time;
      }
  } elseif($y>2038){

    $mk_time=mktime(9,0,0,1,1,2038);

    $i=2039;

      if(checkdate($m,$d,$y)){
          do{
            for($j=12;$j>=1;$j--){
              if($m==$j && $y==$i){
                for($k=31;$k>=$d;$k--){
                  if(checkdate($j,$k,$i)) {
                    $time++;
                  } else { //
                  }
                } //for k
                break;
              } else {
                for($z=31;$z>=1;$z--){
                  if(checkdate($j,$z,$i)) {
                      $time++;
                  } else { //
                  } //if
                } //for z
              }
          }  //for j
          $i++;
        }while($i>=$y);
        return $mk_time-(($time)*24*3600);//24*3600=1day
      } else {
        return $mk_time;
      }
  } else {//if 2038
    return mktime(0,0,0,$m,$d,$y);
  }
}

// 해당월의 1일
$mktime = mk_time($mm,1,$yyyy);
$dt = '1';
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT