*ページ名に「.」「..」を含んでも果たしていいのだろうか [#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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.066 sec.

OSDN