* interwikiで画像CGIを埋め込むhack [#a4c87da8]

- ページ: [[BugTrack2]]
- 投稿者: [[pai]]
- 優先順位: 低
- 状態: 提案
- 状態: 保留
- カテゴリー: その他
- 投稿日: 2009-12-09 (水) 00:25:52
- バージョン: 1.4.7

** 概要 [#kd609d28]

渡されたパラメータから画像を生成するCGIに、InterWikiを使用してパラメータを渡そうというhackです。

** 変更点 [#g04d6002]

 --- make_link_091208.php	2009-12-08 23:46:47.898723100 +0900
 +++ make_link.php	2009-12-09 00:20:51.576164200 +0900
 @@ -186,7 +186,7 @@
  		$this->body = $body;
  		$this->type = $type;
  		if (! PKWK_DISABLE_INLINE_IMAGE_FROM_URI &&
 -			is_url($alias) && preg_match('/\.(gif|png|jpe?g)$/i', $alias)) {
 +			is_url($alias) && preg_match('/\.(gif|png|jpe?g)(\?|$)/i', $alias)) {
  			$alias = '<img src="' . htmlspecialchars($alias) . '" alt="' . $name . '" />';
  		} else if ($alias != '') {
  			if ($converter === NULL)
 @@ -522,6 +522,9 @@
  			$script . '?' . rawurlencode('[[' . $name . ':' . $this->param . ']]') :
  			htmlspecialchars($url);
  
 +		if (preg_match('/\.(gif|png|jpe?g)(\?|$)/i', $url))
 +			$alias = $this->url;
 +		
  		return parent::setParam(
  			$page,
  			htmlspecialchars($name . ':' . $this->param),

** 使い方 [#b8a2c731]

+ まず、InterWikiNameのページに以下のような定義を置きます(diagram.phpが、画像生成CGIです)
 [http://localhost/diagram.php/.png? diagram] euc
+ 使いたいページで、以下のように記述します
 [[diagram:message ここに書いたテキストが渡されます]]
+ すると以下のようなhtmlが出力されます(:以降が、URLエンコードされて渡されています)
 <a href="http://localhost/diagram.php/.png?message%20%A4%B3%A4%B3%A4%CB%BD%F1%A4%A4%A4%BF%A5%C6%A5%AD%A5%B9%A5%C8%A4%AC%C5%CF%A4%B5%A4%EC%A4%DE%A4%B9"
  title="diagram:message ここに書いたテキストが渡されます" rel="nofollow"><img
  src="http://localhost/diagram.php/.png?message%20%A4%B3%A4%B3%A4%CB%BD%F1%A4%A4%A4%BF%A5%C6%A5%AD%A5%B9%A5%C8%A4%AC%C5%CF%A4%B5%A4%EC%A4%DE%A4%B9" 
 alt="diagram:message ここに書いたテキストが渡されます" /></a>

** 関連項目 [#q4282e5f]

- [[BugTrack/108]] 画像にリンクを貼りたい
- [[BugTrack2/247]] 外部リンクをリダイレクトページ経由にすることで、Refererを消す
-- これとは両立しません。

** メッセージ [#pb8da790]

--------
- 差分の後半部分、$alias に代入するべきなのは$this->url ではなく$url なのでは?& を含むURL だった場合に、& &rarr; &amp;amp; &rarr; &amp;amp;amp; へと2重置き換えされてしまうような気が・・・。&br;あと、互換性がないような現状の提案では、1.4.x の間は採用見送りになってしまいそう。(AutoLink 有効 &rarr; 無効 に変更した時と同じ規模のページデータの書き換えを、アップグレード時に強制してしまう可能性((test.png?size=300x400 みたいなパラメータつきのリンクを、InterWiki 使って可変生成している人がいれば、ですけど・・・)) があるため) --  &new{2009-12-09 (水) 02:37:45};
--- ありがとうございます。$urlについては確認します。互換性については、[http://www.something.com/image/$1/0001.jpeg something-image]のような、クエリでない使い方をしている人がいる可能性はあります。InterWikiName側で、埋め込み画像であることを明示した方がスマートかも知れません。 -- [[pai]] &new{2009-12-11 (金) 21:43:40};
- 関連?: [[BugTrack/460]] --  &new{2009-12-23 (水) 19:30:47};

#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.057 sec.

OSDN