• ベストアンサー

携帯端末振り分けソースがソフトバンク端末でうまくいかない?

携帯端末振り分けの以下のソースを利用していますが、ソフトバンクからフリーで配布されている「ウェブコンテンツビューア」というシュミレータを使いテストするとtype1~3いずれもデスクトップと判断されてしまいます。 「ウェブコンテンツビューア」は何か設定が必要なのでしょうか?、それともこれらのソースにはソフトバンク端末に対するソースのミスがあるのでしょうか? #type1 if($ua=~ /DoCoMo/){$user_agent = 'mobile';} elsif($ua=~ /J-PHONE\/2/){$user_agent = 'mobile';} elsif($ua=~ /J-PHONE\/[3-9]/){$user_agent = 'mobile';} elsif($ua=~ /Vodafone/){$user_agent = 'mobile';} elsif($ua=~ /SoftBank/){$user_agent = 'mobile';} elsif($ua=~ /ASTEL/){$user_agent = 'mobile';} elsif(index($ua,"UP.Browser")==0){$user_agent = 'mobile';} elsif(index($ua,"UP.Browser") > 0){$user_agent = 'mobile';} else{$user_agent = 'desktop';}#Mac and PC #type2 if($ua =~ /^(DoCoMo\/1)/i){$user_agent = 'mobile';}#DoCoMo elsif($ua =~ /^(DoCoMo\/2)/i){$user_agent = 'mobile';}#DoCoMo_FOMA elsif($ua =~ /^ASTEL/i){$user_agent = 'mobile';}#ASTEL elsif($ua =~ /^J\-PHONE/i){$user_agent = 'mobile';}#softbank elsif($ua =~ /^Vodafone/i){$user_agent = 'mobile';}#softbank elsif($ua =~ /^SoftBank/i){$user_agent = 'mobile';}#softbank elsif($ua =~ /^KDDI/i){$user_agent = 'mobile';}#au elsif($ua =~ /^UP\.Browser/i){$user_agent = 'mobile';}#au else{$user_agent = 'desktop';}#Mac and PC #type3 if ($ua =~ /DoCoMo|J-PHONE|Vodafone|Softbank|MOT-|L-mode|DDIPOCKET|PDXGW|ASTEL/ ) { $user_agent = 'mobile'; } else{$user_agent = 'desktop';}

  • Perl
  • 回答数2
  • ありがとう数6

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

  • ベストアンサー
  • jfk26
  • ベストアンサー率68% (3287/4771)
回答No.1

これは要するにuser_agentに各キャリアに含まれる固有の文字列で、携帯であることを確定してそれ以外はPCであると判断しようということですね。 そうすると下記の参考URLを見てください。 各キャリアのシュミレーターについて書いてあるのですが、その下の方に「ソフトバンク ウェブコンテンツビューア」にも触れられています。 この中で『※注意点!』としてこう書いてあります。 「このシミュレータで注意しなければならない点があります。 このシミュレータでは「USER_AGENT」という識別子を発信して いません。」 シュミレーターだけわざわざ「USER_AGENT」という識別子を発信しないように作ったと言うのは考えにくく、そもそも「ソフトバンク ウェブコンテンツビューア」自体が仕様として「USER_AGENT」という識別子を発信しないようになっているのではないですか。 そうすると「ソフトバンク ウェブコンテンツビューア」の場合は携帯とは確認されずに、その以外に含まれてしまってPCと判断されてしまうということではないでしょうか。 下記のサイトにはさらに 「携帯で閲覧すると自動で振り替えを行う.htaccess や.cgi などをご使用の際は確認できないことがありますので注意してください。 その際はSoftbank用(Vodafone用)のページのアドレスを直接入力するようにしてください。」 と書いてあります。

参考URL:
http://blog.mag2.com/m/log/0000199475/107827584.html?js
perlerz10
質問者

お礼

その通りでした。通らないわけです。 「Semulator」なんていう「USER_AGENTをもたされていました。 ありがとうございました。

その他の回答 (1)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

ウェブコンテンツビューアのHTTP_USER_AGENTは本物とは違って 'SoftBank' という文字列は入っていないようです。 全部を調べた訳ではありませんが 'Vemulator'というのがUAの最初に入っているようですのでシミュレータに合わせるなら、'Vemulator'が含まれていたらSoftBankと判定してはどうでしょう。

perlerz10
質問者

お礼

ありがとうございます。 夜中にねぼけてd/lして使い始めたもので、いやーびびりました。

関連するQ&A

  • 携帯とPCの振り分け

    同じドメインにて携帯とPCの振り分けなのですが、htaccessにて振り分けたのですが、ブラウザに「振り分けがループしています」とでるのですが、 これはなぜでしょう? htaccessの中身の内容ですが、 DirectoryIndex index.php index.html index.htm これで読み込んだindex.phpの中身は <?php $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ header("Location: http://www.○○○○○.com/mobile/index.xhtml"); exit; }else if(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent)){ header("Location: http://www.○○○○○.com/mobile/index.xhtml"); exit; }else if(preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)){ header("Location: http://www.○○○○○.com/mobile/index.xhtml"); exit; }else{ header("Location: http://www.○○○○○.com/"); exit; } ?> サーバはlolipopでhtaccessのパーミッションは604で phpのパーミッションは700です。

    • 締切済み
    • CGI
  • ユーザーエージェント(ソフトバンク)

    初めて投稿いたします。 現在PHPで携帯とPCの振り分けのプログラムを 作っていますが、ソフトバンクのエミュレーターで 試したところ、どうしてもPCの方のサイトへ飛んでいってしまい ます。ユーザーエージェントは "SoftBank"を返すはずなので 問題ないはずなんですが、どなたか原因が分かりましたら ご教授いただけると大変幸いです。 ----------------------------------------------------------- $user_agent= explode( "/", $_SERVER['HTTP_USER_AGENT']); $GB['user_agent0']=$user_agent[0]; if(preg_match("/^KDDI/",$user_agent[0])) $GB['env'] = "i"; switch( $user_agent[0] ){ case "DoCoMo" : case "L-mode" : case "ASTEL" : case "UP.Browser" : case "PDXGW" : case "SoftBank" : case "Vodafone" : case "J-PHONE" : $GB['env'] = "i";

    • 締切済み
    • PHP
  • 写メールBBSの携帯ページSoftBank振り分けについて

    レッツPHPの写メールBBSを使用しています。 私、個人はauの携帯電話で、友達のドコモも問題なく見れていました。 過去にはボーダフォンの携帯でも問題なく見れていました。 しかし、先月くらいからSoftBankの人から「パソコン用のページが表示される!」と連絡が入りました。 確認すると間違いなくPC用のHTMLを読み込んでいます。 振り分けの記述は下記のデフォルトの通りなんですが。。。 $env = "pc"; $ua = explode("/", $_SERVER['HTTP_USER_AGENT']); if (strstr($ua[0], "DoCoMo")) { $env = "i"; // DoCoMo } elseif (preg_match("#^UP.Browser|KDDI#i", $ua[0])) { $env = "i"; // au } elseif (preg_match("#^J-PHONE|Vodafone|SoftBank|MOT#i", $ua[0])) { $env = "i"; // Vodafone 携帯の設定では無いような気がしますが、どうしたら携帯用のページを表示させてますでしょうか??

    • ベストアンサー
    • PHP
  • リダイレクト転送について

    URL一つで使用端末の種類別のURLに飛ばしたいのですが CGIぼんさんのところのUser Agent を使った方法のを採用したいと考えています。 # User Agent によるキャリア判別 @user_agent = split(/\//,$ENV{'HTTP_USER_AGENT'}); if ($user_agent[0] eq 'ASTEL') { # ドットi 用の処理 } elsif ($user_agent[0] eq 'UP.Browser') { # EZweb 旧端末用の処理 } elsif ($user_agent[0] =~ /^KDDI/) { # EZweb WAP2.0 対応端末用の処理 } elsif ($user_agent[0] eq 'PDXGW') { # H" 用の処理 } elsif ($user_agent[0] eq 'DoCoMo') { # i-mode 用の処理 } elsif ($user_agent[0] eq 'J-PHONE') { # J-SKY 用の処理 } elsif ($user_agent[0] eq 'L-mode') { # L-mode 用の処理 } else { # それ以外 } 具体的にはどのような記述にしてどこにアップすればよいのでしょうか? 初心者なので御教授戴ければ幸いです

    • ベストアンサー
    • CGI
  • mod_rewriteで携帯/PCサイト振り分けの記述について

    現在PCサイトを持っていまして、このサイトの携帯版を作りました。 そこでmod_rewriteを使って.htaccessへの記述でお伺いします。 (mod_rewritは借りているサーバーにインストールされています)。 現在のPCサイトは、 http://www○○○.com/です。 携帯サイトは、  DoCoMo:http://www○○○.com/mobaile/i/  Softbank:http://www○○○.com/mobaile/v/  au:  http://www○○○.com/mobaile/ez/ です。 ■携帯振り分けの.htaccessは下記のとおりなのですが、これであっていますか?オプションなども大丈夫でしょうか? RewriteEngine On #DoCoMo端末へのリンク RewriteCond %{HTTP_USER_AGENT} ^DoCoMo RewriteRule ^$ http://www○○○.com/mobile/i/[L] #Vodafone、J-Phone、Softbank端末へのリンク RewriteCond %{HTTP_USER_AGENT} ^vodafone [OR] RewriteCond %{HTTP_USER_AGENT} ^softbank [OR] RewriteCond %{HTTP_USER_AGENT} ^J-PHONE RewriteRule ^$ http://www○○○.com/mobile/v/[L] #KDDI、au端末へのリンク RewriteCond %{HTTP_USER_AGENT} ^KDDI [OR] RewriteCond %{HTTP_USER_AGENT} ^Up.Browser RewriteRule ^$ http://www○○○.com/mobile/ez/[L] ■また、PCでアクセスした場合のRewriteCondの書き方がわかりません。 上記以外の場合はPCサイト:http://www○○○.com/にアクセスするにはどのようにしたらよいのでしょうか? お手数ですがおわかりの方がいましたらよろしくお願いします。

    • 締切済み
    • CGI
  • i Phone 用振り分け

    以下のように携帯キャリアごとに振り分け、3キャリア以外は PCフォルダに振り分けるようにした場合ですが、PCフォルダの方で i Phone 用に幅480pxで作成したページを配置すると PCから http://mypage.net/ でアクセスしたユーザーにも i Phone 用の幅480pxページを見せるようになってしまいますか? i Phoneやスマートフォンの対処はどうされているんでしょうか? <?php $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ header("Location: http://mypage.net/i/index.html"); exit; }else if(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent)){ header("Location: http://mypage.net/s/index.html"); exit; }else if(preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)){ header("Location: http://mypage.net/e/index.html"); exit; }else{ header("Location: http://mypage.net/pc/index.html"); exit; } ?>

    • ベストアンサー
    • PHP
  • .htaccessによる携帯・PCアクセス振り分けについて

    下のような内容の.htaccessで、http://www.test/index.htmlに携帯でアクセスしてくるのをhttp://www.test/mobile/ に飛ばせるようにしています。ちなみに.htaccessはhttp://www.test/index.htmlの横に置いています。 ------------------------------------------ Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank) RewriteRule ^$ http://www.test/mobile/index.html [R] ------------------------------------------ しかし、これだと http://www.test/index.html に携帯でアクセスした場合はきちんと飛ばされますが、例えば http://www.test/Profile/Profile.html といった、中に入ったページに携帯でアクセスした場合、うまく飛んでくれません。 どうしたら良いのでしょうか? 宜しくお願い致します。

  • PHPによる端末振り分けについて

    宜しくお願いします。 現在は、PERLでPC・各携帯キャリアへの振り分けを行っております。ソースは・・・ #!/usr/bin/perl #index.cgi # #ジャンプ先の設定 # #iモード $imode = "http://www.****.jp/i/index.html"; #EZweb $ezweb = "http://www.****.jp/e/index.html"; #J-Sky $jsky = "http://www.****.jp/j/index.html"; #パソコン $pc = "http://www.****.jp/pc/index.html"; # #ブラウザ情報の取得 # $brwsr = $ENV{'HTTP_USER_AGENT'}; # #判別 # #iモードの判別 if ($brwsr =~ /DoCoMo/){ print "Location: $imode\n\n"; } #EZwebの判別 elsif ($brwsr =~ /UP.Browser/){ print "Location: $ezweb\n\n"; } #J-Skyの判別 elsif ($brwsr =~ /J-PHONE/){ print "Location: $jsky\n\n"; } #その他(パソコン) else { print "Location: $pc\n\n"; } exit; という形で自動振り分けをしておりますが、これと同じ機能をPHPで作るにはどうすれば良いでしょうか?

    • ベストアンサー
    • PHP
  • 携帯端末認識User-Agentについて

    初心者なのですが、CGIで携帯サイトを作っていますが。 実機がうまく動きません。User-Agentに問題があると考えています。 現在のソースと主な現象を記しますので、適切なものを教えて下さい。お願いします。 #----------# # 端末認識 # #----------# sub useragent { my $ua; #次にi-mode端末かどうかチェック if ($ENV{'HTTP_USER_AGENT'} =~ /^DoCoMo\/\d/) { $ua = 1; #次にJ-Phone端末かどうかチェック } elsif ($ENV{'HTTP_USER_AGENT'} =~ /^J-PHONE\/\d/) { $ua = 2; #EZweb端末かどうかチェック } elsif (($ENV{'HTTP_USER_AGENT'} =~ 'UP.B') && ($ENV{'HTTP_X_UP_SUBNO'} ne "")){ $ua = 3; #その他はPCとする } else { $ua = 0;} #PCブラウザ再判定 if ($ENV{'HTTP_USER_AGENT'} =~ /Mozilla\/|MSIE|Netscape|Opera|Lynx|AOL|Gecko/) {$ua = 0;} return $ua; } 主な現象 AU:ページ表示ごとに、いちいちブラウザメニューからページ更新をしなければならない(AUの特性もありますが) ソフトバンク:携帯版ではなく、PC版が表示されてしまう。 ドコモ :Pは問題ないようだが、SHは会員登録画面のフォームが半分の項目しか表示されず、次のページで残りの半分 は表示されるが、フォームにすべて書き込んで、登録送信をクリックしても、エラーデータ、の表示が出る。

    • 締切済み
    • CGI
  • 携帯とPC振り分け

    現在PCサイトを作っています。 携帯からアクセスがあった場合に振り分け(?)したいと思っていて、現在ソースがこんなかんじです。 .htaccessに DirectoryIndex index.php index.cgi index.html index.shtml と書いてあって、 <?php $mobile = print <<<MOBILE <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <title>携帯には対応していません(HPタイトル)</title> </head> <body> 携帯には対応していません。(HPタイトル) </body> </html> MOBILE; if(isset($_SERVER['HTTP_USER_AGENT'])){ $user_agent = $_SERVER['HTTP_USER_AGENT']; if(eregi("DoCoMo",$user_agent)){$mobile;exit;} else if(eregi("UP\.Browser",$user_agent)){$mobile;exit;} else if(eregi("J-PHONE",$user_agent)){$mobile;exit;} else if(eregi("Vodafone",$user_agent)){$mobile;exit;} else if(eregi("mobile",$user_agent)){$mobile;exit;} else if(eregi("J-EMULATOR",$user_agent)){$mobile;exit;} else{header("Location: index.html");exit;} }else{ print <<<END <html><body> HTTP_USER_AGENT Error<br /><br /> ユーザーエージェントが読み込めませんでした。<br /> </body></html> END; } ?> こんな感じです。 ですが、エラーはいてしまいます。 Warning: Cannot modify header information - headers already sent by (output started at D:\XAMPP\htdocs\index.php:16) in D:\XAMPP\htdocs\index.php on line 26 こんな感じです。 まったくのPHP初心者(HTMLはまあまあわかる)なので だいぶソースが間違っていると思います。 このPHPのソースは携帯サイトnet(http://www.keitai-site.net/)からいただきました。

    • ベストアンサー
    • PHP