-
- 1. 로그인을 하면, 로그인하기 직전에 보고 있던 페이지로 바로 이동
-
-
- 1.1. 사용법
-
- 1.2. 부작용 & 알려진 문제점
-
- 1.3. wiki.pl 수정
-
- 1.4. 추가 업데이트 내역
-
- 1.5. 사용자 의견
-
1. 로그인을 하면, 로그인하기 직전에 보고 있던 페이지로 바로 이동
로그인에 성공했을 때, "로그인되었습니다"라는 뻔한 얘기를 굳이 보고 있을 필요가 없어서... 로그인 링크를 누르기 직전에 보고 있던 페이지로 바로 이동함.
로그인 링크를 누르기 직전에
- 평범하게 페이지를 보고 있거나,
- 북마크를 통한 diff화면을 보고 있는 경우
에만 해당된다. 그 외 특정페이지를 보는 것이 아닌 액션(action=index라던가, action=links 등)에서 로그인하는 경우는 기존과 동일하다.
1.2. 부작용 & 알려진 문제점
- 별 문제는 없어 보이는데... 로그인 처리가 끝났을때 BrowsePage()를 불러서 화면을 보이는 식으로 구현했는데... 이렇게 막 불러도 되던건가 잘 모르겠음 -_-;
- 로그인에 실패(암호를 잘못 넣었다던가)했을 때부터는 제대로 안 된다. 귀찮아서 신경쓰지 않기로 했음
- 로그아웃했을 때도 이런 식으로 돌아가게 하고 싶은데, 쿠키 경로 문제 때문에 도저히 쉽게 안 되어서 포기. /SlashLinks처리때와 같은 상황인데, 이번에는 URL뒤에 "&pageid=페이지명"이 추가되면서 이 페이지명이 한글이면 제거가 안 된다. (CGI->url()은 디코딩된 값을 반환하는데 환경변수 PATH_INFO에는 %-인코딩된 형태로 들어 있어서 매치를 못 시킴)
1.3. wiki.pl 수정
/SlashLinks처리에서 고쳤던 쿠키 경로 관련 부분을, 환경 변수를 직접 쓰지 않고 $q를 통해서 접근하게 수정 (이번 패치와 큰 관련은 없음)
sub GetHttpHeader {
...
my $cookie_path = $q->url(-absolute=>1);
if ((my $postfix = $q->script_name()) eq $cookie_path) {
$cookie_path =~ s/[^\/]*$//;
} else {
if ((my $postfix = $q->path_info()) ne '') {
$cookie_path =~ s/$postfix$//;
} else {
my $postfix = $q->query_string();
$cookie_path =~ s/$postfix$//;
}
}
$cookie .= "path=$cookie_path;";
...
}
/단축키개선에서 "l"을 누르면 로그인화면으로 가는 링크 수정
sub GetHtmlHeader {
...
my $headExtra;
if ($UseShortcut) {
my $shortCutUrl = "$ScriptName".&ScriptLinkChar();
my $shortCutLogin = (&LoginUser()?"logout":"login&pageid=$pageid");
my $shortCutHome = &FreeToNormal($HomePage);
...
}
상단 메뉴바에 있는 로그인 링크 수정. 이건 /GotoBar개선의 GetGotoBar 함수에도 언급되어 있음
if (!&LoginUser()) {
$bar_user .= "<LI>"
. &ScriptLink("action=login&pageid=$pageid", T('Login')."[l]")
. "</LI>\n";
}
로그인 링크를 눌었을때 pageid 파라메터 처리
sub DoEnterLogin {
...
print &ScriptLink("action=newlogin", T('Create new UserName') . "<br>");
print &GetHiddenValue('enter_login', 1), "\n";
print &GetHiddenValue('pageid', &GetParam("pageid"));
print '<br>', T('UserName:'), ' ',
...
아아디 암호를 넣은 후에 처리. DoLogin의 끝부분을 고침
sub DoLogin {
...
if ($success) {
%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 "<br>" . &ScriptLink("action=login", T('Try Again'));
}
if (&GetParam("pageid","") ne "") {
print "<BR>" . Ts( 'Return to %s' , &GetPageLink(&GetParam("pageid")) );
}
print "<hr class='footer'>\n";
print &GetMinimumFooter();
}
고치는 김에 DoLogout도 좀 바뀌었음. 패치와 관련은 없지만 로그아웃되는 처리를 좀 더 명확하게 함
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 "<hr class='footer'>\n";
print $q->endform;
print &GetMinimumFooter();
}
1.4. 추가 업데이트 내역
저기 근데요 이 댓글 다는 소스도 어떻게 만들죠? 관리자님 알려주십쇼 ㅜ -- ... 2007-9-24 7:27 pm
- UseModWiki소스수정/Comments매크로 보시면 되겠습니다~
위키위키분류