• ベストアンサー

キャリア判別

キャリア判別するため見よう見まねで以下の通りindex.phpを作成しまして、i,e,sのフォルダにそれぞれindex.htmlを入れまいが、真白で 何も映りません、なぜでしょうか?教えてください。 <?php $ua = $_SERVER['HTTP_USER_AGENT']; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD Compact HTML 1.0 Draft//EN"><HEAD> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="cache-control" content="max-age=0"> <META name="keyword" content=""> <META name="description" content=""> <META name="robots"content="index,follow"> </HEAD> <body> <?php switch(TRUE){ case preg_match("/^DoCoMo\/2\.0/i", $ua): case preg_match("/^DoCoMo\/1\.0/i", $ua): $carrier = "i"; break; case preg_match("/^SoftBank/i", $ua): case preg_match("/^J\-PHONE/i", $ua): case preg_match("/^Vodafone/i", $ua): case preg_match("/^MOT/i", $ua): $carrier = "s"; break; case preg_match("/^KDDI\-/i", $ua): case preg_match("/^UP.Browser/i", $ua): $carrier = "e"; break; default: $carrier = "pc"; break; } $html_filename = "index.html"; $html_filepath = "templates/" .carriers. "/" .$html_filename; $output = @file_get_contents($html_filepath); echo $output; ?> </body> </html>

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

  • ベストアンサー
  • atse
  • ベストアンサー率83% (36/43)
回答No.1

> i,e,sのフォルダにそれぞれindex.html PC用のフォルダも用意していますか? 用意していなければ、PCで見ても何も表示されません。 > $html_filepath = "templates/" .carriers. "/" .$html_filename; carriers は $carrier の間違いかな。 templatesフォルダの中に各キャリアフォルダを用意していることを確認する。 あとは $html_filepath とかもちゃんと中身を見ればわかるかと思いますよ。

kurobon619
質問者

補足

atseさんありがとうございます。 >carriers は $carrier の間違いかな。 これは間違えでした。後フォルダのtempletsを考慮に入れてなかった という単純ミスです。 ようやくテキスト映ることができましたが、画像をiならiのフォルダに中にいれ img srcもちゃんといれたのに×になっています。これはもうPHPの問題ではないとおもいますがどうしてでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • tk_uc
  • ベストアンサー率68% (33/48)
回答No.5

ところで、PEAR::Net_UserAgent_Mobileを使うのも手ですよ。 よくメンテされているように見受けられます。

kurobon619
質問者

お礼

なるほどPEAR::Net_UserAgent_Mobileですか。 tk_ucさんありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • tk_uc
  • ベストアンサー率68% (33/48)
回答No.4

phpで画面真っ白なら、とりあえずはPHPがエラーになっているもののエラー出力されない設定になっている、という可能性を疑いましょう。 WEBサーバーのエラーログを見るか、 ini_set( "display_errors", "On"); か error_reporting(E_ALL); を先頭の方に追加してエラー表示されないか再実行して確認。 その際、@file_get_contentsの@も外しておくこと。

全文を見る
すると、全ての回答が全文表示されます。
noname#90314
noname#90314
回答No.3

$html_filepath = "templates/" .carriers. "/" .$html_filename; carreiers => $carriers になっていないため アウト! とか・・・ PCでみていて PC用ディレクトリがないため アウト! とか・・・

kurobon619
質問者

お礼

carreiers => $carriers になっていないため アウト! でした。 hm_kitさんありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

preg_match()の戻り値は真・偽ではありません。 見つからなかった特は0、見つかったときは1以上です。 よって switch($ua){ case (preg_match("/^DoCoMo\/2\.0/i", $ua) > 0): case (preg_match("/^DoCoMo\/1\.0/i", $ua) > 0): $carrier = "i"; break; ではないでしょうか? それともswitch(TRUE){ って聞き方もあるのでしたっけ?

kurobon619
質問者

お礼

単純なミスでした。 switch(TRUE){ でも大丈夫みたいです。 yyr446さんありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • このMETAタグまちがっていますか?

    サーチエンジンで 減量を引っかけたいときには下記であってますか? あるサイトからもってきたのですが 特に <META content=index,follow name=robots> というのがよく意味がわかりませんでした <META http-equiv=keywords content=減量> <META http-equiv=abstract content=減量> <META content=減量 name=description> <META content=index,follow name=robots> <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"> <META http-equiv=pragma content=no-cache> <META http-equiv=cache-control content=no-cache>

    • ベストアンサー
    • HTML
  • HTMLの画像自動更新について

    現在、 <meta http-equiv="Refresh" content="5">で自動更新をしているのですが、 毎回同じ画像が表示されてしまいます。 F5を押すと画像は更新されます。 キャッシュに問題があるのではと調べて下記のように書きました。 <HTML> <HEAD> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Pragma" content="no-cache"> <meta equiv="Expires" content="-1"> <meta http-equiv="Refresh" content="5;URL=index_i_i.html"> URLの「index_i_i.html」は同じHTMLファイル(名前は変えて)を用意して交互に飛ぶように設定しました。 ですが、上記の記述でも同じ画像が表示されます。 F5では更新されるのですが、F5と同じ更新をHTML内に記述するにはどうしたらよろしいのでしょうか? できれば、CGIやスクリプトは使いたくないのですが、使わなくてはいけないのであれば、教えてください。 お願いします。

    • ベストアンサー
    • HTML
  • Smartyを使用した、テンプレート内でのキャリア振り分け

    宜しくお願い致します。 現在モバイルサイトを構築しており、PHP+Smartyを利用しているのですが、テンプレート内で"if文"を利用した(ユーザーエージェントによる)キャリア振り分けをしたいと考えています。 ロジックとしては、PHPファイル内でユーザーエージェントを取得し、変数に適当な値を入れる。 その変数をassignし、テンプレート内ではき出す際に条件分岐。 と考えているのですが、うまくいきません。 ご教授いただけましたら幸いです。 なお、ソースは下記のようになります。 【carrier.php】※ディレクトリーの指定など一部省略 $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ $ca == "i"; }else if(preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)){ $ca == "ez"; }else if(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent)){ $ca == "sb"; }else { $ca == "pc"; } $tpl->assign('ca','$ca'); $tpl->display('carrier.html'); 【carrier.html】 {if $ca == "ez"}ezです{/if}

    • ベストアンサー
    • PHP
  • METAタグなどについて

    ミケネコ研究所にてHPを採点してもらい修正した結果、 ようやく100点をとることができましたが <HEAD>内が下記のようになりました。 私として気になることが2点あります。 1.<META http-equiv="~が3つあって良いのでしょうか。 2.index,followは大文字小文字を区別するようですが どちらが良いのかわかりません。 1.2.どちらの回答をいただいても結構です。 <HEAD> <LINK rel="Index" href="index.htm"> <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"> <META name="robots" content="index,follow"> <META name="description" content="×××"> <META name="keywords" content="×××"> <TITLE>×××</TITLE> </HEAD> ご回答よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • METAタグについて。

    <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <meta http-equiv="Content-Style-type" content="text/css"> <meta name="author" content="***"> <meta name="keywords" content="***"> <meta name="description" content="***"> <meta name="robots" content="index,nofollow"> 現在、これだけのMETA要素を入れたINDEXページを作成しています。 そこで疑問に思ったのですが、 1.METAは全てのページに入れなければならないのでしょうか? 2.(1が[入れなくてもいい]という回答の場合) 全ての[index.html]には入れるべきですか? 3.上記のMETA要素で、「これはいらない」という物、 あるいは「これは入れたほうがいい」という物を教えて下さい。 以上です。回答よろしくお願いします。

    • ベストアンサー
    • HTML
  • METAタグについて

    HPに以下の様な記述をしたのですが、gooやinfoseekに登録して1週間経ても、全く検索されません。 <meta http-equiv="content-type" content="text/html; charset=shift_jis"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta name="robots" content="index,follow"> <meta name="keywords" content=""> <meta name="description" content=""> 正しい記述方法について、何方か教えて下さい。

    • ベストアンサー
    • HTML
  • PHPを埋め込んだのに・・・

    <?php $UA = $_SERVER{'HTTP_USER_AGENT'}; if (substr_count($UA,"DoCoMo")) { header("Location: http://tyaku-uta.s140.xrea.com/imode/index.html"); } else if (substr_count($UA,"J-PHONE")) { header("Location: http://www.abcde.com/jphone.html"); } else if (substr_count($UA,"UP.Browser")) { header("Location: http://www.abcde.com/au.html"); } ?> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 8.0.0.0 for Windows"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE></TITLE> </HEAD> <BODY> ・ ・ ・ </BODY> </HTML> これで、UAで振り分けようと思ったのですが、うまく作動してくれません。是非、教えて頂けないでしょうか?

    • ベストアンサー
    • PHP
  • 携帯サイト文字化け

    いつもお世話になっております。 現在、既存システムの携帯サイトを作っているのですが、 auでの文字化けが解決できずに困っています。 1週間程悩んでいるのですが、 自分で解決するにはかなり限界がきています。 そこで、ここのサイトで質問させて頂くことにしました。 詳細内容 ・開発言語:PHP ・データベース:MySQL ・文字コード:EUC-JP(既存システムが全てEUC-JPで作成されているので、携帯サイトもEUC-JPで作成しています。) ・システム概要:既存システム(物件検索システム)の携帯対応 データベースに保存されているデータを取得して、表示させる。 ・バグ内容:auでの文字化け *ただ、au携帯でも文字化けが起こる機種と起こらない機種が存在します。 例えば、W61SAだと起こりませんが、W44TやW53CAだと文字化けが発生します。 ヘッダー部分の書き方に問題があると思うのですが、 文字化け対策についてアドバイスを頂けないでしょうか? <?php //キャリア判定_start function GetCarryer($agent){ if (preg_match("/^DoCoMo\/2\.0/i", $agent)) { // DoCoMo FOMA (XHTML) $type="DOCOMO"; } else if (preg_match("/^DoCoMo\/1\.0/i", $agent)) { // DoCoMo MOVA $type="DOCOMO"; } else if (preg_match("/^SoftBank/i", $agent)) { // SoftBank $type="SOFTBANK"; } else if (preg_match("/^(Vodafone|MOT-)/i", $agent)) { // Vodafone 3G $type="SOFTBANK"; } else if (preg_match("/^J\-PHONE/i", $agent)) { // Vodafone 1G,2G } else if (preg_match("/^KDDI\-/i", $agent)) { $type="AU"; // au (XHTML) } else if (preg_match("/UP\.Browser/i", $agent)) { // au (HDML) TU-KA $type="AU"; } else if (preg_match("/WILLCOM/i", $agent) || preg_match("/DDIPOCKET/i", $agent)) { // WILLCOM Air EDGE $type="SOFTBANK"; } else if (preg_match("/^PDXGW/i", $agent)) { // WILLCOM EDGE LINK $type="SOFTBANK"; } else if (preg_match("/^(L\-mode)/i", $agent)) { // L-mode $type="NG"; } else { //PC or フルブラウザ $type="PC"; } return $type; } $agent = $_SERVER['HTTP_USER_AGENT']; if(GetCarryer($agent)=="PC"){ print<<<ERROR <div style="margin:20px auto 0px auto;text-align:center;color:#4E4E4E;font-size:14px;">このサイトはパソコンからは見ることが出来ません。</div> ERROR; exit; } //キャリア判定_end //DocomoのCSS対策 header('Content-Type: application/xhtml+xml; charset=EUC-JP'); print <<<DATA <!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" lang="ja" xml:lang="ja"> DATA; ?> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=EUC-JP" /> <meta http-equiv="Content-Type" content="text/css" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Cache-Control" content="no-cache" /> <meta http-equiv="Expires" content="-1" /> <meta name="description" content="" /> <meta name="keywords" content="テスト投稿1件目" /> <title>モバイル版テストページ</title> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <a name="top"></a> <div style="background-color:#333399"><div style="font-size:xx-small; color:#FFFFFF; text-align:center">モバイル版テスト用会社</div></div> <div><img src="../../../img/spacer.gif" height="5"></div> <div style="font-size:xx-small;"> <div style="color:#000099;">テスト投稿</div> <hr size="1" style="margin-top:2px;margin-bottom:2px;" /> <div><img src="../../../img/spacer.gif" height="3"></div> <div style="font-size:xx-small;"> テスト投稿07<br /> <?php /** 処理省略(データベースからデータの取得と出力処理) **/ ?> <a href="#">>>詳細へ</a> <br /> </div> <hr size="1" style="margin-top:2px;margin-bottom:2px;" /> <a href="#" accesskey="0">トップページへ</a> </div> </body> </html>

    • ベストアンサー
    • PHP
  • 孫ファイルに書き込むメタタグは何が必要?

    トップページのindexからみて孫にあたるhtmlファイルにどのようなメタタグを書き込んだらいいでしょうか? 今はトップページと同じく <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta name="description" content=""> <meta name="Keywords" content=""> の4つを書き込んでいます。

    • ベストアンサー
    • HTML
  • SafariでPHPソースがそのまま表示される

    Safariでindex.phpを開くとソースコードがそのまま表示されてしまいます。 拡張子をphpとしているだけでソース内にはphpスクリプトは記述しておりません。 なぜでしょうか? ※ファイル名をindex.htmlに変えると正しく表示されます。 Windows 7 Home Premium 64bit Safari5.1.5 ソースコードのエンコーディング:utf-8 <!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=utf-8" /> <meta http-equiv="content-style-type" content="text/css" /> <meta http-equiv="content-script-type" content="text/javascript" /> <meta name="keywords" content="" /> <meta name="description" content="" /> <title>テストtitle> </head> <body> <h1>テストページ</h1> </body> </html>