iframe.inc.php

サマリインラインフレームプラグイン
リビジョン1.0
対応バージョン1.4.3,1.4.4
投稿者ino_mori?,sonots
投稿日2004-05-09 (SUN) 20:12:10

説明

sonots:iframe.inc.php に引っ越しました。

インラインフレームとはページ内に埋め込むフレームのことです。 ページの中に他のページを表示できます。 CGIやHTMLとして完成している文書を表示するのに用いるかもしれません。

つまりは iframe タグのことですが、XHTML1.1 では iframe は使用できないため object タグで代用していたり、していなかったりします。

インラインフレーム化せずにHTMLを取り込みたい場合は自作プラグイン/htmlinsert.inc.phpを利用します。ただし XHTML Valid にするためにHTML文書の改変は必要になるでしょう*1。こちらではCGI系はさすがに無理です。

ダウンロード

最新版は、sonots:iframe.inc.php からダウンロードしてください。(以下のファイルは、古いものです)

拡張子の番号をはずして plugin フォルダに放り込んでください。

リビジョン日付備考
filev1.72005/01/25iestyleを指定していない場合でもstyleが指定してあればそちらを利用する処理を消してしまっていたので修正
filev1.62005/01/25pukiwiki1.4.4対応*2。サイズ指定がうまくいかない不具合を修正。オプション変更。いっそのことスタイルシートクラス名も変更。
filev1.52004/07/09modified by sonots
v1.42004/07/09modified by sonots(XSS脆弱性の為削除)
filev1.32004/07/09modified by sonots
filev1.22004/07/08modified by sonots
filev1.12004/06/22modified by sonots
filev1.02004/05/09by ino_mori?

使い方 (sonots バージョン)

書式

#iframe(URL[,オプション])
  • URL

    とりこむURL。許可されているものしかとりこめない。許可するURLは iframe.inc.php 中で設定する。絶対アドレスのみ許可されるように設定してください。

  • オプション
    • style=

      スタイル設定。ここで style="width:500px;height:500px;" のように指定。CSSファイル中の記述よりも優先される。
      ところで IE以外(Mozilla, Opera等) では object タグを使用している。その際 height:100% では全く 100% の表示にならない。height:500px あたりが無難?

    • iestyle=

      IE 用のスタイル指定。指定されなくても style の値が使われる。ここで iestyle="width:500px;height:500px;" のように指定。CSSファイル中の記述よりも優先される。
      ところでこちらでは諸々の問題で iframe を使用している。width:100% ではスクロールバーが切れたので width:99% あたりが無難?height:100% はこっちではありらしい。

設定方法

iframe.inc.php を開き、許可する URL を編集します。

  • $iframe_accept_regurl

    正規表現による指定。ホスト許可などに使用。例)

    $iframe_accept_regurl = '^http://www.google.co.jp$|^http://pukiwiki.sourceforge.jp'; 

    http://www.google.co.jp を許可。http://pukiwiki.sourceforge.jp 以下のページをすべて許可。 正規表現なので本当は \. にすべきです。

  • $iframe_accept_url

    ただの文字列マッチによる指定。常にこちらを使用した方が安全。 日本語を使用する場合はURLエンコードしておくこと。例)

    $iframe_accept_url = array(
    'http://pukiwiki.sourceforge.jp/index.php?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fiframe.inc.php',
    );

デフォルトのサイズはスタイルシートを編集することで指定可能です。

  • pukiwiki.css.php、1.4.3 以前なら default.ja.cssに付け加えます。
    .iframe_others
    {
    	height: 600px;
    	width:100%;
    	margin-left:auto;
    	margin-right:auto;
    }
    
    .iframe_ie
    {
    	height: 600px;
    	width:100%;
    	margin-left:auto;
    	margin-right:auto;
    }
    スクロールバーの設定にはスタイルシートの overflow を、ボーダーも border を使用するといいでしょう。

使い方 (旧 ino_mori バージョン)

ぜんぜんプログラミングとかできないんですが
他のプラグインをまねしながら作りました。

用途としてはかつてhtmlで作ったものを
pukiwikiで表示させるのに使うなど
可能性はかなりあるのではないでしょうか?

インストール (旧 ino_mori バージョン)

  1. pluginフォルダに入れます。
  2. default.ja.cssに付け加えます。
    /* iframe.inc.php */
    .object_others
    {
    	height: 600px;
    	width:100%;
    	margin-left:auto;
    	margin-right:auto;
    }
    
    .object_ie
    {
    	height: 600px;
    	width:100%;
    	margin-left:auto;
    	margin-right:auto;
    }

以上で完成です。

使い方 (旧 ino_mori バージョン)

#iframe(URL)

相対パスでも絶対パスでも可です。

ご意見…

未熟者なのでご意見とかいただけると幸いです。

  • reimy 2004-05-09 (SUN) 20:44:05

    IEの場合、コンテンツがheight,widthの値*3よりも小さい場合でも、ダミーのscrollbarが表示されてしまうので注意が必要。IEの場合のみ、$html_transitional = 1;を設定して、<iframe>で表示したほうがいいかも。

    なお、MozillaやOperaなどW3C準拠のブラウザでは、コンテンツがheight,widthの値*4よりも小さい場合にはscrollbarは表示されない*5

  • 名無しさん 2004-05-09 (SUN) 20:52:20

    設置者の意志とは無関係に、第三者のサイトのコンテンツを自由に取り込めてしまうので、取り込んだコンテンツが悪意のあるものだった場合、セキュリティ上、危険かも。悪用されるおそれがあることを理解した上で設置しましょう。

    • 名無しさん 2004-05-11 (TUE) 19:35:16

      であれば、凍結されたページのみ機能する。という実装ではいかが?

  • ねこご? 2004-05-11 (TUE) 11:07:05

    続・質問箱/46でも相談させていただいたことが、こちらで解決できました。ありがとうございます。もしできるのであれば、heightやwidthの値が#iframe(URL,height,width)のような形で指定できると嬉しいですね。

    • 名無しさん 2004-05-11 (TUE) 14:26:14

      やるなら#iframe(URL,IE用width,IE用height,width,height)でしょうね。

  • ino_mori? 2004-05-13 (THU) 09:02:36

    いろいろご意見ありがとうございます。やはり、サイズ、凍結など検討させてもらいます、僕の手に負えるかどうかも含めて(汗
    ちなみに、外部のサーバーを参照するとうまくいかないことがあるみたいです。

  • 名無しさん 2004-06-22 (TUE) 17:45:06

    セキュリティ的には管理者がとりこめるアドレスを限定できればいいだけですよね?

  • 名無しさん 2004-06-24 (THU) 20:29:41

    IE で <object data="http://www.google.co.jp" type="text/html"></object> のように絶対URLで記述する表示されないのですが、どこか IE の設定がおかしいのでしょうか?相対URLだと表示されました。

  • sonots 2004-06-26 (SAT) 17:29:41

    iframe.inc.php.1 改変させてもらいました。ファイル中で指定したアドレスのみに限定できるようになりました。width,height,iewidth,ieheightオプションでサイズを指定できるようになりました。iewidth,ieheightを指定しない場合、IEでもwidth,heightの値を使用します。デフォルトサイズは上述のようにスタイルシートで定義すればできるはずです。また、IEの場合は$html_transitional=1;としてiframeで、その他はobjectタグで表示するようになりました。config.php の仕様を理解していないのでconfigページでの設定には今のところ対応していません。iframe,objectなのでブロック要素は消して、インライン要素のみにすべきなのでしょうか?

  • sonots 2004-06-26 (SAT) 18:09:48

    そういえば、アドレス指定には正規表現を使用しているので、. がまずいですよね。でも . をそのまま打てないのは設定する時にめんどくさいですし。だからといって、正規表現を使えないようにすると拡張性が乏しくなりますし。悩みどころです。

  • ねこご? 2004-07-07 (WED) 14:18:20

    sonotsさんが改変されたものを導入させていただきました。ありがとうございます。一つ質問なのですが、アドレス指定でドメイン全体を指定することは可能でしょうか。掲示板のアドレスを追加したところ、うまく呼び出せませんでした。アドレスには、「?」「&」と日本語が混じっているので、これが原因だと思います。ドメイン単位で指定できればこれが解決できるのではないかと思います。アドレスの指定方法等が良く分からないので、どうぞよろしくお願いします。

  • sonots 2004-07-09 (FRI) 02:46:37

    それはやっぱりアドレス指定に正規表現を使用しているせいですね。ドメイン単位で指定しやすいように正規表現にしています。例えば

    $iframe_accept_url = '^http://www.google.co.jp$|^http://www.yahoo.co.jp$';
    $iframe_accept_url = '^http://www.google.co.jp$|^http://www.yahoo.co.jp';
    のように $ をはずせば、http://www.yahoo.co.jp/hogehoge なものなどすべて許可することになります。 正規表現にすると ? や . で失敗し、完全マッチにするとドメイン指定ができなくなる。 あちらを立てればこちらがたたずです。ん?両方やればいいだけですね。後で改変します 改変しました。他の所も少し。iframe.inc.php.2; 使用のヒント: スクロールバーの設定にはスタイルシートの overflow を、ボーダーも border を使用してください。ieheight=100% はありかもしれませんが、height=100% はおすすめしません。object タグの挙動が怪しい気がします。500ぐらい?一画面で収めるか収めないかはお好みで。firefox では一画面で収めてもらったほうが使いやすいです。また、width=100% はありですが、iewidth=99% でないとスクロールバーが IE のときに切れました。環境によっては違うかもしれません。アドレスの指定方法はソース参照ということで。あと日本語は文字コード周りでだめかもしれません。あらかじめURLエンコードしておいたほうがよいです。ブラウザのURL部をコピーアンドペーストすればよいかと。
  • sonots 2004-07-09 (FRI) 13:53:37

    iframe.inc.php.4 あ、XSS 脆弱性。

  • ねこご? 2004-07-09 (FRI) 16:38:19

    sonotsさん、度々ありがとうございます。ドメイン指定で無事動きました。

  • 質問ですが、cssでのheight等の指定はできるのですが、wikiからコマンドの直接指定でheight等の指定がうまくいきません。上記の使い方
    #iframe(http://pukiwiki.sourceforge.jp[,iewidth=50%,ieheight=50%,width=50%,height=50%)
    の様に指定しても、cssでの値が優先されてしまい個別に設定できません。正しいコマンド指定例はどの様なものでしょうか?よろしくお願いします。 -- 2004-09-07 (火) 08:50:24
  • すみません。学校始まってから死んでました。pukiwiki.org が移転してから最新版のファイルが消えてしまっていたようです。たぶん ino_mori さんの初版を落としたのだと思います。ちなみに [] は省略可能の意味で記入する必要はありません。ところで、初版を消したほうが読みやすくなるとは思うのですが、ino_mori さんのですし、どうしたもんでしょう。 -- sonots 2004-10-22 (金) 10:22:20
    • こんな風にしてみました >ダウンロードの所 -- merlin 2004-10-22 (金) 11:10:08
    • ありがとうございます。使い方、インストールあたりがちょっとごちゃごちゃしちゃってるのもどうしたものでしょう。消しちゃっていいのかな・・・。 -- sonots 2004-10-22 (金) 13:37:01
    • 元の文を参照できるように 下の方へまとめてはいかがでしょう? (子ページにすると 多分trackerがとちるかも) -- merlin 2004-10-22 (金) 16:55:47
  • 御返事ありがとうございます。ですが、sonotsさんのバージョンで、
    #iframe(http://xxx.xxx.com/xxx.html,iewidth=500,ieheight=500,width=500,height=500)
    の様に指定しても、cssでの値しか適用されません。sonotsさんのバージョンを全て試させてもらい、文法も考えれる限り色々と試したのですがだめでした。度々申し訳ありませんが、他に何か原因と思われることがあれば御教授して頂きたいです。 -- 2004-10-29 (金) 23:30:58
  • 質問ですが、 -- ひさなべ? 2005-01-23 (日) 17:37:19
  • 質問というより、助けてください。FIREFOXでは、ちゃんと表示されるのですが、IEでは、Iframeの中がまったく表示されないのです。 -- ひさなべ? 2005-01-23 (日) 17:38:37
  • ありがとうございます。でも、ちゃんと記述しているんですけどね。IEにするとなぜかiframeの中が全く表示されません。バージョンは、1.4.4を使っています。ほかのPCでみたら、中身が表示されるのですが、指定のピクセルでなく、CSSのピクセルが優先されます。なぜ? -- ひさなべ? 2005-01-25 (火) 17:31:16
    • う。CSSの有無で再現したので勘違いしてたらしいです。すみませんでした。しっかり「1.4.3 以前」て書いてあるのにorz -- でぃあばぁ 2005-01-26 (水) 09:47:35
  • ほうっておいてすみません。IEで表示できないのは pukiwiki1.4.4 になってからユーザーエージェントの取得法が HTTP_USER_AGENT じゃだめで getenv("HTTP_USER_AGENT") のようにしなければいけなくなったためのようです。で、iframe ではなくて object タグを使っていたようなんですが、IE は object タグを拒絶したんでしょうか?表示ぐらいできてもいいのに。と思ったら上にも絶対URLだと失敗したようなことがかいてありますね。だめなのか。デフォルトCSS設定が優先されるのはたぶん間違っているからです。今いろいろいじってるんですが、スタイルシートの優先度ってIEとfirefoxで違ったりしますかね?class と style は style のほうが優先されるはずで、IE6 では確かにそうなんですが、firefox 1.0だとならない・・・。 -- sonots 2005-01-26 (水) 05:15:37
  • そもそも IE は iframe で firefox は object タグを使用しているので、ブラウザじゃなくてobject タグがだめってことかもしれない。と思ったけど iframe でも同じ? -- sonots 2005-01-26 (水) 05:24:49
  • と思ったら 100px のように px を必ずつけないといけないようでした。そういえばスタイルシートにもその理由で px を記述していたんだった orz。というわけで pukiwiki1.4.4 対応しました。不具合直しました。ついでにオプションやスタイルシート中のクラス名まで変えてしまいました。 -- sonots 2005-01-26 (水) 06:18:43
  • そういえば凍結されたページのみで #iframe を有効化するという案もあったわけですが、どちらのほうがよかったのでしょう?
    選択肢投票
    凍結14
    現状(許可するURLを設定)9
    よくよく考えると、凍結ならWikiパスワードをもっている人なら可能ですが、現状だとサーバーパスワードを知っているほんとうに管理人しか設定できないなぁと。ファイルを開いて設定するのも手間だなぁと。凍結だとテストするのが面倒かもなぁとw-- sonots 2005-01-26 (水) 12:37:33
  • ありがとうございます。なんとか、無事解決いたしました。私が思ったとおり動きそうです。それから、凍結したページのみ有効化の案ですが、私は今のままでいいと思います。 -- ひさ(なべ)? 2005-01-26 (水) 16:03:40
  • さっきの続きです。実は、自分のwikiは、ほかの投稿者のアフィリエイト広告記載を可にしようかと思っているのです。そうすることで、ほかの投稿者の意欲を上げてもらおうかと思って。ちゃんと基本利用規約を設定してからの話ですが。 -- ひさ(なべ)? 2005-01-26 (水) 16:06:28
  • XHTMLと広告(邪道編)でドキュメント宣言そのものを書き換えてiframeを無理なく(?)入れるという方法が紹介されてます。 -- Logue 2005-01-28 (金) 00:28:19
  • XHTML1.1, iframe の項ですね。IE では MIME-TYPE がうまくいかないので表示ができなくなるようですね。まぁ XHTML 1.0 Transitional で逃げているのでよしということにしておいてください。 -- sonots 2005-01-28 (金) 03:25:28
  • 指定に InterWikiName をうまく使えませんかね? URL 制限にも使えそうですし….(もっとも InterWikiName の書き換えが無制限になっているようだと制限には使えませんが…) -- 2005-06-01 (水) 10:25:01
  • ie6の場合、iframeに対してcssで「overflow: auto;」などoverflowのスタイル指定をすると内容が表示されないようです。これを消したら、表示できました。 -- aba? 2006-10-17 (火) 20:30:18
  • URLで指定したページがIEでは文字化けします。firefoxでは問題ありません。解決方法教えてください。 -- pukisuki? 2007-03-12 (月) 12:44:26
  • IE7の場合、行116あたりにIE7の追加記述をしないと空白表示になります if (ereg("MSIE (3|4|5|6|7)", getenv("HTTP_USER_AGENT") ) ) -- 通りすがり? 2007-06-22 (金) 19:51:41

*1 HTMLタグ、HEAD内部、BODYタグを削ることになります
*2 $html_transitionalが$pkwk_dtdになった。1.4.3以前対応のためにも両方書かなければいけない。HTTP_USER_AGENTがgetenv("HTTP_USER_AGENT")になった。これは getenv のほうだけでよい。
*3 scrollbarの幅も含む。
*4 scrollbarの幅も含む。
*5 したがって、IEの場合とそれ以外でwidth,heightの値が同じであると正常に表示されない場合があるので注意。

添付ファイル: fileiframe.inc.php.7 4390件 [詳細] fileiframe.inc.php.6 1904件 [詳細] fileiframe.inc.php.5 1881件 [詳細] fileiframe.inc.php.txt 1433件 [詳細] fileiframe.inc.php.3 1849件 [詳細] fileiframe.inc.php.2 1775件 [詳細] fileiframe.inc.php.1 1752件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-12-08 (火) 15:04:34
Site admin: PukiWiki Development Team

PukiWiki 1.5.1+ © 2001-2016 PukiWiki Development Team. Powered by PHP 5.6.36-0+deb8u1. HTML convert time: 0.380 sec.

OSDN