管理 | 差分 || 新規作成 || カテゴリ一覧 | ページ一覧 | 更新履歴 | 差分履歴 || アンテナ || PUT || more≫ ≫omit
shortcut: FrontPage || WikiLab | StoreRoom/最新 | 日々の泡 | むず痒いパソコン日記/最新 || HelpPage ||[edit]
category: WikiLab/WorkReport

WikiLab/WorkReport/ID - ID の 属性値をエンコードしない修正のお話。

LastModified : Sat Jul 24 23:08:31 2004
[管理]

ID の 属性値をエンコードしない修正のお話。

yakty 先生修正。2004/07/24(Sat)

[TOP↑] [管理]

ただ今の修正。2004/07/23(Fri)

[TOP↑] [管理]
    # yakty add [link to part] start
    my $part;
#    if(&is_bracket_name($chunk)){
    if($chunk !~ /^$embedded_name$/ && &is_bracket_name($chunk)){
        $chunk = &unarmor_name($chunk);
#        ($chunk, $part) = ($1, '#' . &encode($2)) if($chunk =~ /^(.+?)#(.+)$/);
        ($chunk, $part) = ($1, '#' . $2) if($chunk =~ /^(.+?)#(.+)$/);
#        $chunk = &armor_name($chunk) if($chunk ne $InterWikiName);
    } elsif($chunk =~ /^$wiki_name/){                                     # yakty add [link to part] for InterWikiNamePage
#        ($chunk, $part) = ($1, '#' . &encode($2)) if($chunk =~ /^(.+?)#(.+)$/);    # yakty add [link to part] for InterWikiNamePage
        ($chunk, $part) = ($1, '#' . $2) if($chunk =~ /^(.+?)#(.+)$/);    # yakty add [link to part] for InterWikiNamePage
    }
    # yakty add [link to part] end
    my $name         = $chunk;
    my $escapedchunk = &escape($chunk);
    my $escapedname  = &escape($name);
    my $cookedchunk  = &encode($chunk);
    if ($form{mypage} ne $InterWikiName and $chunk !~ /^$embedded_name$/) {                                         # yakty del [alias link definition]
#    if ($form{mypage} ne $InterWikiName and $chunk !~ /^$embedded_name$/ and $form{mypage} ne $AliasLinkName) {    # yakty add [alias link definition]
#        ($name, $chunk) = ($1, $2) if ($chunk =~ /^\[\[(\S+) (\S+)\]\]$/);    # Walrus del [alias link space]
        ($name, $chunk) = ($1, $2) if ($chunk =~ /^$interwiki_definition$/);   # Walrus del [alias link space]
        $chunk =~ s/""/"/g if ($chunk =~ s/^"(.+)"$/$1/);                      # Walrus del [alias link space]
        ($name, $chunk) = (&unarmor_name($name), &unarmor_name($chunk));
#        ($chunk, $part) = ($1, '#' . &encode($2)) if ($chunk =~ /^(.+?)#(.+)$/);        # yakty add [link to part]
        ($chunk, $part) = ($1, '#' . $2) if ($chunk =~ /^(.+?)#(.+)$/);        # yakty add [link to part]

めも。

[TOP↑] [管理]

(英文字で開始しなければならず、英文字、数字、ハイフン、アンダースコア、コロンもしくはピリオドを任意の数続けることができる)

だから、被参照側において、id生成時に「%」の文字を抜いておくか、「_」等に置き換えるのがよいと思います。

-----

RFCに従えば、
<a href="http://jm.vis.ne.jp/sbox/index.cgi?StoreRoom/2004/07-01#ID04C-2">リンク</a>
と記述しても、
http://jm.vis.ne.jp/sbox/index.cgi?StoreRoom/2004/07-01#ID04C-2
を参照できるはずになります。

-----

ブラウザの現実の実装がうまくないようで、やはり、%エンコーディングを使わない方が安全ということか。

修正するなら、次の様な感じでしょうか。

  1. sbox側で、id属性の値をencode()処理しない
  2. 参照側では、リンク生成時に「#」以降の文字列をencode()しない

eskizy:TemporaryMemo

元もとの memn0ck さんちでの「飛べない問題」は、

たろう--ricaさんちの問題って%をもう一度エンコードして%25にしちゃうのが原因じゃないのかなぁ…と思ったり[2004-07-09 17:22:25]

http://vwta.kir.jp/CommentTools/index.php?book=taro&word=TopPage

ということらしいです。

ただ今作業中。その1.

[TOP↑] [管理]
shortcut: FrontPage || WikiLab | StoreRoom/最新 | 日々の泡 | むず痒いパソコン日記/最新 || HelpPage || [edit]
select css: default | sakura | mono | greenheck | snow | NN4.x用(多分) || LinuZau!! | VikiWiki!? || others |

管理 | 差分 || 新規作成 || カテゴリ一覧 | ページ一覧 | 更新履歴 | 差分履歴 || PUT