dポイントプレゼントキャンペーン実施中!

当方の管理するサイト(A)に画像をアップし、
その画像を他のサイト(B)で表示する時に
Aに置くPHPファイルでBの訪問者のIPアドレス別に
表示する画像を変えられるのでしょうか。

もし可能でしたら、これからPHPを学習しようと考えており、
当方が必要とする部分が載っている本やサイトがありましたら
ご教授願えるとありがたいです。

こちらのOKWaveに行き着くまでに調べた結果、
CGIでは当方がしたいことができるようです。
蛇足かもしれませんがURLを載せておきます。
http://72.14.235.104/search?q=cache:ERkmUmpqInwJ …

どうぞよろしくお願いいたします。

A 回答 (3件)

サイト(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)サーバーから画像を取ってくるような場合は、
ちょっとややこしくなります。

この回答への補足

ご回答ありがとうございます。
また具体的なスクリプトを書いてくださり助かりました。

それほど難しくないとのことなので、
見よう見まねでやってみました。

しかしながら、サイト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でも画像を表示できそうな気がするのですが
なんとか方法はないものでしょうか。

よろしくお願いいたします。

補足日時:2007/02/16 17:41
    • good
    • 0

echo "<img src=a.jpg>";


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

ありがとうございます。
おかげさまでできました!
様々な側面からのご指摘
本当にありがとうございました。

不要かもしれませんが、
問題解決に至るまでの過程を記しておきます。

ご指摘いただきましたとおりやっていましたが
なぜか上手くいきませんでした。
パスの記入ミスもありませんでした。

そこで色々検索しました結果、
xreaの無料スペースではreadfile()関数の働きが
制限されるとのことでした。

http://sb.xrea.com/archive/index.php/t-10555.html
上記URLにありますとおり、
ディレクトリ「x」を利用することにより
当方の望む結果を得ることができました。

PHPをじっくり学んでからでないと
やりたいことができないだろうと思いながらも
この場を借り質問してみましてよかったです。

ありがとうございました!

お礼日時:2007/02/17 20:50

> 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アドレス別に表示する画像を変える事が出来ます。
(スクリプトは未検証です)

参考まで。

この回答への補足

ご回答ありがとうございます。
また具体的なスクリプトを書いてくださり助かりました。

比較的簡単にできるとのことなので、
見よう見まねでやってみました。

しかしながら、サイト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でも画像を表示できそうな気がするのですが
なんとか方法はないものでしょうか。

よろしくお願いいたします。

補足日時:2007/02/16 17:36
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
最初、当方の認識不足のため望む結果を得られませんでしたが、
いろいろ調べた結果ご教授いただいたことで問題解決できました。

的確かつ具体的なアドバイスありがとうございました!

お礼日時:2007/02/17 21:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!