7 번째 수정본 소스 보기 : UseModWiki소스수정/로그인후직전페이지로이동
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: UseModWiki소스수정/로그인후직전페이지로이동 는 읽기 전용 페이지입니다.
== # 로그인을 하면, 로그인하기 직전에 보고 있던 페이지로 바로 이동 == 로그인에 성공했을 때, "로그인되었습니다"라는 뻔한 얘기를 굳이 보고 있을 필요가 없어서... 로그인 링크를 누르기 직전에 보고 있던 페이지로 바로 이동함. * 필수 요구 사항: * 선택 요구 사항: === # 사용법 === 로그인 링크를 누르기 직전에 * 평범하게 페이지를 보고 있거나, * 북마크를 통한 diff화면을 보고 있는 경우 에만 해당된다. 그 외 특정페이지를 보는 것이 아닌 액션(action=index라던가, action=links 등)에서 로그인하는 경우는 기존과 동일하다. === # 부작용 & 알려진 문제점 === * 별 문제는 없어 보이는데... 로그인 처리가 끝났을때 BrowsePage()를 불러서 화면을 보이는 식으로 구현했는데... 이렇게 막 불러도 되던건가 잘 모르겠음 -_-; * 로그인에 실패(암호를 잘못 넣었다던가)했을 때부터는 제대로 안 된다. [[귀찮아]]서 신경쓰지 않기로 했음 * 로그아웃했을 때도 이런 식으로 돌아가게 하고 싶은데, 쿠키 경로 문제 때문에 도저히 쉽게 안 되어서 포기. [[/SlashLinks처리]]때와 같은 상황인데, 이번에는 URL뒤에 "&pageid=페이지명"이 추가되면서 이 페이지명이 한글이면 제거가 안 된다. (CGI->url()은 디코딩된 값을 반환하는데 환경변수 PATH_INFO에는 %-인코딩된 형태로 들어 있어서 매치를 못 시킴) === # wiki.pl 수정 === [[/SlashLinks처리]]에서 고쳤던 쿠키 경로 관련 부분을, 환경 변수를 직접 쓰지 않고 $q를 통해서 접근하게 수정 (이번 패치와 큰 관련은 없음) {{{#!vim perl sub GetHttpHeader { ... ### slashlinks 지원 - 로긴,로그아웃시에 쿠키의 path를 동일하게 해줌 my $cookie_path = $q->url(-absolute=>1); if ((my $postfix = $q->script_name()) eq $cookie_path) { # mod_rewrite 가 사용되지 않은 경우 $cookie_path =~ s/[^\/]*$//; # 스크립트 이름만 제거 } else { # mod_rewrite if ((my $postfix = $q->path_info()) ne '') { # wiki.pl/ 로 rewrite 된 경우 $cookie_path =~ s/$postfix$//; } else { # wiki.pl? 로 rewrite 된 경우 my $postfix = $q->query_string(); $cookie_path =~ s/$postfix$//; } } $cookie .= "path=$cookie_path;"; ... } }}} [[/단축키개선]]에서 "l"을 누르면 로그인화면으로 가는 링크 수정 {{{#!vim perl sub GetHtmlHeader { ... ### 단축키 my $headExtra; if ($UseShortcut) { my $shortCutUrl = "$ScriptName".&ScriptLinkChar(); # 다음 줄 수정 my $shortCutLogin = (&LoginUser()?"logout":"login&pageid=$pageid"); my $shortCutHome = &FreeToNormal($HomePage); ... } }}} 상단 메뉴바에 있는 로그인 링크 수정. 이건 [[/GotoBar개선]]의 GetGotoBar 함수에도 언급되어 있음 {{{#!vim perl if (!&LoginUser()) { $bar_user .= "
" . &ScriptLink("action=login&pageid=$pageid", T('Login')."[l]") . "
\n"; } }}} 로그인 링크를 눌었을때 pageid 파라메터 처리 {{{#!vim perl sub DoEnterLogin { ... print &ScriptLink("action=newlogin", T('Create new UserName') . "
"); print &GetHiddenValue('enter_login', 1), "\n"; # 여기 한 줄 추가 print &GetHiddenValue('pageid', &GetParam("pageid")); print '
', T('UserName:'), ' ', ... }}} 아아디 암호를 넣은 후에 처리. DoLogin의 끝부분을 고침 {{{#!vim perl sub DoLogin { ... if ($success) { # 여기 if 단락 수정 %UserCookie = %SetCookie; if (&GetParam("pageid","") ne "") { BrowsePage(&GetParam("pageid")); return; } print &GetHeader('', T('Login completed'), ''); print Ts('Login for user ID %s complete.', $uid); # 여기까지 } else { print &GetHeader('', T('Login failed'), ''); print Ts('Login for user ID %s failed.', $uid); %UserCookie = %SetCookie; $UserID = ""; print "
" . &ScriptLink("action=login", T('Try Again')); } # 여기 추가 if (&GetParam("pageid","") ne "") { print "
" . Ts( 'Return to %s' , &GetPageLink(&GetParam("pageid")) ); } # 마지막 수정 print "
\n"; print &GetMinimumFooter(); } }}} 고치는 김에 DoLogout도 좀 바뀌었음. 패치와 관련은 없지만 로그아웃되는 처리를 좀 더 명확하게 함 {{{#!vim perl sub DoLogout { $SetCookie{'id'} = ""; $SetCookie{'randkey'} = $UserData{'randkey'}; $SetCookie{'rev'} = 1; my $tempUserID = $UserID; %UserCookie = %SetCookie; $UserID = "113"; print &GetHeader('', T('Logout Results'), ''); print Ts('Logout for user ID %s complete.', $tempUserID); print "
\n"; print $q->endform; print &GetMinimumFooter(); } }}} === # 추가 업데이트 내역 === === # 사용자 의견 === 저기 근데요 이 댓글 다는 소스도 어떻게 만들죠? 관리자님 알려주십쇼 ㅜ
---- [[위키위키분류]]
UseModWiki소스수정/로그인후직전페이지로이동
페이지로 돌아가기 |
다른 수정본 보기