웹마스터 팁
외부로그인-특정 페이지에 로그인창만 나타나게 하고 로그인하면 메인페이지로 이동하기
2008.01.02 19:21
제로보드 사이트를 거의 다 뒤지다시피 했는데 화면에 로그인 창만 하나 띄우고 로그인을 하면 홈페이지 메인이 나올 수 있게 하는 팁이 없고 질문만 많더군요.ㅜㅜ
근데, 우연치 않게 도데군님 게시물(http://www.zeroboard.com/16309252) 을 읽고 드디어 성공해서 도움이 될까 올려봅니다. 먼저 도데군님께 감사드립니다~^^
도데군님이 너무도 상세하게 글을 적어 놓으셔서 실은 제가 말씀드릴 것은 그닥 없습니다. 다만, Tip을 더 드리자면...
1. 도데군님이 적어놓으신 모든 것을 그대로 해야 합니다. 다만, 프로그래밍 코드만 13번째줄까지 그대로 사용합니다.
2. 14번째줄 부터는 else라인인데요, 이 곳도 중요합니다. 여기에 도데군님이 적어놓으신 코드들을 몽땅 다 지우시고 내가 이동할 페이지를 적어줘야 합니다. 대부분 메인으로 이동해야 하니까 아무래도 else문은 다음과 같이 정의되어야 하겠죠.
else (
Header("Location:{$zbxe_url_path});
}
위에서 $zbxe_url_path는 도데군님 설명대로 zbxe가 설치된 URL이면서 저 URL을 브라우저에서 입력할 경우 메인페이지로 이동하는 URL인 것은 아시겠죠?
위에처럼만 하시면 특정 페이지를 치고 들어갔을때 자신의 홈페이지 로그인 화면만 덩그러니 나타나고 로그인 후에는 권한설정에 따라 홈페이지 메인화면이 나타나게 할 수 있습니다. 제가 지금 만들고 있는 홈페이지는 회원가입이 없고 익명의 사람들이 주 타게팅된 홈페이지입니다. 이러다보니 관리자가 관리를 하려면 특정 페이지를 쳤을 때 로그인 화면이 나타나도록 해야 하는데 이게 잘 안되서 애를 태웠더랬죠.^^;;
다시한번 좋은 팁 주신 도데군님께 감사드립니다. ^-^
- [2021/02/26] 묻고답하기 외부페이지가 레이아웃을 완전히 벗어나 표시됩니다. *1
- [2019/10/20] 묻고답하기 소셜xe 오류이후 관리자 로그인 기능이 사라졌습니다.
- [2019/03/17] 묻고답하기 제 사이트가 갑자기 로그인이 먹통입니다.
- [2017/12/20] 묻고답하기 로그인이 되지 않습니다. *3
- [2017/07/20] 묻고답하기 이거 로그인 대문? 어떻게 하나요ㅜㅜ 봐도 모르겠어요ㅜㅜ *1
댓글 11
-
푸른솔아
2008.01.03 13:03
-
레드맨
2008.01.15 00:54
에구구... 저도 초보니까 가능하면 자세하게 답변드리겠습니다.
근데요, 한가지 걱정되는건 저도 무수히 시행착오를 하고 연구한 다음에야 어떻게 돌아가는 건지 이해하거든요. 가르쳐드리는건 문제가 아닌데요~ 낚시하는 법보다 물고기를 바로 드려 버리면 오히려 푸른솔아님께 안 좋을까 걱정됩니다. 조금이라도 이해하시길 바라면서 최대한 자세히 씁니다. 아무튼...anyway....
그리고 답변이 늦었는데요, 제 나름대로 소스의 신뢰성을 검토하느라 좀 늦었습니다. 가장 걱정했던 세션처리 부분도 문제가 없음을 알려드립니다.1. 일단 제가 설명드리는 건 복사하거나 프린트 해서 보시고 도데군님 글을 브라우저에 띄워 같이 봐주셨으면 하네요. 여기에 다 적을 수도 있지만 도데군님글이 original이라 ^^; 도데군님의 설명 위주로 말씀드릴게요~
2. 우선 1번째 나와있는 소스부분은 도데군님 설명대로라면 mt5test.php에 들어가야 할 내용입니다. 그리고 outlogin.php에 들어가야 할 내용은 2번째 소스구요.
3. 그러면, 일단 mt5test.php를 만듭니다.실은 이 파일의 이름이나 위치는 관계 없습니다. 그래서 이름을 바꾸겠습니다. 이름은 prelogin.php라고 하죠. 위치는 푸른솔아님의 zbxe폴더 밑에 outlogin이라는 폴더를 만들어서 그 안에 넣도록 합시다. prelogin.php안에는 아무것도 없구요. 빈문서인데 이름이 prelogin.php인거죠. 그렇게 하고 나서 그 안에 <!php !> 요렇게 적고나서 <!php 와 !>사이에 도데군님글에 있는 1번째 소스를 몽땅 복사해 넣습니다. 그렇게 하고나서 else{}안에 있는 내용을 모두 지워주구요, 나머지는 1번째 소스에 대해서 도데군님이 설명하신 대로 따라 하시면 됩니다. 그리고 마지막으로 else{}안에 제가 위에 적어놓은대로 Header("Location:{$zbxe_url_path}); 라고 적습니다. 그러니까 도데군님의 1번째 소스를 prelogin.php에 복사하는데 <! php 와 !>안에 복사해 넣으시는 것 잊지마세요. 이렇게 하고 나면 푸른솔아님의 zbxe폴더 밑에 outlogin이라는 폴더가 생겼구요, 그 안에 prelogin.php를 만드신 겁니다. 그럼 만약에 prelogin.php를 실행해 보려면 어떻게 할까요? 푸른 솔아님의 홈페이지 주소가 www.home.co.kr/zbxe/ 이라면 www.home.co.kr/zbxe/outlogin/prelogin.php가 되겠죠.
4. 설명을 잠깐 드리자면 도데군님의 1번째 소스는 크게 보면 4부분으로 되어 있습니다.
<!php -->요놈은 php라는 프로그램언어의 시작을 나타내는 시작 기호입니다.
----------------------------------------------------------
1) 위치 정의
- 내 서버경로 정의 : $zbxe_server_path --->이놈의 경로는 잘 아시고 계실테지만 확인사살 겸으로 말씀드리면 zbxe관리자페이지에서 외부페이지 만들때 경로입력부분에 친절히 나와 있으니 참고하세요~
- 내 홈페이지 URL정의 : $zbxe_url_path
----------------------------------------------------------
2) 세션처리 : 1번째 소스에 처음 나타나는 if{}문 안에 있는 소스입니다.
- 로그인하고 나서 로그인을 허가받은 회원으로 처리하기 위한 세션세팅입니다.
- 로그인을 시도하면 if{}안에 있는 소스들에 의해서 인증처리가 되고 그 다음에 올 if{}문 안에 있는 로그인을 실제로 수행하는 프로그램을 위해 세션을 세팅해 놓은 겁니다.
- 이 부분은 제로보드XE의 세션처리부분과 똑같으므로 세션처리에 대한 신뢰성은 높습니다.
----------------------------------------------------------
3) 로그인 처리를 수행합니다. : 1번째 소스안에 있는 2번째 if{}문이 이것을 처리합니다. 이 if{}문은 else{}문과 연결되어 있습니다.
- 여기는 로그인을 안했으면 강제로 $zbxe_url_path 에 정의된 경로에 있는 mid=outlogin&act=dispMemberLoginForm을 실행시킵니다. 무슨 소리냐면 mid값은 무언지 아실테구요, 내 홈페이지 URL주소에 outlogin이라는 페이지를 일부러 불러들여서 로그인 프로그램인 dispMemberLoginForm를 실행시키는 겁니다. 예를들어 내 홈페이지 URL이 www.home.co.kr/zbxe/ 입니다. 이 경로가 바로 $zbxe_url_path죠.그렇다면 www.home.co.kr/zbxe/outlogin은 www.home.co.kr/zbxe/?mid=outlogin과 같은 얘기라는 것이죠.
-저 if{}문 안에있는 프로그램이 실행되면서 로그인 창이 뜹니다. 그래서 로그인을 수행할 수 있게 되는 거죠.
------------------------------------------------------------------------------------------------------------------------
4) 로그인 후에 할 일들을 정의 : 1번째 소스의 2번째 if{}문에 연결된 else{}문 안에 있는 소스입니다.
-3)에서 말씀드렸지만 2번째 if{}문은 else{}문이 연결되어 있습니다. if A{A'} else {B'} 문장과 같은 의미죠. 조건 A를 만족하면 A'를 수행하고 조건A를 만족하지 못하면 B'를 수행해라입니다.
-3)에서 설명드린 것 처럼 2번째 if{}문의 조건은 로그인 안했으면 로그인 프로그램을 outlogin페이지와 연동하여 강제로 실행시켜라 입니다. 그렇다면 이 else{}문의 의미는? 로그인 했으면 else{}문을 실행하라는 것이죠.
-그래서 이 else{}문의 안에는 도데군님이 적어놓은 신 것은 몽땅 다 지우고 그 바로 밑에 Header("Location:{$zbxe_url_path}); 라고 적어야 로그인 후에 자신의 홈페이지 메인으로 날라갑니다. 이 부분은 충분히 테스트 해봤고 제로보드XE의 세션설정과 같음을 확인했습니다. 따라서 문제없구요, 이부분이 빠지면 로그인되서 페이지가 바뀌는 것이 아니라 로그인 페이지에 그대로 머무는 현상이 발생합니다.
----------------------------------------------------------------------------------------------------
!> ---> 요놈은 php라는 프로그래밍 언어의 마지막 끝을 가리킵니다. 왜 이 기호 사이에 도데군님의 1번째 소스가 들어가야 하는지 아시겠죠?5. 그럼 계속해서 저 위의 4번에 이어서 이제는 outlogin.php를 만들 차례 입니다.
outlogin.php안에는 도데군님의 글에 있는 2번째 소스처럼 넣으시는데 경로는 바꿔주셔야 합니다. 3번에서 말씀드렸다시피 outlogin이라는 폴더를 만들고 그안에 prelogin.php를 만들었습니다. 푸른솔아님의 zbxe설치 경로가 만약에 /home/zbxe라면 outlogin폴더의 경로는 /home/zbxe/outlogin이 될 것이고 prelogin.php는 /home/zbxe/outlogin/prelogin.php 가 경로가 될것입니다. 그러면 URL은 어떻게 되냐면 저 위에도 적었지만 www.home.co.kr/zbxe/outlogin/prelogin.php 가 되겠죠. 그대로 적어주시면 됩니다. 그러면 outlogin.php는 어디에 만들까요? 경로 상관없다고 했으니 그냥 outlogin안에 만드셔도 됩니다. 그렇다면 그 경로는 /home/zbxe/outlogin/outlogin.php가 되겠죠.
그렇다면, 지금까지 만든 소스 2개, preoutlogin.php와 outlogin.php는 모두 outlogiin이라는 폴더내에 있다는 거 아시겠죠?6. 소스는 다 만들었으니 이제 외부페이지를 zbxe의 관리자에 접속해서 만들어줄 차례 입니다.
이것도 마찬가지로 도데군님이 하신 것 대로....그대로 하시면 됩니다. 다만 외부문서의 위치는? 5번에 적었던 것처럼 outlogin.php가 들어있는 경로를 그대로 적어주시면 됩니다.7. 자~ 그럼 다 만들어졌으니 테스트를 해봐야죠. zbxe를 실행하려면 위에 예를들어 설명드린대로라면 www.home.co.kr/zbxe/라고 치고 들어가셨을테구요. admin페이지로 들어가시려고 하셨다면 www.home.co.kr/zbxe/admin 이라고 했을 겁니다. 그렇다면...지금 만든 페이지를 테스트하려면 www.home.co.kr/zbxe/outlogin이라고 하시면 됩니다. 참고하실 것은 outlogin이라는 이름이 3군데에서 사용되었습니다. outlogin 폴더, outlogin.php 그리고 outlogin 외부페이지(이건 관리자 페이지로 들어가서 만든거죠.) 입니다. 위에서 로그인 하기 위해 친 URL www.home.co.kr/zbxe/outlogin의 outlogin은 저 3가지 중에 어떤 것을 의미할까요? 지금까지 설명을 잘 이해하셨다면 outlogin외부페이지라는 것을 쉽게 짐작하실 수 있을 겁니다.
마지막으로 주의 사항 한 가지 더 말씀 드릴게요. 이제까지 설명대로라면 www.home.co.kr/zbxe/outlogin이라고 치고 들어가면 이제 로그인 화면이 뜨는 것은 아실텐데요, 이 쪽으로는 왠만하면 푸른솔아님이 알려준 사람들만 접근 할 수 있어야 합니다. 무슨 얘기냐면 보안이 중요하다는 것이죠. 그래서 이름을 잘 만드셔야 합니다. 우연히 치고 들어오거나 쉽게 유추해 낼 수 없는 이름이어야 겠죠. 그러니 한번 다 만들어보시고 저 외부페이지 이름을 아무도 감히 추측할 수 없는 이름으로 바꾸시는 것이 좋겠네요 ^^;
그럼, 꼭 성공하시길 바랍니다. ^^
-
도토리나무
2008.01.03 17:30
새해부터 수고들 하셨네요.
^^ -
SMaker
2008.01.03 19:23
로그인 안하고 메인페이지 url를 쳐서 들어간는 걸 방지하기 위해선 아무래도 권한을 줘야되지 않을까요?
-
바둥이
2008.01.03 23:47
위젯을 이용해 로그인 후 차후 페이지만 다른쪽으로 나오게 하는 방법은 없을까요?
-
레드맨
2008.01.04 04:12
[바둥이님]
위젯을 이용해 위젯의 로그인 창만 덩그러니 나오게 한 후 차후 페이지만 다른쪽으로 나오게 하는 방법은 더 쉽습니다. 저는 이것을 로그인 후에 메인페이지가 나오게끔 먼저 해봤는데요. 로그인 창이 안이뻐서 좌절했습니다. ㅎㅎㅎ~ ^^;; 해보시면 아시겠지만 딱 그만한 폭을 가진 조그만 사각형 로그인 창이 덩그렇게 나타납니다.
그래서 zbxe 관리자 페이지처럼 나오게 할 수 없을까를 궁리한 것이 저것이죠. 로그인 창 무지 이쁩니다. ㅎㅎ~ -
바둥이
2008.01.04 15:46
레드맨님 우선 답변 감사드립니다.
제가 구현하고싶었던 것이 뭐냐하면요..
현재 모든 페이지를 외부페이지로 등록해서 사용하고있는데 그냥 열때보다 속도가 엄청나게 차이가 나더라구요...
그래서 로그인만 별도로 외부페이지 설정을 할 수 없나 생각을 하다가 login.htm파일에 위젯을 구동하는 명령(<img...)만 넣어놓고 외부페이지로 등록해준 후 메인페이지에서는 readfile 명령으로 login.htm을 실행하도록 해봤습니다. 로그인창도 제대로 뜨고 로그인도 제대로 되는데 문제는 로그인 후 login.htm만 덩그러니 나온다는게 문제더라구요 ㅠㅠ 이런식으로 문제를 해결하는 방법을 알고싶습니다 번거로우시겠지만 다시한번 답변 부탁드립니다. -
레드맨
2008.01.06 00:30
글쎄요...정확히는 잘 모르겠지만 홈페이지를 좀 봐야 어떻게 된 건지 파악해 볼수 있을 것 같은데요. 글쓰신 걸로는 무슨 현상이 일어났는지 정확히 모르겠습니다. 로그인후 login.htm만 뜨는데 로그인이 제대로 됐다고 어떻게 판단하시는지? 홈페이지를 봐야 알 것 같은데요...ㅡㅡ;;
-
sakurastorm
2008.09.03 16:57
-
레드맨
2008.09.05 22:53
안녕하세요~
제가 너무 늦게 본 것은 아닌가 모르겠습니다. ^^;;
보니까 prelogin.php 소스에 문제가 있습니다.<!php $zbxe_server_path = "/home/sakurastorm/user/home/zbxe/"; // 관리자 페이지에 설치된 경로 부분 $zbxe_url_path = "http://sakurastorm.wooriweb.net/home/zbxe/"; // zbxe가 설치된 URL if(!ini_get('session.auto_start')) { session_cache_limiter('no-cache, must-revalidate'); ini_set("session.gc_maxlifetime", "18000"); if(is_dir($zbxe_server_path."files/sessions")) session_save_path($zbxe_server_path."files/sessions/"); session_start(); } if(!$is_logged){ Header("Location:{$zbxe_url_path}?mid=outlogin&act=dispMemberLoginForm"); // 로그인 화면으로 이동 exit(1); } else{ Header("Location:{http://sakurastorm.wooriweb.net/home/zbxe/}); } //로그인한 회원의 정보를 출력;; echo $no; // 회원 번호 echo "\n<br />\n"; echo $id; // 아이디 echo "\n<br />\n"; echo $name; // 이름 echo "\n<br />\n"; echo $nick; // 닉네임 echo "\n<br />\n"; echo $email; // 이메일 echo "\n<br />\n"; echo $home; //홈페이지 echo "\n<br />\n"; echo $birth;//생일 echo "\n<br />\n"; if($is_admin == "Y") // 관리자 일 경우 echo "나는 관리자 입니다."; else // 관리자가 아닐 경우 echo "나는 관리자가 아닙니다."; } !>
위 소스에서 16번째 줄을 삭제하시던가 18번~38번째 줄을 모두 삭제하시기 바랍니다.
'}' --> 필요없는 기호가 하나 더 들어가 있어서 그럽니다.
프로그래밍 문법에 안맞게 되어있어서 그런 것 같네요.
그럼 성공하시기를 바랍니다~ ^^ -
ⓨomin
2009.10.18 22:13
아 정말 실례지만.. 부탁드려요..
저도 잘 되질 않아요.ㅠㅠ
수정할 부분 수정해서 답변 해 주시면 감사하겠습니다!!
귀찮으시면 그냥 설명만 답변으로 해 주세요..;;
그럼.. 부탁드립니다!!
제목 | 글쓴이 | 날짜 |
---|---|---|
중국어게시판 사용할려고 합니다. | jmb5 | 2010.05.10 |
로그인시 다음과같은 오류가 발생합니다. 빠른답변좀 ㅠㅠ [3] | 푸팅 | 2010.05.10 |
호스팅업체에서 rewrite mod를 지원하는데 사용할 수 없는 경우 [1] [1] | 엔하늘 | 2009.04.05 |
zb4 게시판에 x, y를 사용하는 경우의 migration [1] | 녹슨기차 | 2008.01.10 |
외부로그인-특정 페이지에 로그인창만 나타나게 하고 로그인하면 메인페이지로 이동하기 [11] | 레드맨 | 2008.01.02 |
.htaccess 세팅 (index.html 없이 리다이렉션 구현) [2] | :맥노턴 | 2008.01.04 |
VirtualPC로 IE6.0, IE7.0을 동시에 사용해서 홈피테스트하기 [2] | D.kim | 2008.01.13 |
게시판 수가 많아 제목을 써넣는데 시간 절약 방법 | 아모스리 | 2010.05.04 |
htaccess 쉽게 만들기 | 현원 | 2010.05.03 |
다양한 언어로 홈페이지 서비스하기 - 무식한 방법 [4] | 멀리서 | 2009.04.21 |
게시판 상단에 게시판제목을 표시하기 [2] | 연필깎는까치 | 2009.08.22 |
로그인 페이지 만드는 방법 [5] | 산토 | 2009.06.12 |
첨부파일의 외부 무단 링크 차단하기(XE) 게시판설정 [7] | 왕초보왕따 | 2009.03.02 |
인용구 접기기능 링크이름 Underline 없애기 [4] | 똑디 | 2008.08.19 |
XE 레이아웃 게시판이 3곳이라는 사실 아시나요? [3] | serendip | 2010.04.19 |
개인 웹서버의 완성 우분투 (서버이전완료) [1] | 준타 | 2010.04.07 |
홈페이지 헤더부분에 display.handler.class.php 오류발생시 급해결방법 [3] | 극마 | 2009.08.09 |
웹페이지 메시지 만들기 [초보자대응] [6] | cabnb | 2009.12.09 |
게시판 스타일변경시 406에러 해결방법 | 우리랑 | 2010.04.21 |
윈도우 라이브 메신저를 홈페이지 서명난에 달자 [1] | Diver | 2007.11.26 |
먼저 제가 찿아헤메던 것이 여기 있어 고맙다는 인사를 드립니다.
도데군 님이 말슴하신 첫번째 부터 막힙니다.
외부프로그램 상단에 넣으라는 소스는 어디의 무슨 파일명 상단에 넣으라는 것인지요.
가급적이면 초보수준이 할수있도록 도데님 내용부터 상세하게 알려주시면 정말고맙겟습니다.
예을 들어 초보들은 기존파일에 추가해야한다면,
어느위치, 어느파일명을 어떻게 추가한다. <------------ 이리갈춰줘야한답니다.
아니면 새로 파일을 만들어야한다면 파일명은 뭐고, 파일을 올리는 위치는 어디다하고 알려줘야한답니다.
도와주시길 부탁 드립니다.