PHPで携帯サイトの構築を行っています。

ブラウザのバージョンを取得するために$_SERVER['HTTP_USER_AGENT']を使用しているのですが、PHPの警告メッセージが出力され、対策に悩んでおります。

●プログラム(test.php)
require_once "Net/UserAgent/Mobile.php";
$uno = $_SERVER['HTTP_USER_AGENT']; ← ここが警告メッセージが指摘する20行目です
<以下略>

●警告メッセージ
PHP Notice: Undefined index: HTTP_USER_AGENT in /var/www/html/test.php on line 20

Webで検索すると、無視していいようなことが書いてあるのですが、Undefinedというキーワードが気になって無視できそうにありません。

類似情報として、以下の対策を行っても警告メッセージは相変わらず出力されます。
http://pear.php.net/bugs/bug.php?id=13128&edit=12&patch=Net_UserAgent_Mobile.patch&revision=latest

また、以下のように書き換えることで警告メッセージを出さなくすることができますが、本当にそれでいいのかわかりません。
$uno = @$_SERVER['HTTP_USER_AGENT'];

質問は、
①上記警告メッセージの原因としてどのようなことが考えられますでしょうか?
②上記警告メッセージは無視してよいものでしょうか?

ご教授のほど、よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/11/09 18:35:10
  • 終了:2009/11/09 22:37:13

ベストアンサー

id:sirotugu40 No.2

sirotugu40回答回数449ベストアンサー獲得回数142009/11/09 19:14:02

ポイント35pt

サーバー変数のHTTP_USER_AGENTが定義されていない場合があるのでしょう。

http://q.hatena.ne.jp/answer

id:cochoo

ご回答頂きありがとうございます。

普通に echo $_SERVER['HTTP_USER_AGENT'] でも同等の警告メッセージが出力されます。

このとき、phpinfo()で見ると、Apache EnvironmentにHTTP_USER_AGENTが以下のように登録されています。

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

Apacheかphpの設定の問題でしょうか?

2009/11/09 21:17:11

その他の回答(1件)

id:azumi1975 No.1

azumi1975回答回数337ベストアンサー獲得回数162009/11/09 18:43:46

ポイント35pt

http://aym.pekori.to/php/tutorial.useful.html

'HTTP_USER_AGENT'が登録されていないときに、警告を出すのではないでしょうか?

毎回でるのですか?

id:cochoo

ご回答頂きありがとうございます。再現性は100%です。

普通に でも同等の警告メッセージが出力されます。

このとき、phpinfo()で見ると、Apache EnvironmentにHTTP_USER_AGENTが以下のように登録されています。

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

Apacheかphpの設定の問題でしょうか?

2009/11/09 21:15:18
id:sirotugu40 No.2

sirotugu40回答回数449ベストアンサー獲得回数142009/11/09 19:14:02ここでベストアンサー

ポイント35pt

サーバー変数のHTTP_USER_AGENTが定義されていない場合があるのでしょう。

http://q.hatena.ne.jp/answer

id:cochoo

ご回答頂きありがとうございます。

普通に echo $_SERVER['HTTP_USER_AGENT'] でも同等の警告メッセージが出力されます。

このとき、phpinfo()で見ると、Apache EnvironmentにHTTP_USER_AGENTが以下のように登録されています。

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

Apacheかphpの設定の問題でしょうか?

2009/11/09 21:17:11

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません