시스템 설정 > [고급 설정] 탭 > 짧은 주소 사용을 "모든 주소 형태를 사용"으로 설정
짧은주소를 모든 주소 형태를 사용 해버리면
게시글을 읽고 있는 상태는
아래의 ACT 들이 아닌데도 불구하고
아래의 코드 중 하나의 act로 인식해버립니다.
{@ $nonono_act = array(
'dispMemberSignUpForm',
'dispMemberLoginForm',
'dispMemberFindAccount',
'dispMemberInfo',
'dispMemberModifyPassword',
'dispMemberModifyEmailAddress',
'dispMemberModifyInfo',
'dispMemberLeave',
'dispMemberScrappedDocument',
'dispMemberSavedDocument',
'dispMemberOwnDocument',
'dispCommunicationFriend',
'dispCommunicationMessages',
'dispNcenterliteUserConfig',
'dispNcenterliteNotifyList',
'dispLoginxeclientListProvider',
'dispAjaxboardNotificationConfig'
)}
혹시 해결 방법이 있을까요?
http://www.nug.kr/board
메인 화면에는 분명 최하단에
뜨나
뜨나
뜨나
뜨나
뜨나
이게 뜹니다 하지만
아무 게시글 글읽기 화면에서는 (글쓰기 화면에는 안뜨는게 정상입니다)
뜨나 이게 안뜹니다.
뜨나는 cond="!isset($act) && !in_array($act, $nonono_act)"에 담겨있습니다.
XE와 호환되는 주소 형태만 사용로 하면 게시글 읽기에서 정상작동합니다
추가로 XE와 호환되는 주소 형태만 사용으로 하더라도
제가 검색창인 'IS'를 빼두었음에도 불구하고
act=IS 화면에서도 안뜹니다.
if(Context::get('act') != 'dispBoardWrite')
이런식으로 한것은 정상 작동하는데
cond="!isset($act) && !in_array($act, $nonono_act)"
이방식은 작동이 안되는것 같습니다.
cond="!isset($act) && !in_array($act, $nonono_act)"
해석: $act라는 변수가 존재하지 않거나 NULL이며, $nonono_act 배열에 포함되어 있지도 않음
존재하지 않는 변수가 배열에 포함되어 있는지 아닌지 왜 체크하지요? 조건문이 이상하네요.
$act가 'IS'인 경우, 변수가 존재하므로 위의 조건은 거짓이 됩니다. 따라서 안 뜨는 것이 정상입니다.
맨 앞의 !가 잘못 들어간 것이거나, &&가 아닌 ||를 의도하신 것이 아닌지...
어떤 변수는 1) 존재하지 않을 수도 있고, 2) 존재하지만 NULL일 수도 있고,
3) 존재하지만 빈 문자열일 수도 있고, 3) dispBoardWrite와 같은 값이 들어 있을 수도 있습니다.
isset()은 1,2와 3,4를 구분하는 함수입니다. empty()는 1,2,3과 4를 구분하는 함수이고
최신 PHP에서는 1과 2,3,4를 구분하도록 요구하는 경우도 점점 많아지고 있어요.
현 상황에서 가장 중요한 것은 $act라는 변수가 존재하는지, 만약 존재한다면 어떤 값이 들어 있는지입니다.
변수에 뭐가 들어 있는지 확인하지 않은 상태에서 주변 코드만 보는 것은 의미가 없어요.
echo나 print_r()은 존재하지 않는 변수, NULL, 빈 문자열을 구분할 수 없으니
반드시 var_dump()나 var_export()를 사용해서 변수의 실제 상태를 찍어보시기 바랍니다.