날짜비교하기 질문드립니다. 채택완료
기존에 g5_member 테이블에 있는 mb_intercept_date 컬럼의 데이터타입 형태를
varchar(8) -> datetime 으로 변경하였는데요 그런후 mb_intercept_date 시간까지 입력이 되도록 설정을 했습니다. 근데 문제는 아래처럼 //원래소스 주석처리된 비교문으로 하면 잘 되는데
이젠 시간값가지 비교해야 하므로 아래처럼 수정하였더니 로그인도 안되고 alert도 안뜨고 그냥 아예 먹통이 되버립니다.
혹시 제가 비교문을 잘못 작성하였나요? 이거때문에 다른곳이 문제인줄 알고 벌써 2일째 삽질하고 있다가 오늘 우연히 원인을 찾았습니다-_-...
시간은 echo로 찍어봤지만 모두 정확합니다.
* mb_intercept_date 저는 이 컬럼을 차단일이 아닌 설정해둔 날짜를 오늘 날짜와 비교 체크했을때 기간이 만료되었는가를 비교하기 위해 쓰고있습니다.
</p>
<p>$mb_end_date = date('YmdHis', strtotime($mb['mb_intercept_date'])); //설정시간
$mb_now_date = date('YmdHis', strtotime(G5_SERVER_TIME)); //현재 시간</p>
<p> </p>
<p>// 원래 소스 if ($mb['mb_intercept_date'] && $mb['mb_intercept_date'] <= date("Ymd", G5_SERVER_TIME)) {</p>
<p>
if ($mb_now_date >= $mb_end_date) {
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb['mb_intercept_date']);
alert(_t('회원님의 아이디는 접근이 금지되어 있습니다.').'\\n'._t('처리일').' : '.$date);</p>
<p>}</p>
<p>
답변 4개
답변에 대한 댓글 2개
댓글을 작성하려면 로그인이 필요합니다.
시간은 echo로 찍어봤지만 모두 정확합니다.<--- 2019-06-30 23:59:59 이런 형태로 나온다면
1,2행은 필요 없음
6행
if( G5_TIME_YMDHIS > $mb['mb_intercept_date']){
7행 \\1 년 \\2 월 \\3 일 처럼 띄워야 합니다.
8행 : 먹통 원인은 여기 같아 보입니다
alert(_t('회원님의 ---> alert( '회원님의 ~~ ._t('처리일'--> alert( '처리일'
_t 라는 함수가 어떤 것인지 모르겠지만 필요 없어보이고 정의된 함수가 없다면 당연히 오류입니다
답변에 대한 댓글 3개
8행은 사실상 조건문이 주석처리된 걸로 진행될때는 문제없이 잰행되는 구문라인 입니다.
저도 그냥 빌더를 다운받아 쓰는거라 사실상 _t 가 뭔진 모르겠지만 저건 그냥 평문으로 작성해도
잘 작성되는 alert 호출 형태입니다.
그리고 mb_intercept_date에는 항상 값이 입력 되어잇는 상태인가요?
값이 없으면 접근금지가 맞나요?
근데 관리자 승인시 mb_intercept_date 데이터에 필수로 값이 입력어집니다.
댓글을 작성하려면 로그인이 필요합니다.
아래 구문을 추가해주세요..
if ($mb['mb_intercept_date'] && $mb_now_date >= $mb_end_date) {
답변에 대한 댓글 3개
그리고 저 구문이 있어도 결과는 동일합니다 ㅠㅠ
해당 아이디가 접근 차단이 되었다는 건데요..
설정된 날짜와 시간이 현재 시간보다 이전이라면,
당연히 접근이 안되는게 맞는 겁니다.
한마디로 $mb['mb_intercept_date'] 날짜/시간이 오늘 날짜/시간보다 작으면 저 조건문이 실행이 되어야 합니다.
조건문은 분명 맞는데 왜 자꾸 먹통이되는지 모르겠습니다.
로그인시 login_check.php 말고 또 mb_intercept_date 데이터를 검증하는 부분이 있는건지...
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
우선 지금 다시 ftp에 파일을 호스팅에 올리고 있는데 다시한번 해보겠습니다.