interwikiで画像CGIを埋め込むhack

概要

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

変更点

--- 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),

使い方

  1. まず、InterWikiNameのページに以下のような定義を置きます(diagram.phpが、画像生成CGIです)
    [http://localhost/diagram.php/.png? diagram] euc
  2. 使いたいページで、以下のように記述します
    [[diagram:message ここに書いたテキストが渡されます]]
  3. すると以下のような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>

関連項目

メッセージ



*1 test.png?size=300x400 みたいなパラメータつきのリンクを、InterWiki 使って可変生成している人がいれば、ですけど・・・

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-01-06 (水) 11:42:48
Site admin: PukiWiki Development Team

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

SourceForge