• ベストアンサー

IPアドレス別に表示する画像を変えられますか?

当方の管理するサイト(A)に画像をアップし、 その画像を他のサイト(B)で表示する時に Aに置くPHPファイルでBの訪問者のIPアドレス別に 表示する画像を変えられるのでしょうか。 もし可能でしたら、これからPHPを学習しようと考えており、 当方が必要とする部分が載っている本やサイトがありましたら ご教授願えるとありがたいです。 こちらのOKWaveに行き着くまでに調べた結果、 CGIでは当方がしたいことができるようです。 蛇足かもしれませんがURLを載せておきます。 http://72.14.235.104/search?q=cache:ERkmUmpqInwJ:sakaguch.com/PastBBS/0014/B0007323.html+IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E5%88%A5%E3%81%AB%E8%A1%A8%E7%A4%BA%E7%94%BB%E5%83%8F%E3%82%92%E5%A4%89%E3%81%88%E3%82%8B&hl=ja&ct=clnk&cd=1&client=opera どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#30334
noname#30334
回答No.2

サイト(B)で画像を表示するタグが 下記のような単純な形式であれば、それ程難しくありません。 <IMG src="http://サイト(A)/○○○.php"> (○○○.phpは、画像を表示するスクリプト) その場合、下記のような感じでいけると思います。 //訪問者のIPで画像を変える********* $reqIP = $_SERVER["REMOTE_ADDR"]; if ($reqIP == "xxx.xxx.xxx.xxx") { $src = "sample1.jpg"; }else{ $src = "sample2.jpg"; } //画像を返す******* header("Content-type: image/jpeg"); header("Content-Disposition: inline; filename=" . $src); header("Content-length: " . filesize($src)); readfile($src); サイト(B)でもスクリプトが走っていて、 fopen等の関数で(A)サーバーから画像を取ってくるような場合は、 ちょっとややこしくなります。

aa0701
質問者

補足

ご回答ありがとうございます。 また具体的なスクリプトを書いてくださり助かりました。 それほど難しくないとのことなので、 見よう見まねでやってみました。 しかしながら、サイトBでは画像が表示されませんでした。 テストに用いたのは、サイトAがxreaで サイトBがジオシティーズです。 サイトBでの画像表示のタグは <IMG src="http://サイト(A)/○○○.php"> を使いました。 せめてサイトAの中だけででも IPアドレスによって画像表示を変えられないかと いろいろ検索し試しましたら この点に関しましてはなんとかできました。 <?php $reqIP = $_SERVER["REMOTE_ADDR"]; if( $reqIP == "IPアドレス"){ echo "<img src=a.jpg>"; } else{ echo "<img src=b.jpg>"; } ?> <?php header("Content-type: image/jpeg"); header("Content-Disposition: inline; filename=" . $src); header("Content-length: " . filesize($src)); readfile($src); ?> 上記のようにしまして、IPアドレスを当方の物にすると a.jpgが表示され、当方以外のものにすると b.jpgが表示されました。 もう少しでサイトBでも画像を表示できそうな気がするのですが なんとか方法はないものでしょうか。 よろしくお願いいたします。

その他の回答 (2)

noname#30334
noname#30334
回答No.3

echo "<img src=a.jpg>"; ではなく $src = "a.jpg"; としてもダメなんでしょうか? そもそも、サイトBに <IMG src="http://サイト(A)/a.jpg"> と書いて、画像が表示されるのが前提ですが。 パスが違ったりしてませんよね?

aa0701
質問者

お礼

ありがとうございます。 おかげさまでできました! 様々な側面からのご指摘 本当にありがとうございました。 不要かもしれませんが、 問題解決に至るまでの過程を記しておきます。 ご指摘いただきましたとおりやっていましたが なぜか上手くいきませんでした。 パスの記入ミスもありませんでした。 そこで色々検索しました結果、 xreaの無料スペースではreadfile()関数の働きが 制限されるとのことでした。 http://sb.xrea.com/archive/index.php/t-10555.html 上記URLにありますとおり、 ディレクトリ「x」を利用することにより 当方の望む結果を得ることができました。 PHPをじっくり学んでからでないと やりたいことができないだろうと思いながらも この場を借り質問してみましてよかったです。 ありがとうございました!

回答No.1

> IPアドレス別に表示する画像を変えられますか? 変えられます。比較的簡単なスクリプトです。 接続者のIPアドレスは、$_SERVER['REMOTE_ADDR']で取得出来ますので、それに合わせて変えれば良いかと思います。 イメージの出力は、例えば下記のようなimg.phpを作成し <?php header('Content-type: image/jpeg'); if($_SERVER['REMOTE_HOST'] == "192.168.0.10"){ $fname = "192.168.0.10の時に表示するファイル名"; }else{ $fname = "192.168.0.10以外の時に表示するファイル名"; } readfile($fname); ?> として、画像表示には <img src="http://......../img.php" /> とすれば訪問者のIPアドレス別に表示する画像を変える事が出来ます。 (スクリプトは未検証です) 参考まで。

aa0701
質問者

お礼

ご回答ありがとうございました。 最初、当方の認識不足のため望む結果を得られませんでしたが、 いろいろ調べた結果ご教授いただいたことで問題解決できました。 的確かつ具体的なアドバイスありがとうございました!

aa0701
質問者

補足

ご回答ありがとうございます。 また具体的なスクリプトを書いてくださり助かりました。 比較的簡単にできるとのことなので、 見よう見まねでやってみました。 しかしながら、サイトBでは画像が表示されませんでした。 テストに用いたのは、サイトAがxreaで サイトBがジオシティーズです。 サイトBでの画像表示のタグは <img src="​http://......../img.php"​ /> を使いました。 せめてサイトAの中だけででも IPアドレスによって画像表示を変えられないかと いろいろ検索し試しましたら この点に関しましてはなんとかできました。 <?php $reqIP = $_SERVER["REMOTE_ADDR"]; if( $reqIP == "IPアドレス"){ echo "<img src=a.jpg>"; } else{ echo "<img src=b.jpg>"; } ?> <?php header("Content-type: image/jpeg"); header("Content-Disposition: inline; filename=" . $src); header("Content-length: " . filesize($src)); readfile($src); ?> 上記のようにしまして、IPアドレスを当方の物にすると a.jpgが表示され、当方以外のものにすると b.jpgが表示されました。 もう少しでサイトBでも画像を表示できそうな気がするのですが なんとか方法はないものでしょうか。 よろしくお願いいたします。

関連するQ&A