웹마스터 팁
가입폼 글자 수 입력 제한 수정 방법 입니다. (검색해도 어디에도 되는게 없어서 올립니다.)
2012.05.03 02:51
가입폼 글자수 입력 제한을 수정 하려고 여러모로 검색 해봤지만, 제가 검색 해본 바로는 어디에도 (지금 버젼에서) 되는 방법은 없었습니다.
그래서 여러모로 혼자 코드와 씨름 해본 결과 해결방법을 찾아서, 저 처럼 해매시는 분들 있으실까봐 공유합니다.
검색결과로 보아 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 관리자 페이지에서 캐쉬 재생성 해도 될지도? 모르겠네요.)
- [2017/07/25] 묻고답하기 [제발 부탁드려요]Content 위젯 기본 스킨(default) 게시물 제목이 잘리는 현상. *2
- [2011/09/16] 묻고답하기 가입폼관리를 통해 변수 추가시에..
- [2009/07/14] 묻고답하기 회원관리 화면에서 "확장변수"에 관한 질문입니다!! *1
- [2009/07/14] 묻고답하기 "확장변수"가 테이블로 따로 떨어져 나갔다?? *2
- [2008/02/02] 묻고답하기 위젯에서 가입폼 확장 변수 값을 사용하려면?
댓글 7
-
도라미
2012.05.03 08:05
Tip게시판으로 옮겨주세요 -
국가정보보안
2012.05.03 09:47
작성하신 글 형식에 의하여 XE 사용팁 게시판으로 게시글이 이동되었습니다.
-
easeE
2012.05.03 12:16
앗!! 팁 게시판으로 왔네요! ㅎㅎㅎ 앞으로도 좋은글 올리도록 해볼게요~ = )
-
EnuX
2012.05.06 07:29
앗 이 방법으로 하니까 되네요
계속 질문해도 필터만 수정하라고 하시고 되진 않았는데 이 방법으로 하니까 한방이네요 -
zero28
2012.05.08 08:30
1.5.2.4 기준
3번의 insertMember.xml 권한조정 없이 수정 잘 되고요(4번 과정 필요 없음)
캐시파일재생성 해봤는데 하나 마나 의미 없습니다 막 자동으로 파일 생성되고 그런 게 전혀 없음
글쓴이 분 말대로 1번 2번은 역시 전혀 되질 않고요 5번 적용되는 거 맞네요
3번만 따로 해보진 않았는데 3번은 별로 의미가 없는 것 같습니다
filter 명령 추가해야 되는데 예전엔 1번에 넣으면 적용됐었는데
5번 3번 파일 다 넣어 봐도 하나도 적용 안되고, 방법을 모르겠네요
방법 아는 분 댓글 좀
하여튼 이래서 업데이트가 싫어요 뭐든 예전 같지가 않고 문제가 꼬리에 꼬리를 무니
-
easeE
2012.05.08 21:22
글쓴이 분 말대로 1번 2번은 역시 전혀 되질 않고요 5번 적용되는 거 맞네요
-> 적용이 된다는 건가요?
번 3번 파일 다 넣어 봐도 하나도 적용 안되고, 방법을 모르겠네요
-> 아니면, 안된다는 건가요? 지금은 회원 가입 창에서 filter 를 전혀 사용 안하고 오직 ruleset 만 사용 합니다.특정한 form 에 대해 추가 하는건, '변경 후' 코드 에서 16~19줄 가 추가한 부분 입니다.
-
10000kg
2012.05.11 21:52
잘됩니다. 4 번 5번하니 잘되네요 감사합니다.
제목 | 글쓴이 | 날짜 |
---|---|---|
일반 회원이나 손님도, 제목의 글자색상 및 굵기 설정 가능하게. [1] | sejin7940 | 2010.07.14 |
초보의 모바일 페이지 등록하기 [5] | 조량 | 2010.07.15 |
지식인 스킨(naver_jisikin) 의견에 글이 겹쳐보일때 [1] | 조슈아킴 | 2010.07.15 |
게시판 에디터 확장 컴퍼넌트 중 원하는 항목을 밖에다가 버튼화 [3] | sejin7940 | 2010.07.18 |
회원확장정보 변수 (출처:sMaker) [5] | 시니시즘 | 2010.07.19 |
[최근 글 탭 형식 출력 위젯] 탭 제목이 브라우저 타이틀이 아닌 설명으로 나오게하기 [1] | 소렌트. | 2010.07.19 |
이미 알고 계신- 나눔고딕체를 에디터 기본 글꼴로 하는 방법 ^^" [5] | ZHANG™ | 2010.07.24 |
1.4.2 -> 1.4.3 업데이트 후 화면 백지 상태 해결방법 [2] | 니오티 | 2010.07.25 |
이미지 여러개 등록시 공백 팁입니다. 10.07.29 10:05 수정 [15] | 스카이피아 | 2010.07.25 |
XE 용량 효과적으로 줄이기 [13] | 코스트렐리아 | 2010.07.30 |
모바일 레이아웃 로그인페이지 개선방법 [4] | 스카이피아 | 2010.08.01 |
페이지 모듈 사용시 여백 관련한 팁! | sejin7940 | 2010.08.02 |
검정 배경 홈페이지용 회원 정보 스킨 | LutZ | 2010.08.03 |
회원가입폼 내멋대로 내맘대로 하기. [9] | 지인짜 | 2010.08.04 |
브라우저에 설치된 flash player의 version 알아 보기 [2] | 레미짱 | 2010.08.06 |
문서 서식에 관한 정보 [4] | YO-DA | 2010.08.06 |
회원 정보 및 회원 리스트에 회원 성별 앞에 아이콘 넣기 [5] | 늘푸른이 | 2010.08.06 |
게시판에 사전질문 넣기 특히 확장 변수 없는 지식in 게시판 - 초보자용 [3] | THEOTHERS | 2010.08.07 |
관리자페이지 회원목록을 일반페이지에서 사용하기 [5] | 늘푸른이 | 2010.08.07 |
영영사전이 필요하십니까? | 레미짱 | 2010.08.12 |