*ページ名に「.」「..」を含んでも果たしていいのだろうか [#v7411180] -ページ: BugTrack -投稿者: [[reimy]] -優先順位: 普通 -状態: 完了 -カテゴリー: 本体バグ -投稿日: 2003-05-25 (日) 01:21:33 -バージョン: PukiWiki 1.4rc2 **メッセージ [#n6bcb206] [[:test/..]]というリンクからこのページの編集に入ると、下記のような文字列が編集フォームに自動入力されます。 ↑をクリックして編集画面に入ってみてください。 $1 = :test/.. $2 = :test $3 = .. 「..」を含むようなページ名は想定されていない? 許されてるのか、許されてないのか… なお、1.4rc2で発生するが、1.3.4では発生しない。 ---- -仕様確認なのでしょうけど、ちょっと。ページ名というものであれば、それは変換後の名称で保存すべきとなるので、許されない。が正しいものだと思います。ただ、相対指定時は、その指定が許されるのであれば、良いのでしょう。また、そういう定義に PukiWiki として対応するかどうかは、また別でしょうが。 -- [[upk]] &new{2003-05-25 (日) 01:50:38}; --現実には、[[:test/../test]]というページも作成可能なんですよ。 -- [[reimy]] &new{2003-05-25 (日) 02:09:27}; -現状は「../」「./」を含むページ名が許されているわけですが、これらを含むページ名を不可とすれば、newpage.inc.phpで「./hoge」「../hoge」「../../hoge」というような相対指定で新規ページを作成することも可能になるんですよねぇ(もちろんnewpage.inc.phpの改造は必要ですが)。新規ページ作成で相対指定が可能になると非常に便利なんですが、上記のように現状では「../」や「./」を含むページ名が使用可能になってるのでうまくいきません(「../../hoge」など、相対指定なのかページ名なのかの区別ができない)。-- [[reimy]] &new{2003-05-25 (日) 02:05:31}; --proxy.inc を作っていた頃、相対指定の対応をやっていましたが、対応することは、そう難儀でも無いとは思いますが、そもそも、今、そのようなページを作っちゃったところで問題となるのでしょうね。-- [[upk]] &new{2003-05-25 (日) 02:11:56}; -先頭が ./ や ../ で始まるのは単純なページ名じゃないってのを newpage で処理したいってことでは? 「. や .. を含むページ名は不許可」ってことになっちゃうとかなり扱いにくい感じがします。 -- &new{2003-05-27 (火) 19:35:09}; -[[a..]]や[[a../b]]などは許可しています。[[a/..]]や[[a/../b]]のような「相対指定と区別できなくなる可能性のある部分を含むページ名」を禁止しました。 -- [[ぱんだ]] &new{2003-05-27 (火) 19:47:59}; -newpage.inc.phpとpukiwiki.skin.ja.phpへのパッチを添付しました。ページ上部の[新規]をクリックして表示される[新規作成]ボックスに、元のページからの相対位置(../hogeなど)を指定できるようにしてあります。たとえば[[こんな感じ>http://pukiwiki.sourceforge.jp/dev/?plugin=newpage&refer=BugTrack/345]]です。 -- [[ぱんだ]] &new{2003-05-27 (火) 20:46:00}; --&ref(345.diff); --いただきましたm(__)m。メニューバーにフォームを貼り付けている場合は下記のようにするとうまくいきました。 <form class="lookup_form" action="<?php echo $script?>" method="post"> <div class="lookup"> <input type="hidden" name="plugin" value="newpage" /> <input type="hidden" name="refer" value="<?php echo urldecode($r_page)?>" /> <input type="text" name="page" size="12" value="" /> <input type="submit" value="移動" class="submit" /> </div> </form> -ついでに「/test」と指定した場合は「test」と同義にしてしまうのもいいかも。どうせ「/test」は「有効なWikiNameではありません」だし。「/」だけだとFrontPageへの移動に。 -- [[reimy]] &new{2003-05-27 (火) 23:07:52}; --なるほど。 -- [[ぱんだ]] &new{2003-05-27 (火) 23:35:49}; --こんな感じかな? -- [[reimy]] &new{2003-05-28 (水) 06:17:12}; ---make_link.php // 相対参照を展開 function get_fullname($name,$refer) { global $defaultpage; + if ($name == '/') + { + return $defaultpage; + } + + if (substr($name,0,1) == '/') + { + return substr($name,1); + } + if ($name == './') { --この変更で下記のような動作になります。-- [[reimy]] &new{2003-05-28 (水) 09:41:18}; ---「/」 FrontPageへ移動 ---「/HogeHoge」 HogeHogeと同じ(一番上の階層のHogeHogeに移動) ---「../」 上の階層へ移動(上の階層がない場合はFrontPageへ移動) ---「../HogeHoge」 カレントページと同階層のHogeHogeに移動 ---「./」 カレントページを再表示 ---「./HogeHoge」 カレントページの下階層のHogeHogeに移動 #comment //#comment