MediaWikiにログインしている時のみ画像を表示・考え方
画像ファイルのアドレスを直接アドレスバーに入力されただけで画像を表示されてしまってはいけない。
そのため、アップロードされた画像はhttpサーバの公開ディレクトリよりも上に置く、もしくは.htaccessを用いてhttp経由のアクセスを不可にする必要がある。
もちろん、そうしてhttp経由のアクセスが禁止されたディレクトリ中の画像ファイルでも、PHPを用いて、サーバ内のパスで読み込ませれば、PHPからのアクセスは可能となる。
PHPと書いたが、これはMediaWikiがPHPで記述されているため、PHPを用いるのが自然だと考えただけで、この部分の処理は例えばRuby等であっても問題ないはず。
ただし、PHP以外では試していない。
<img src=”image.php?image=20091225044547.png”>で200091225044547.pngを表示したいとする。
アクセスされたimage.phpはまず、MediaWikiにアクセス者がログインしているかを確認する必要がある。
MediaWikiはセッション中にユーザ番号を持っており、ゲストユーザ(非ログインユーザ)は0で、登録した順に1, 2, 3となるようである。
つまり、image.phpはセッションを見て、番号が0以外ならば引数の画像のヘッダーと本体を出力すると良い。
あとはこれをMediaWikiの拡張機能として専用のアップローダ(これも拡張機能)でとともに実装したら完了。
自分の知識不足やMediaWikiを使ったことがなかったために、これだけ考え作るのに2日も費やしてしまった。
実装方法に問題があるかもしれないが、少なくとも自分では思い当たらない。
もし、MediaWikiに同様、類似の機能を欲している方がいるのなら、これがヒントになったらいいな。
MediaWiki