概要

ページの作成時、長すぎる名前のページを作成できないようにします。[ページの更新]のタイミングでエラーにするのではなく、編集自体をさせないようにします。

  • 既に存在するページについては編集可能
  • PukiWikiがEUC-JP版の場合、UTF-8換算したときの長さで制限
    • UTF-8に移行するときに変換できないページを作成してしまわないため
    • この動作をさせないためには「if (! defined('PKWK_UTF8_ENABLE'))」のブロックを削除
  • ファイル名最大長は $filename_max_length = 250; の部分で指定
    • ".txt"まで含んだ値。カウンタ(counter/)は.countの拡張子なので更に2文字長くなる。
  • 添付ファイルについては ../長すぎるファイル名の添付ファイルアップロードを抑止 を参照

差分

1.4.7 UTF-8版からの差分

--- ../../../pukiwiki2/public/plugin/edit.inc.php	Sun Feb 13 11:01:19 2011
+++ edit.inc.php	Sun Mar  6 22:35:31 2011
@@ -28,6 +28,29 @@
 	}
 
 	$postdata = @join('', get_source($page));
+	if ($postdata == '')
+	{
+		// Check Page name length
+		$filename_max_length = 250;
+		
+		$filename = encode($page) . '.txt';
+		if (! defined('PKWK_UTF8_ENABLE'))
+		{
+			$utf8page = mb_convert_encoding($page, 'UTF-8', 'EUC-JP');
+			$filename = encode($utf8page) . '.txt'; 
+		}
+		$filename_length = strlen($filename); 
+		if ($filename_length > $filename_max_length)
+		{
+			$msg = "<b>Error: Filename too long.</b><br/>\n" .
+				"Page name: " . htmlspecialchars($page) . "<br/>\n" .
+				"Filename: $filename<br>\n" .
+				"Filename length: $filename_length<br/>\n" .
+				"Filename limit: $filename_max_length<br/>\n";
+			// Filename too long
+			return array('msg'=>$_title_edit, 'body'=>$msg);
+		}
+	}
 	if ($postdata == '') $postdata = auto_template($page);
 
 	return array('msg'=>$_title_edit, 'body'=>edit_form($page, $postdata));

関連

コメント

  • ページ内容を書き込んでしまってからページ名が不正であることに気づくケースをなくすために作りました -- umorigu 2011-03-06 (日) 23:06:52
  • 関連: BugTrack/84 WikiName/BracketName の長さ検査他 -- umorigu 2017-10-16 (月) 02:08:27


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-10-16 (月) 02:08:27
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.169 sec.

OSDN