포럼
member.view.php에 있는 function dispMemberLoginForm() 에서 Context::set('act', 'procMemberLogin'); 문제
2012.05.28 12:47
XE Core 1.4x
/**
* @brief 로그인 폼 출력
**/
function dispMemberLoginForm() {
if(Context::get('is_logged')) {
Context::set('redirect_url', getUrl('act',''));
$this->setTemplatePath($this->module_path.'tpl');
$this->setTemplateFile('redirect.html');
return;
}
// 템플릿 파일 지정
Context::set('referer_url', $_SERVER['HTTP_REFERER']);
$this->setTemplateFile('login_form');
}
댓글 6
-
CMD
2012.05.29 20:10
-
엑스셀코드
2012.05.29 21:00
답변 감사합니다.
member모듈의 login_form.html 을 보면
<form ruleset="@login" action="./" method="post" id="fo_member_login" class="form">
<input type="hidden" name="success_return_url" value="{getUrl('act', '')}" />
<input type="hidden" name="act" value="procMemberLogin" />
코어의 배포 스킨에 보면 이런식으로 act에 대해 직접 value값을 "procMemberLogin"으로 직접 지정하고 있는데요. -
CMD
2012.05.29 21:14
아마도 타 스킨과의 호환을 위해 그렇게 한 것 같아요.
-
엑스셀코드
2012.05.29 21:39
음... @login ruleset이 적용되는경우가 message 모듈에도 있는데요.
그곳에서는 $act 값이 NULL 이거던요.
제생각에는 추가된 Context::set('act', 'procMemberLogin'); 은 불필요하고 또 혼란만 야기 시키는것 같습니다.
-
CMD
2012.05.29 21:47
그러고 보니 불필요한 것 같기도 하네요...
-
똥똥
2012.06.01 18:59
룰셋 최초 적용시 act값을 명시하지 않는 경우 정상 동작이 어려웠으므로 해당 부분이 추가된 바 있었습니다. (룰셋 최초 논의 당시 act는 무조건 view.php 명시하도록 정의했었습니다.) 해당 부분은 코드 검토하여 수정 여부를 결정하도록 하겠습니다.
XE 1.5부터는 룰셋을 주로 사용하는데 이 룰셋은 필터와 달리 act를 필터의 xml파일에 명시해주는게 아니라 직접 스킨에서 <input type="hidden" name="act" value="{$act}">이런식으로 추가해 줘야해요. 문제는 $act변수가 현재의 액션 값을 담고 있는 변수이기 때문에 dispMemberLoin이 들어가 있어요. 따라서 <input type="hidden" name="act" value="procMemberLogin">이 되어야 정상적으로 로그인이 되는데 위에 설명한 것처럼 현재의 act값이 들어가 있기 때문에 <input type="hidden" name="act" value="dispMemberLoginForm">가 되어버려요. 그래서 Context::set('act', 'procMemberLogin');을 통해서 $act는 무조건 procMemberLogin으로 해버리는 것이지요.