PHPでブラウザ情報を取得する

 このエントリーをはてなブックマークに追加

投稿日:2011/12/24

/**
 * ブラウザを判別してバージョンを取得する
 * @see http://d.hatena.ne.jp/Akkiesoft/20091004/1254599409
 */
$agent = $_SERVER['HTTP_USER_AGENT'];
if ($pos = strpos($agent, 'MSIE')) {
 $name = 'MSIE';
 $ver = substr($agent, $pos + 5, strpos($agent, ';', $pos) - $pos - 5);
} else if ($pos = strpos($agent, 'Firefox')) {
 $name = 'Firefox';
 $ver = substr($agent, $pos + 8, strlen($agent) - $pos - 8);
} else if ($pos = strpos($agent, 'Safari')) {
 if ($pos = strpos($agent, 'Chrome')) {
  $name = 'Chrome';
  $ver = substr($agent, $pos + 7, strpos($agent, ' ', $pos) - $pos - 7);
 } else {
  $name = 'Safari';
  $pos = strpos($agent, 'Version');
  $ver = substr($agent, $pos + 8, strpos($agent, ' ', $pos) - $pos - 8);
 }
}
else if (ereg('Opera', $agent)) {
 $name = 'Opera';
 $pos = strpos($agent, 'Version');
 $ver = substr($agent, $pos + 8, strlen($agent) - $pos - 8);
}
else {
 $name = 'Unknown';
 $ver = 'Unknown';
}

print $name .' / ' .$ver . '';

ってな感じ・・・
あんまりしっくりきてないけど、動作するみたいだからいいや・・・
もっとイイやり方知ってる人がいれば教えて下さい

僕の環境(Windows)でチェックすると下記のように表示されました

MSIE / 9.0
Chrome / 16.0.912.63
Firefox / 3.6.25
Safari / 5.1.2
Opera / 11.60

※Firefoxのバージョンが古いのは気にしないでください

なんか、'HTTP_USER_AGENT'のバージョン情報の表記がバージョンによって異なるみたい・・・
定期的なメンテナンスが必要になるかも・・・ めんどくせー





↓の参考サイトをコピペするとSafariとFirefoxのバージョンがなんかおかしかった・・・
情報がちょと古いからかな・・・?

[参考サイト]
ブラウザのバージョンを取得するPHPスクリプト [2009/10/04]


【追記】[2011/12/25]
上記をつくった直後にこんなの発見し、試して(v1.9)みましたが、getVersion()がどのブラウザも[unknown]と表示されて動作してないっぽいです。
利用者のブラウザ・OS・バージョンを取得できるクラスライブラリ「Browser.php」 [2011/01/12]

[2011/12/17]スマートフォン最前線 1

 このエントリーをはてなブックマークに追加

関西セルラーの頃からのauユーザーで、W55Tからそろそろ機種変更しようかなぁっと日頃から考えていました。 

っで、僕はWEB屋さんなのでもう少しはフューチャーフォン(ガラケー)を使いつつ、スマフォも使いたいなぁ~、でも、2回線契約はしたくない。

参考までに、僕は「iPhone4」と「HTC Desire(X06HT)」を持っています。
※2台とも解約してWifi機として使ってます

そしたら、auからICカード(他社では一般的にSIMカードと呼ばれているもの)使えるスマフォ「ARROWS Z ISW11F」が出るという情報を見つけました。
その「ARROWS Z ISW11F」は、今日(11/12/17)が発売日だということで、auショップにいって店頭デモ機を触りにいってきました。

ついでに、auショップの隣にあるdocomoショップで「ARROWS X LTE F-05D」と「Xperia acro SO-02C」と売れに売れている「GALAXY S II LTE SC-03D」と「GALAXY NEXUS SC-04D」を触って来ました。


WEB屋というこで気になるのは「ブラウザ」での表示感です。
触ったすべて端末で「週刊アスキーPLUS」を表示してスクロールや拡大・縮小とかしました。



まず、auショップに行き「ARROWS Z ISW11F」の店頭デモ機をイジイジしました。


ARROWS Z ISW11F」は、カックカクでした。
ページを読み込んでスクロールしようとすると引っかかるというかレスポンスが遅かったです。

ARROWS Z ISW11F」は、ガラケー機能が全部入りってことで結構人気がある機種みたいで、僕の行ったauショップでは予約のみの販売で当日入手することは不可とのことでした。

また、Stream Blue(青)、Neo Black(黒)は人気でいつ入ってくるかわからなくて、Live Pink(ピンク)は不人気ですぐ手に入ると店員さんが言ってました。※Fine White(白)は不明

ついでに「HTC EVO 3D ISW12HT」とかも触りましたが、普段「HTC Desire(X06HT)」を使ってるのもあって印象は普通でしたが、「ARROWS Z ISW11F」より滑らかでした。


次に隣のdocomoショップに行って「GALAXY NEXUS SC-04D」→「GALAXY S II LTE SC-03D」→「ARROWS X LTE F-05D」→「Xperia acro SO-02C」とイジイジ。

GALAXY NEXUS SC-04D」は、Android4っと、いうことでUIが変わっていて少し戸惑いましたがブラウザの表示感はサクサクでした。
めちゃくちゃ滑らかにスクロールとか拡大・縮小ができました。
※でも、Xi(LTE)対応じゃない

GALAXY S II LTE SC-03D」も同じメーカーなので「GALAXY NEXUS SC-04D」と同様にブラウザの表示感はサクサクでした。
めちゃくちゃ滑らかにスクロールとか拡大・縮小ができました。
体感的には「GALAXY NEXUS SC-04D」と同じか少しよかったかも・・・

ARROWS Z ISW11F」の兄弟機の「ARROWS X LTE F-05D」ですが、兄弟機とあって同じようにブラウザの表示感はカックカクでした。
でも、「ARROWS Z ISW11F」よりはましでした。

Xperia acro SO-02C」のブラウザの表示感は、「GALAXY S II LTE SC-03D」や「GALAXY NEXUS SC-04D」よりは滑らかではありませんが、サクサクでした。


上記の端末でのブラウザの表示感(スクロールとか拡大・縮小の滑らかさ)は、
GALAXY S II LTE SC-03D」≧「GALAXY NEXUS SC-04D」>>「Xperia acro SO-02C」>>>「ARROWS X LTE F-05D」>>「ARROWS Z ISW11F
でした。


ARROWS Z ISW11F」のレビューは、↓を参考に・・・
【御庭番通信】大注目! ARROWS Z ISW11F 前編
【御庭番通信】大注目! ARROWS Z ISW11F 後編

【追記】
今一番Hotなスマホ、Arrows ISW11Fで電源系不具合?と本体が高熱になり充電できない等の問題が発生


なんか、auが明後日(2012年12月19日)にSAMSUNG製のスマフォを発表するみたい・・・
KDDI、19日にWiMAX搭載GALAXY「ISW11SC」を発表 ―クロックアップ版S2またはNoteが有力


っということで、「ARROWS Z ISW11F」は、その前に発売したかったんでしょうね・・・
auのAndroidスマフォを購入検討している人は少し待ったほうがいいです。

SAMSUNG製のスマフォがICカード対応だといいんだけどなぁ・・・
auの海外製のスマフォは、ICカード対応してないからあまり期待できないかも・・・



※個人の感想なので購入を検討されている方は実際に自分で触って判断してください
※店頭デモ機なので実際の製品とは違うかもしれません



HTC Desire の赤ロム状態を解決する方法

 このエントリーをはてなブックマークに追加

解約したHTC Desire(X06HT)ですが、解約してからおよそ1ヶ月後にUSIMがサービス提供不可(いわゆるUSIMが赤ロム状態)になりました。
さすがク ソフトバンクですね!速度はおそ(ry

HTC Desire(X06HT)赤ロム状態を解決する方法をご紹介













画面ロックを解除してもホーム画面にはいけず、緊急電話ができるだけのまるで文鎮状態に・・・

















っで、解決する方法が僕が知るかぎりでは2つあります。
①機内モードにする
→機内モードにしてWifiで利用することができるようにする
②SIM Lockを解除する
→docomoなどの他の通信方式が同じSIMでも使えるようにする

僕がとった方法は①です。②をやろうとしてうまくいかず断念しましたorz
画面ロックを解除しても緊急電話ができるだけでなにもできないのにどうするねんって思うかもしれません。
僕もそう思ってました。

でも、何度か電源をONにしたりOFFにしたりしている間に気付いたのです。
「サービス提供不可」と表示されるまでにタイムラグが発生することに・・・
そのタイムラグの間に「機内モード」をONにできないものかと・・・できたのです!w

【手順】
1.電源をOFFにして、ONにします。
2.画面ロック解除を素早く行い「menu」を押下
3.「設定」を素早く押下
















4.上から2番目の「無線とネットワーク」を押下


















5.1番上の「機内モード」の右のチェックボックスにチェックをいれる

















以上です。

「機内モード」にチェックをいれると「Wi-Fi」のチェックが外れるのでチェックをしましょう。

電源をOFFにしてONにすると右の画面のようになり・・・


















画面ロックを解除するとホーム画面に辿りつけるようになりました


















これでWifiのAndroid端末として使えるようになりました。
めでたし、めでたし・・・


SIM Lock を解除したい方は↓のサイトなどを参考に・・・
※SIMロック解除は自己責任で行なってください



Bloggerにソーシャルプラグイン導入する

 このエントリーをはてなブックマークに追加

基本的には、「Bloggerへのソーシャルプラグイン導入方法について」を参考にして導入しました。

↓のソースを貼り付けるだけでこのサイトと同じソーシャルプラグイン導入できます。
※<script language='javascript'></script>の『<>』が全角なので半角にしください
※【Twitterのユーザ名(英語)】の部分は各々設定してください。
※mixiの「XXXXXXXXXXXXXXXXXXXXXXXXXXXX」も各々で取得して設定してください。


<tumblr>と<Evernote>を使う場合は、↓のJavaScriptを『</head>』の直前に貼って下さい。
また、<tumblr>と<Evernote>は↑の4~9行目のJavaScriptを共通で使うのでお忘れなく・・・
※<script language='javascript'></script>の『<>』が全角なので半角にしください



<Facebook>
Facebookは「いいね」ボタンではなく「Share」ボタンにしました。
「いいね」ボタンはコメントアウトしてます。
※Facebookは仕様でカウントは「3」以上でないと表示されないようです。

<Google+>
Google+のボタンはたまに機嫌をそこねて表示しなくなるかもしれません。
「Google+ ボタン 表示されない」などでGoogleとかなりHITします・・・

全部、表示すると多すぎでゴチャゴチャしたので、重要性が低いものをコメントアウトして表示していません。

※「はてぶ」「GREE」「mixi」は未検証ですのであしからず・・・


[参考サイト]
LikeボタンをBloggerの個別ページに設置する
Facebook Likeボタン(いいね!)を設置。仕様。
facebook「シェア」ボタンの設置方法
Facebook Share
Facebookの「シェアする」ボタンを自分のサイトに入れる方法
Facebookのshare(シェア)ボタンをサイトやブログに設置する方法
[Facebook]「いいね!」ボタンに「シェア」ボタンが統合されたけど、なんだかんだ「シェア」ボタンをオススメする3つの理由
新はてブボタンをWordPressに設置する方法
Bloggerにretweetボタンを付ける方法
Blogger覚書 - 「+1」ボタン(だけ)を付けてみる

BloggerにSyntaxHighlighterを導入する

 このエントリーをはてなブックマークに追加

技術系のことを投稿すると避けて通れないのがプログラムコード。
プログラムコードをスッキリ綺麗にみせるには、シンタックス・ハイライト


下記のコードをBloggerのLayoutテンプレートに挿入します。<head>と</head>の間に入れます。</head>の直前がおすすめ。
※「右クリック」→「ページのソースを表示」でどこに何が配置されているかみれると思います
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/> 
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPhp.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPython.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushRuby.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushVb.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPerl.js' type='text/javascript'></script>
<script language='javascript'>
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/current/scripts/clipboard.swf';
SyntaxHighlighter.all();
</script>

挿入したコードには『shBrush***.js』というファイルを読み込む設定がたくさんあります。
『***』はBloggerに記載するコードの言語を意味しています。
使用しない言語に該当する行はコメントアウトor削除します。


そして、コードを含む投稿をする際には

コードの内容(エスケープ済)

もしくは


のように記載します。
※基本は下の(エスケープ不要)の方を使おうと思います

『***』はコードの言語名を書きます。'php'や'js'などです。
『***』に指定できるのは下記の『Brush aliases』です。

Brush nameBrush aliasesFile name
ActionScript3as3, actionscript3shBrushAS3.js
Bash/shellbash, shellshBrushBash.js
ColdFusioncf, coldfusionshBrushColdFusion.js
C#c-sharp, csharpshBrushCSharp.js
C++cpp, cshBrushCpp.js
CSScssshBrushCss.js
Delphidelphi, pas, pascalshBrushDelphi.js
Diffdiff, patchshBrushDiff.js
Erlangerl, erlangshBrushErlang.js
GroovygroovyshBrushGroovy.js
JavaScriptjs, jscript, javascriptshBrushJScript.js
JavajavashBrushJava.js
JavaFXjfx, javafxshBrushJavaFX.js
Perlperl, plshBrushPerl.js
PHPphpshBrushPhp.js
Plain Textplain, textshBrushPlain.js
PowerShellps, powershellshBrushPowerShell.js
Pythonpy, pythonshBrushPython.js
Rubyrails, ror, rubyshBrushRuby.js
ScalascalashBrushScala.js
SQLsqlshBrushSql.js
Visual Basicvb, vbnetshBrushVb.js
XMLxml, xhtml, xslt, html, xhtmlshBrushXml.js

※どの言語が使用できるかは、ここにリストがあります

[ハマリポイント]
Amazonアフィリエイトのiframeのタイプがあると動作しません。

※Operaの改行がおかしいですが放置!

[参考サイト]
BloggerにおけるSyntaxHighlighterの使い方
Google ChromeでSyntaxHighlighterが動かない原因

BloggerにGoogle+のWidgetを設置する

 このエントリーをはてなブックマークに追加

↓のウィジェットは「Google Plus Widget 」で作成しました











[参考サイト]