ページ名に「.」「..」を含んでも果たしていいのだろうか

  • ページ: BugTrack
  • 投稿者: reimy
  • 優先順位: 普通
  • 状態: 完了
  • カテゴリー: 本体バグ
  • 投稿日: 2003-05-25 (日) 01:21:33
  • バージョン: PukiWiki 1.4rc2

メッセージ

[[:test/..]]というリンクからこのページの編集に入ると、下記のような文字列が編集フォームに自動入力されます。 ↑をクリックして編集画面に入ってみてください。

$1 = :test/..

$2 = :test

$3 = ..

「..」を含むようなページ名は想定されていない? 許されてるのか、許されてないのか…

なお、1.4rc2で発生するが、1.3.4では発生しない。


  • 仕様確認なのでしょうけど、ちょっと。ページ名というものであれば、それは変換後の名称で保存すべきとなるので、許されない。が正しいものだと思います。ただ、相対指定時は、その指定が許されるのであれば、良いのでしょう。また、そういう定義に PukiWiki として対応するかどうかは、また別でしょうが。 -- upk 2003-05-25 (日) 01:50:38
    • 現実には、[[:test/../test]]というページも作成可能なんですよ。 -- reimy 2003-05-25 (日) 02:09:27
  • 現状は「../」「./」を含むページ名が許されているわけですが、これらを含むページ名を不可とすれば、newpage.inc.phpで「./hoge」「../hoge」「../../hoge」というような相対指定で新規ページを作成することも可能になるんですよねぇ(もちろんnewpage.inc.phpの改造は必要ですが)。新規ページ作成で相対指定が可能になると非常に便利なんですが、上記のように現状では「../」や「./」を含むページ名が使用可能になってるのでうまくいきません(「../../hoge」など、相対指定なのかページ名なのかの区別ができない)。-- reimy 2003-05-25 (日) 02:05:31
    • proxy.inc を作っていた頃、相対指定の対応をやっていましたが、対応することは、そう難儀でも無いとは思いますが、そもそも、今、そのようなページを作っちゃったところで問題となるのでしょうね。-- upk 2003-05-25 (日) 02:11:56
  • 先頭が ./ や ../ で始まるのは単純なページ名じゃないってのを newpage で処理したいってことでは? 「. や .. を含むページ名は不許可」ってことになっちゃうとかなり扱いにくい感じがします。 -- 2003-05-27 (火) 19:35:09
  • a..?a../b?などは許可しています。[[a/..]]や[[a/../b]]のような「相対指定と区別できなくなる可能性のある部分を含むページ名」を禁止しました。 -- ぱんだ 2003-05-27 (火) 19:47:59
  • newpage.inc.phpとpukiwiki.skin.ja.phpへのパッチを添付しました。ページ上部の[新規]をクリックして表示される[新規作成]ボックスに、元のページからの相対位置(../hogeなど)を指定できるようにしてあります。たとえばこんな感じです。 -- ぱんだ 2003-05-27 (火) 20:46:00
    • file345.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 2003-05-27 (火) 23:07:52
    • なるほど。 -- ぱんだ 2003-05-27 (火) 23:35:49
    • こんな感じかな? -- reimy 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 2003-05-28 (水) 09:41:18
      • 「/」 FrontPageへ移動
      • 「/HogeHoge」 HogeHogeと同じ(一番上の階層のHogeHogeに移動)
      • 「../」 上の階層へ移動(上の階層がない場合はFrontPageへ移動)
      • 「../HogeHoge」 カレントページと同階層のHogeHogeに移動
      • 「./」 カレントページを再表示
      • 「./HogeHoge」 カレントページの下階層のHogeHogeに移動

添付ファイル: file345.diff 978件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2003-05-28 (水) 09:42:53
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.210 sec.

OSDN