*URL にブラケットを使ってもいいように。 [#i3429528]

-ページ: [[BugTrack2]]
-投稿者: [[kak]]
-優先順位: 低
-状態: 提案
-状態: 完了
-カテゴリー: 本体新機能
-投稿日: 2005-02-15 (火) 18:14:34
-バージョン: 
-バージョン: 1.4.5
-リリース予定バージョン: 1.5.1

**メッセージ [#yadd2e32]
例えば 
 [[http://www.google.com]]
という記法もあり。としたほうが都合がよいかと思います。

 [[Google>http://www.google.com]]
のように記述した場合は http は InterWikiName とならないのに(http という InterWikiName があっても無視する)、
 [[http://www.google.com]]
と記述した場合は InterWikiName になるというのが矛盾しているように感じました。

*** 実装 [#s605d773]

- [[commit:8b227c3c5859320685cd103568cf7dafac86bb57]]

----
-こんな感じでしょうか? -- [[teanan]] &new{2005-02-15 (火) 19:01:00};
-- &ref(./make_link.php.bracket_url.diff.1);
--あう、バグありました ;( -- [[teanan]] &new{2005-02-15 (火) 19:07:00};
--再掲載。 -- [[teanan]] &new{2005-02-15 (火) 19:14:08};
-これはInterWikiの内部的なデフォルト値として http (raw) などがあると良い、という話ではないでせうか -- [[henoheno]] &new{2005-02-15 (火) 22:05:37};
--なるほど、そういうアプローチがありますね。上のはURLsの方に寄せたのですが、InterWikiにした方が簡単にできました。 -- [[teanan]] &new{2005-02-16 (水) 02:22:43};
 lib/make_link.php : 773行目付近
	}
 
 +	$interwikinames['http'] = array('http:', 'raw');
 +	$interwikinames['https'] = array('https:', 'raw');
	if (! isset($interwikinames[$name])) return FALSE;
--けど、全角文字が指定された場合でもリンクになってしまう気がする・・・ -- [[teanan]] &new{2005-02-16 (水) 02:27:25};
-- つまり、(現行はPukiWiki個別のエンコーディングに左右されますが)日本語交じりの異常なURLとか、[[国際化ドメイン名>IDN]]を表現できるということですか :) -- [[henoheno]] &new{2005-02-16 (水) 22:23:52};
-- まてよ、それを悪用できるXSS脆弱性がないか? 頭が回らないので代わりにメモメモ。 -- [[henoheno]] &new{2005-02-16 (水) 23:51:59};
-- こんな感じにすると逃げられますね。 -- [[teanan]] &new{2005-02-17 (木) 02:36:19};
 +	$interwikinames['http'] = array('http:', 'url');
 +	$interwikinames['https'] = array('https:', 'url');
 	if (! isset($interwikinames[$name])) return FALSE;
 
	list($url, $opt) = $interwikinames[$name];
 
	// Encoding
	switch ($opt) {
 +	case 'url':
 +		if (!preg_match('/(?:\/\/|\.\.?\/)[!~*\'();\/?:\@&=+\$,%#\w.-]*$/',$param)) {
 +			return FALSE;	// Invalid URL
 +		}
 +		break;
-個人的には最初のURLsの正規表現に含む形の方がスマートなような気がしますが・・・ -- [[teanan]] &new{2005-03-07 (月) 02:16:15};
-「エイリアスを省略可能にする」というアプローチだと、こんな感じでしょうか。 -- &new{2005-03-09 (水) 09:13:54};
 diff -u -r1.17 make_link.php
 --- lib/make_link.php	5 Feb 2005 03:40:13 -0000	1.17
 +++ lib/make_link.php	3 Mar 2005 07:11:56 -0000
 @@ -336,8 +336,10 @@
  		$s1 = $this->start + 1;
  		return <<<EOD
  (\[\[             # (1) open bracket
 - ((?:(?!\]\]).)+) # (2) alias
 - (?:>|:)
 + (?:
 +  ((?:(?!\]\]).)+) # (2) alias
 +  (?:>|:)
 + )?
  )?
  (                 # (3) url
   (?:(?:https?|ftp|news):\/\/|mailto:)[\w\/\@\$()!?&%#:;.,~'=*+-]+
- これに対応してほしいです。この前ほぇっ!?となりました。表示がまともに見える分たちが悪いです。 [[http://google.com]]。 -- [[tokkuri]] &new{2006-05-24 (水) 11:33:12};
- 対応しました。teananさんのパッチ "make_link.php.bracket_url.diff.1" をそのまま取り込んでいます -- [[umorigu]] &new{2016-02-05 (金) 23:03:40};

#comment

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

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.141 sec.

SourceForge