웹마스터 팁

 

가입폼 글자수 입력 제한을 수정 하려고 여러모로 검색 해봤지만, 제가 검색 해본 바로는 어디에도 (지금 버젼에서) 되는 방법은 없었습니다.

그래서 여러모로 혼자 코드와 씨름 해본 결과 해결방법을 찾아서, 저 처럼 해매시는 분들 있으실까봐 공유합니다.

 

검색결과로 보아 XE 옜날 버전에서는 filter 기능으로 했던것 같은데 언젠가 부터 ruleset 으로 바뀐것 같습니다.

XE 옜날 버전은 써보지 않았지만, 지금(XE 1.5.1.12)은 이 방법만 제대로 적용이 되고 있는것 같습니다.

(저 처럼 해매 시는 분들 위해 과정 하나하나 설명하겠습니다.)

 

 

먼저 이를 다루는 모듈은 /modules/member/ 입니다.

 

①    /modules/member/skins/default/filter 안에 있는 signup.xml 필터 부분을 수정해도 적용이 안됩니다. (시도1 실패)

 

②    /modules/member/ruleset 안에 있는 signup.xml 을 수정해도 적용이 안됩니다. (시도2 실패)

 

③    그래서 코드를 자세히 살펴본 결과 /files/ruleset/insertMember.xml 에 연결 되어있음을 발견, 그래서 변경 시도, 하지만 nobody 755 권한으로 되어 있어서, 파일 자체를 수정 불가능. ftp 에서 권한 수정도 불가능(시도3 실패)

 

④    insertMember.xml 을 707 권한으로바꾸기 위해

<?php
$cmd = "chmod -R 707 files";
@exec($cmd);
echo "변경되었습니다.";
?>

라는 chmod707.php 파일을 만들어서 root 디렉토리에 ftp를 통해 업로드 후에 http://www.homepage.com/chmod707.php 입력해서 권한 변경

다시 insertMember.xml 수정후 업로드 후에 아까 변경한 권한을 다시 변경하기 위해 chmod707.php 안의 $cmd = "chmod -R 707 files"; $cmd = "chmod -R 755 files"; 로 변경후 실행으로 권한 원래대로 복구.

가입폼 적용 되었나 시도 하니 성공! but... 나중에 다시 보니 insertMember.xml 파일이 수정전 파일로 변경 되어 있고 적용도 다시 안된 상태 (시도4 실패)

 

⑤    왜 그런가 봤더니 Admin 관리자 페이지에서 '캐쉬 파일 재생성' 을 누르면 insertMember.xml 도 이전 상태로 복원 된다는것을 알게됨

그래서, 그럼 복원 하는 파일을 바꾸자 해서 찾아보니 그런거 없음, 그래서 코드를 다시 유심히 보니 답은 /modules/member/member.admin.controller.php 에 있었음.

function _createSignupRuleset($signupForm, $agreement = null) (줄 239정도) 에서 부터 (줄 282정도) 까지 가 insertMember.xml 파일을 만드는 코드!

 

if ($formInfo->required || $formInfo->mustRequired){
if($formInfo->type == 'tel' || $formInfo->type == 'kr_zip'){
$fields[] = sprintf('<field name="%s[]" required="true" />', $formInfo->name);
}else if($formInfo->name == 'password'){
$fields[] = '<field name="password"><if test="$act == \'procMemberInsert\'" attr="required" value="true" /><if test="$act == \'procMemberInsert\'" attr="length" value="3:20" /></field>';
$fields[] = '<field name="password2"><if test="$act == \'procMemberInsert\'" attr="required" value="true" /><if test="$act == \'procMemberInsert\'" attr="equalto" value="password" /></field>';
}else if($formInfo->name == 'find_account_question'){
$fields[] = '<field name="find_account_question"><if test="$act != \'procMemberAdminInsert\'" attr="required" value="true" /></field>';
$fields[] = '<field name="find_account_answer"><if test="$act != \'procMemberAdminInsert\'" attr="required" value="true" /><if test="$act != \'procMemberAdminInsert\'" attr="length" value=":250" /></field>';
}else if($formInfo->name == 'email_address'){
$fields[] = sprintf('<field name="%s" required="true" rule="email"/>', $formInfo->name);
}else if($formInfo->name == 'user_id'){
$fields[] = sprintf('<field name="%s" required="true" rule="userid" length="3:20" />', $formInfo->name);
}else if(strpos($formInfo->name, 'image') !== false){
$fields[] = sprintf('<field name="%s"><if test="$act != \'procMemberAdminInsert\' && $__%s_exist != \'true\'" attr="required" value="true" /></field>', $formInfo->name, $formInfo->name);
}else{
$fields[] = sprintf('<field name="%s" required="true" />', $formInfo->name);
}
}

 

이제 수정 시작!

  

if ($formInfo->required || $formInfo->mustRequired){
if($formInfo->type == 'tel' || $formInfo->type == 'kr_zip'){
$fields[] = sprintf('<field name="%s[]" required="true" />', $formInfo->name);
}else if($formInfo->name == 'password'){
$fields[] = '<field name="password" length="6:20"><if test="$act == \'procMemberInsert\'" attr="required" value="true" /><if test="$act == \'procMemberInsert\'" attr="length" value="6:20" /></field>';
$fields[] = '<field name="password2"><if test="$act == \'procMemberInsert\'" attr="required" value="true" /><if test="$act == \'procMemberInsert\'" attr="equalto" value="password" /></field>';
}else if($formInfo->name == 'find_account_question'){
$fields[] = '<field name="find_account_question"><if test="$act != \'procMemberAdminInsert\'" attr="required" value="true" /></field>';
$fields[] = '<field name="find_account_answer"><if test="$act != \'procMemberAdminInsert\'" attr="required" value="true" /><if test="$act != \'procMemberAdminInsert\'" attr="length" value=":250" /></field>';
}else if($formInfo->name == 'email_address'){
$fields[] = sprintf('<field name="%s" required="true" rule="email"/>', $formInfo->name);
}else if($formInfo->name == 'user_id'){
$fields[] = sprintf('<field name="%s" required="true" rule="userid" length="4:12" />', $formInfo->name);
}else if(strpos($formInfo->name, 'image') !== false){
$fields[] = sprintf('<field name="%s"><if test="$act != \'procMemberAdminInsert\' && $__%s_exist != \'true\'" attr="required" value="true" /></field>', $formInfo->name, $formInfo->name);
}else if($formInfo->name == 'user_name'){
$fields[] = sprintf('<field name="%s" required="true" length="2:10" />', $formInfo->name);
}else if($formInfo->name == 'nick_name'){
$fields[] = sprintf('<field name="%s" required="true" length="2:10" />', $formInfo->name);
}else{
$fields[] = sprintf('<field name="%s" required="true" />', $formInfo->name);
}
}

 

 

결론은  ->  ⑤번 적용 후 ④번 적용 하면 됩니다. (⑤번만 하고  Admin 관리자 페이지에서 캐쉬 재생성 해도 될지도? 모르겠네요.)

태그 연관 글
  1. [2017/07/25] 묻고답하기 [제발 부탁드려요]Content 위젯 기본 스킨(default) 게시물 제목이 잘리는 현상. by 열라정수 *2
  2. [2011/09/16] 묻고답하기 가입폼관리를 통해 변수 추가시에.. by ibwj
  3. [2009/07/14] 묻고답하기 회원관리 화면에서 "확장변수"에 관한 질문입니다!! by 미누7 *1
  4. [2009/07/14] 묻고답하기 "확장변수"가 테이블로 따로 떨어져 나갔다?? by 글쓴이 *2
  5. [2008/02/02] 묻고답하기 위젯에서 가입폼 확장 변수 값을 사용하려면? by 학생a
제목 글쓴이 날짜
grep로 하위 폴더내 파일까지 내용 검색하기 fsfsdas 2011.02.20
XE 검색 속도 향상 팁(확장 변수 검색시) [5] 명드래곤 2011.02.26
이용자가 댓글을 닉네임으로 검색할순 없나요? [2] gc00 2011.03.04
구글검색 색인 잘되는 확실한 효과. 레이아웃 스킨 제작시 참고하기면 좋습니다. [8] NetCabin 2011.04.21
모바일레이아웃에서의 통합검색 [11] 카르마 2011.05.19
자체 우편번호 검색DB 사용하기 우진홈 2011.08.11
관리툴 회원관리에서 확장변수로 검색 시 숫자 이외 검색불가 해결 방법 카리브 2011.10.10
[레이아웃관련] 구글검색 달기 file 인터니즈2 2011.11.04
XE 1.5 에서 확장변수 검색이 안 되시는 경우 해결책 [5] sejin7940 2012.01.24
업데이트 후 사이트 통함검색이 안되시는 분 보십시오^^ RGM 2012.02.12
그룹별 회원정보 검색 & 회원의 추가가입폼 복수 검색 팁 (XE 1.5) sejin7940 2012.03.22
통합검색 기능에 권한 적용하기 (완전 차단 필요할 때) [9] file 모노소프트 2012.04.30
가입폼 글자 수 입력 제한 수정 방법 입니다. (검색해도 어디에도 되는게 없어서 올립니다.) [7] easeE 2012.05.03
관리자에서 그룹검색을 이용한 회원목록 제대로 안 보일때.. [2] sejin7940 2012.06.01
다국어시, 언어코드 찾기 후 검색을 한 뒤 적용 누르면 적용 안 되는 버그 수정 sejin7940 2012.06.08
관리자의 회원포인트목록 에서 ID/닉네임 등으로 검색하는 소스 추가 [3] sejin7940 2012.06.25
xeshop에서 비회원 주문번호 조회 검색 가능하게 하기. [2] 리버즈 2012.12.15
모바일 게시판의 목록수 / 페이지수 / 검색시 목록수 등을 별도 설정할 수 있게하려면 [2] sejin7940 2012.12.30
네이버 검색 API XE하고 연동하기 [3] mindpainter 2013.01.09
게시판 하단 검색대상의 순서,노출항목 들 제어하는 방법 [1] sejin7940 2013.10.15