• ベストアンサー

ユーザーエージェントによって表示される画像を変更したいのですが

cgiでユーザーエージェントによって、 ホームページに表示される画像を変更したいのですが、 プログラム・やり方を教えていただけないでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • pick52
  • ベストアンサー率35% (166/466)
回答No.2

ANo.1さんの回答の補足になりますけど UAはブラウザによっては偽装とかもできますけどそれを承知の上で でしょうか。 どうしてもCGIでやりたいとかクライアント側の環境依存などを 考慮したいというのでなければたしかにJavaScriptの方が簡単かも しれません。 JavaScriptは対応環境でも無効にしたら動作しません。

ddtqp
質問者

お礼

回答ありがとうございます。 >JavaScriptは対応環境でも無効にしたら動作しません。 そうですね。携帯かPCで閲覧ページを切り替えたかったのですが駄目ですね。

その他の回答 (2)

  • Suzi
  • ベストアンサー率38% (130/334)
回答No.3

>>javaのコードを書いていただけないでしょうか。 JavaとJavascriptは別なものですが、求めうる細かい条件が分からないので書きようがないのが実際です。  携帯からだと、Javascriptは厳しいのでcgiになると思います。  それぞれ携帯のuser_agentは、各携帯サイトに記されています。 以下、cgiだと #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html><head>\n"; ・・・・・・ $agent = $ENV{'HTTP_USER_AGENT'}; if($agent =~ /^DoComo/){ $imege = aaaa.jpg; }elsif($agent =~ /^J-PHONE/){ $imege = bbbb.jpg; }elsif($agent =~ /^UP.Browser|^KDDI/){ $imege =cccc.jpg; ・・・・ ・・・・ else{ $imege =zzzz.jpg; #PC用 } print "<img src=\"./imege/$imege\">\n"; ・・・・・・ print "</body>\n</html>\n";  たしか、携帯機種によってjpgやらpng、gifのみとかありましたね。

ddtqp
質問者

お礼

回答ありがとうございます。 とてもわかりやすいコードです。 勉強になりました。

  • Suzi
  • ベストアンサー率38% (130/334)
回答No.1

$usrAgent = $ENV{"HTTP_USER_AGENT"};  とすると、$usrAgentには、http://www.openspc2.org/userAgent/ のようなアクセス者のデーターが入ります。 if($usrAgent =~ /MSN/){  print "<img src=\"./image/aaaaa.jpg>\" }elsif($usrAgent =~ /Mac/){  print "<img src=\"./image/bbbbb.jpg>\" }elsif・・・・・・ とかになります。  ただトップページにそれをやるには、index.htmlなどをindex.cgiとかにし、.htaccess に DirectoryIndex index.cgi index.html などと記さなければなりませんが、これだけならCGIよりも通常のHTML + Javascriptでやった方が簡単だと思います。 <HEAD>~</HAED>内に <script language="JavaScript"> <!-- function Image(){  if(navigator.appName.charAt(0)=="N" ){   document.write("<img src=\"./image/aaaaa.jpg>");  }else{   document.write("<img src=\"./image/bbbbb.jpg>");  } } //--> </script> 表示させたいhtmlの箇所に <script language="JavaScript"> Image(); </script>  Javascriptの詳細は、Javascriptのカテゴリーにてですが。

ddtqp
質問者

補足

携帯かPCかで、表示させる画像を変えたいのですが、 javaのコードを書いていただけないでしょうか。 javaがわかりません。

関連するQ&A