회원 가입시 생년월일 달력이 1970년 이전으로 가니 오류가 발생하네요
회원 가입시 생년월일 달력이 1970년 이전으로 가니 오류가 발생하네요.
서버는 윈도우XP Pro에 APM으로 돌립니다.
혹시 원인이나 해결 방법을 아시면 도움 부탁드립니다.
오류 내용을 보니 윈도우에서 mktime() 함수와 date() 함수를 지원하지 않는다는데..
php를 전혀 몰라서 어떻게 해야 할 지 모르겠네요...^^
<오류 내용>
Warning: mktime(): Windows does not support negative values for this function in c:\apm\htdocs\gnu4\bbs\calendar.php on line 67
Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in c:\apm\htdocs\gnu4\bbs\calendar.php on line 68
서버는 윈도우XP Pro에 APM으로 돌립니다.
혹시 원인이나 해결 방법을 아시면 도움 부탁드립니다.
오류 내용을 보니 윈도우에서 mktime() 함수와 date() 함수를 지원하지 않는다는데..
php를 전혀 몰라서 어떻게 해야 할 지 모르겠네요...^^
<오류 내용>
Warning: mktime(): Windows does not support negative values for this function in c:\apm\htdocs\gnu4\bbs\calendar.php on line 67
Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in c:\apm\htdocs\gnu4\bbs\calendar.php on line 68
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 9개
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;
}
}//if 1970
else
{
return mktime(0,0,0,$m,$d,$y);
}
}
위 코드를 calendar.php 또는 lin.php 등에 넣으시고
다음 코드를 찾아서...68라인쯤되나요? 흐흐
// 해당월의 1일
$mktime = mktime(0,0,0, $mm,1,$yyyy);
요거를
$mktime = mk_time($mm,1,$yyyy); <--mktime() 함수대신 사용자가 만든 mk_time함수로 대체하는거지요
수정합니다.
근데 결정적으로 아래 문장이 걸리네요. date 와 strtotime 함수등도 마찬가지로 1970년에 영향을 받거든요.
그래서 요리조리 고민하다가 걍 제가 주고싶은 값을 주었어요. 어차피 $dt값을 사용하는 부분이 없길래....
어떤 알수없는 문제가 발생할지 모르지만 일단 제대로 실행은 됩니다.
여하튼 아래문장을
$dt = getdate(strtotime(date("Y-m-1", $mktime)));
요렇게 수정합니다.
$dt = '1';
한번해보세요. 회원가입시 생일선택만되면 DB에는 datetime형이 아닌 vaCHAR형에 저장하기 때문에
1970과는 관계가 없습니다.
사실 저도 잘 모르지만 답이 없어서 제가 아는선에서 해결해 보았습니다.
아이디처럼 제 문제를 해결해 주셨네요..
혹시 비용 청구를 하시는 건 아니겠죠...ㅎ^^ㅎ
많은 도움 얻고 갑니다.....
근데 다른 분들은 오류가 안나나요?
저도 윈도우인데...^^
Warning: mktime(): Windows does not support negative values for this function in C:\Inetpub\wwwroot\watchdog\bbs\calendar.php on line 74
else
{
return mktime(0,0,0,$m,$d,$y);
}
입니다.
아래 코드로 바꾸어 주시면 됩니다.
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);
}
}
아구 추워요~ 감기조심하세요~~~~~~~