人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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'];

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

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

●質問者: cochoo
●カテゴリ:ウェブ制作
✍キーワード:HTML INDEX NET ON PHP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● azumi1975
●35ポイント

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

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

毎回でるのですか?

◎質問者からの返答

ご回答頂きありがとうございます。再現性は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の設定の問題でしょうか?


2 ● sirotugu40
●35ポイント ベストアンサー

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

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

◎質問者からの返答

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

普通に 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の設定の問題でしょうか?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ