환경설정에서 사용할 수 없는 아이디를 넣었을 때의 처리 문제 해결
- 새로 아이디를 만들 경우, 환경설정에서 아이디란을 공란으로 남겨 두면 ".db" 라는 사용자 화일이 생겨서 잘못된 동작을 유발한다.
- 그 외에도, 사용할 수 없는 아이디 (특수문자가 섞인 것 등) 를 넣었을 때도, 잘못된 아이디라서 저장할 수 없다는 메세지 다음에 "저장이 완료되었습니다"라고 나오는, 비정상적인 동작을 보인다.
- 다음과 같이 수정했다.
- 아이디가 영문 4 자보다 짧으면 거부하며, 더 이상의 진행을 하지 않고 바로 실행을 끝낸다.
- 기존에 있던 제한 (잘못된 패턴, 아이디가 50자 이상) 에서도 마찬가지로, 더 이상 진행하지 않고 바로 실행을 끝낸다.
- Bab2 님의 패치를 변형하여 적용
- 부작용: 아직은 모름. -_-;
- 오리지날 UseModWiki 에서는, 사용자 id 는 시스템이 임의로 부여하는 숫자로만 구성된다. 이 홈페이지에서 사용하는 id 는 사실은 오리지날에서 단지 특정한 숫자아이디에 딸린 필명일 뿐이다. Luke님 버전에서 필명을 사용자를 구별하는 id 로 사용하도록 수정한 것이라, 함부로 건드리기 힘든 부분이다. 예기치 않은 부작용이 발생할 수 있다.
-
sub DoUpdatePrefs {
...
if ($FreeLinks) {
$username =~ s/^\[\[(.+)\]\]/$1/;
$username = &FreeToNormal($username);
$username =~ s/_/ /g;
}
if (length($username) < 4) {
print T('UserName must be 4 characters or more. (not saved)'), "<br>\n";
$UserID = 0;
print &ScriptLink("action=editprefs", T('Try Again'));
print &GetCommonFooter();
return;
} elsif ((!$FreeLinks) && (!($username =~ /^$LinkPattern$/))) {
print Ts('Invalid UserName %s: not saved.', $username), "<br>\n";
$UserID = 0;
print &ScriptLink("action=editprefs", T('Try Again'));
print &GetCommonFooter();
return;
} elsif ($FreeLinks && (!($username =~ /^$FreeLinkPattern$/))) {
print Ts('Invalid UserName %s: not saved.', $username), "<br>\n";
$UserID = 0;
print &ScriptLink("action=editprefs", T('Try Again'));
print &GetCommonFooter();
return;
} elsif (length($username) > 50) {
print T('UserName must be 50 characters or less. (not saved)'), "<br>\n";
$UserID = 0;
print &ScriptLink("action=editprefs", T('Try Again'));
print &GetCommonFooter();
return;
} else {
print Ts('UserName %s saved.', $username), '<br>';
$UserData{'username'} = $username;
}
...
}
위키위키분류