MediaWikiにログインしている時のみ画像を表示・考え方

関連1 関連2

画像ファイルのアドレスを直接アドレスバーに入力されただけで画像を表示されてしまってはいけない。

そのため、アップロードされた画像は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に同様、類似の機能を欲している方がいるのなら、これがヒントになったらいいな。


コメントをどうぞ

XHTML:You can use these tags:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>