ホームページ バックエンド開発 PHPチュートリアル アクセス端末がコンピュータか携帯電話かを判断する方法_PHP チュートリアル

アクセス端末がコンピュータか携帯電話かを判断する方法_PHP チュートリアル

Jul 13, 2016 am 10:35 AM
判断 送信 に基づく どうやって 携帯電話 はい ブラウザ コンピューター 終わり ビュー アクセス まだ

インターネット上には 3 つの意見があります。1 つはブラウザから送信されるユーザー エージェントに基づいていますが、明らかにこの方法は機能しません。携帯電話から送信されるユーザー エージェントのほとんどをリストしている人もいます。携帯電話を認識できず、一部の携帯ブラウザでは User-Agent を送信しないことも多く、今後新しいブランドがリリースされないという保証はありません。

以下はphpの例です。これを読めば、それがいかに信頼できないかがわかります。

1.関数 is_wap(){

2. $ua = strto lower($_SERVER['HTTP_USER_AGENT']);

3. $uachar = "/(nokia|sony|ericsson|mot|samsung|sgh|lg|sie|philips|panasonic|alcatel|lenovo|cldc|midp|wap|mobile)/i";

4. if(($ua == '' || preg_match($uachar, $ua))&& !strpos(strto lower($_SERVER['REQUEST_URI']),'wap')){

5. trueを返す;

6. }その他{

7. return false;

8. }

9. }

もう 1 つは HTTP_ACCEPT の判定ですが、これは比較的信頼できるはずですが、HTTP_ACCEPT は非常に複雑です。一般的なブラウザが html をサポートしていない場合は、ブラウザが wml をサポートしているかどうかを判断するだけで済みます。ただし、ブラウザが wml と html の両方をサポートしている場合は困難になります。ローエンドの携帯電話では html の前に wml が配置される場合がありますが、多くのハイエンドの携帯電話やスマートフォンでは html が適切にサポートされているため、html も表示されます。 wmlの前で

これは BlackBerry によって送信された HTTP_ACCEPT です

application/vnd.rim.html,

text/html,

application/vnd.wap.xhtml+xml,

text/vnd.sun.j2me.app-descriptor,

image/vnd.rim.png,image/jpeg,

application/x-vnd.rim.pme.b,

application/vnd.rim.ucs,

image/gif;anim=1,

application/vnd.rim.jscriptc;v=0-8-8,

application/x-javascript,

application/vnd.rim.css;v=1,

text/css;media=ハンドヘルド,

application/vnd.wap.wmlc;q=0.9,

application/vnd.wap.wmlscriptc;q=0.7,

text/vnd.wap.wml;q=0.7,

*/*;q=0.5

誇張ですよね? しかし、開発者はこれに基づいて多くの情報を得ることができますが、多くの携帯電話では、IE または FF の HTTP_ACCEPT が非常に短いことがわかります。

text/html,

application/xhtml+xml,

application/xml;q=0.9,

*/*;q=0.8

同様にphpの例をあげておきます

if (isset($_SERVER['HTTP_ACCEPT']) &&

(strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')!==FALSE)

&& (strpos($_SERVER['HTTP_ACCEPT'],'text/html')===FALSE ||

(strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml') <

strpos($_SERVER['HTTP_ACCEPT'],'text/html'))

)) {//モバイルアクセス

readfile('index.wml');

} else readfile('index.htm');

原則: ブラウザが WML をサポートしていて、[HTML をサポートしていない] または [WML が HTML より優先される] 場合、携帯電話であると判断されます。しかし、実際には、この原則は間違っています。

もう1つの方法は、ゲートウェイまたはIPを決定することですが、これは非常に信頼性が低いと思います。たとえば、開発中にエミュレータを使用しました。これには例は必要ありません。十分です。

上記は今朝の私の作業の結果ですが、実際にはまだ完璧な解決策を見つけていません。質問がある場合は追加するか、メッセージを送ってください。より良い方法がありますので、共有していただければ幸いです。

最近、私は携帯電話のクエリシステムに取り組んでいましたが、これには当然この問題が含まれていました。次に、WAP についての理解に基づいて、ユーザーのアクセス方法が WAP アクセスによるものであるか、コンピューターからの直接アクセスであるかを判断します。

まず最も根本的な解決策について話しましょう:

携帯電話からアクセスする場合、ユーザーエージェント情報には携帯電話番号情報が含まれますので、携帯電話番号を取得できれば、確実にモバイルワップ経由でアクセスできます。ただし、チャイナモバイルは現在ユーザーエージェント情報をブロックしているため、携帯電話番号を取得することはできません。関係のある友人は携帯会社に連絡し、WAP Web サイトサーバーの IP をチャイナモバイルに送信してホワイトリストに追加すると、UA 情報を取得できます。現在、チャイナユニコムは携帯電話番号を直接取得できるため、このソリューションはユニコムユーザーに完全に実装できます。

次に、私の解決策について話しましょう:

携帯電話からのアクセスは、携帯会社のプロキシサーバーを経由してアクセスするのが原則です。そうすれば、通常のコンピュータがプロキシ サーバーを使用していることがわかります。携帯電話がプロキシサーバー経由でアクセスする場合、http ヘッダー情報には必ず via という情報が含まれます。この情報は貴重な判断情報を提供します。

たとえば、Henan Mobile が取得する経由情報は次のとおりです:

http/1.1 hazz-b-gw001-wap(infox-wisg、huawei technology)

河南ユニコムの経由情報は次のとおりです:

zxwapゲートウェイ、zteテクノロジーズ

他の地方の http ヘッダー情報も同様です。携帯電話でアクセスできるかどうかを判断する方法は次のとおりです。http の via 情報文字列を取得して、wap 文字が含まれているかどうかを確認します。そうである場合は、携帯電話でアクセスします。この結果、誰も携帯電話へのアクセスを偽ることはできず、その判断は完全に正確です。当然のことながら、これはインターネット上で人気のある携帯電話の wap シミュレーターもブロックし、根本的にブロックします。

操作コードも非常にシンプルです:

// xhatでwapかどうかをチェック

関数 check_wap() {

return stristr($_SERVER['HTTP_VIA'],"wap") ? true : false;

}

// チェックしてください

私が検討した情報から判断すると、この方法は、これまでのところ、インターネット上での携帯電話のアクセスを判断する最も正確かつ簡単な方法であるはずです。

上記の方法では、アクセス元が携帯電話かパソコンかを判断することができますが、問題点としては、携帯電話からしかアクセスできず、WAP対応のブラウザや携帯電話シミュレータではアクセスできないという点があります。テストでは制限がなくなり、少し混乱します。

以下のプランです:

ブラウザのプロキシ識別子とWAP対応ブラウザかどうかを判断してアクセスページを決定します。この欠点の 1 つは、すべての携帯電話のすべてのブラウザ ID とサポートされているブラウザ ID をリストすることができないことです。

実装されたコードを見てみましょう:

関数check_wap()

{

if (strpos(strtoupper($_SERVER['HTTP_ACCEPT']),"VND.WAP.WML") > 0)

{

// ブラウザ/ゲートウェイが WML を受け入れると言っているかどうかを確認します。

$br = "WML";

}

その他

{

$browser=substr(trim($_SERVER['HTTP_USER_AGENT']),0,4);

if ($browser=="Noki" || // Nokia の携帯電話とエミュレータ

$browser=="Eric" || // Ericsson WAP 電話とエミュレータ

$browser=="WapI" || // エリクソン WapIDE 2.0

$browser=="MC21" || // エリクソン MC218

$browser=="AUR" || // エリクソン R320

$browser=="R380" || エリクソン R380

$browser=="UP.B" || // UP.ブラウザ

$browser=="WinW" || // WinWAP ブラウザ

$browser=="UPG1" || UP.SDK 4.0

$browser=="upsi" || // 別の種類の UP.Browser ??

$browser=="QWAP" || // 不明な QWAPPER ブラウザ

$browser=="Jigs" || // 不明な JigSaw ブラウザ

$browser=="Java" || // 不明な Java ベースのブラウザ

$browser=="Alca" || // 不明な Alcatel-BE3 ブラウザ (UP ベース?)

$browser=="MITS" || // 不明な三菱ブラウザ

$browser=="MOT-" || // 不明なブラウザ (UP ベース?)

$browser=="My S" ||// 不明な Ericsson 開発キット ブラウザ ?

$browser=="WAPJ" || // 仮想 WAPJAG www.wapjag.de

$browser=="fetc" || // fetchpage.cgi www.wapcab.de からの Perl スクリプト

$browser=="ALAV" || // さらに別の未知の UP ベースのブラウザ ?

$browser=="Wapa" || // 別の未知のブラウザ (Web ベースの "Wapalyzer"?)

$browser=="Oper") // オペラ

{

$br = "WML";

}

その他

{

$br = "HTML";

}

}

if($br == "WML")

{

TRUE を返します;

}

その他

{

FALSEを返す;

}

}

if(!check_wap())

{

Header("場所: http://www.xker.com/");

exit();

}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/747073.html技術記事インターネット上には 3 つの意見があります。1 つはブラウザから送信されるユーザー エージェントに基づいていますが、携帯電話から送信されるユーザー エージェントのほとんどをリストしている人もいますが、明らかにこの方法は機能しません。 .
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PSが荷重を見せ続ける理由は何ですか? PSが荷重を見せ続ける理由は何ですか? Apr 06, 2025 pm 06:39 PM

PSの「読み込み」の問題は、リソースアクセスまたは処理の問題によって引き起こされます。ハードディスクの読み取り速度は遅いか悪いです。CrystaldiskInfoを使用して、ハードディスクの健康を確認し、問題のあるハードディスクを置き換えます。不十分なメモリ:高解像度の画像と複雑な層処理に対するPSのニーズを満たすためのメモリをアップグレードします。グラフィックカードドライバーは時代遅れまたは破損しています:ドライバーを更新して、PSとグラフィックスカードの間の通信を最適化します。ファイルパスが長すぎるか、ファイル名に特殊文字があります。短いパスを使用して特殊文字を避けます。 PS独自の問題:PSインストーラーを再インストールまたは修理します。

H5ページの生産には継続的なメンテナンスが必要ですか? H5ページの生産には継続的なメンテナンスが必要ですか? Apr 05, 2025 pm 11:27 PM

H5ページは、コードの脆弱性、ブラウザー互換性、パフォーマンスの最適化、セキュリティの更新、ユーザーエクスペリエンスの改善などの要因のため、継続的に維持する必要があります。効果的なメンテナンス方法には、完全なテストシステムの確立、バージョン制御ツールの使用、定期的にページのパフォーマンスの監視、ユーザーフィードバックの収集、メンテナンス計画の策定が含まれます。

PSの負荷速度をスピードアップする方法は? PSの負荷速度をスピードアップする方法は? Apr 06, 2025 pm 06:27 PM

Slow Photoshopの起動の問題を解決するには、次のような多面的なアプローチが必要です。ハードウェアのアップグレード(メモリ、ソリッドステートドライブ、CPU)。時代遅れまたは互換性のないプラグインのアンインストール。システムのゴミと過剰な背景プログラムを定期的にクリーンアップします。無関係なプログラムを慎重に閉鎖する。起動中に多数のファイルを開くことを避けます。

Webページにローカルにインストールされている「Jingnan Mai Round Body」を正しく表示するにはどうすればよいですか? Webページにローカルにインストールされている「Jingnan Mai Round Body」を正しく表示するにはどうすればよいですか? Apr 05, 2025 pm 10:33 PM

最近、Webページにローカルにインストールされたフォントファイルを使用して、インターネットから無料のフォントをダウンロードし、システムに正常にインストールしました。今...

フレックスレイアウトの下のテキストは省略されていますが、コンテナは開かれていますか?それを解決する方法は? フレックスレイアウトの下のテキストは省略されていますが、コンテナは開かれていますか?それを解決する方法は? Apr 05, 2025 pm 11:00 PM

フレックスレイアウトとソリューションの下でのテキストの過度の省略によるコンテナの開口部の問題が使用されます...

遅いPSの読み込みはコンピューター構成に関連していますか? 遅いPSの読み込みはコンピューター構成に関連していますか? Apr 06, 2025 pm 06:24 PM

PSの負荷が遅い理由は、ハードウェア(CPU、メモリ、ハードディスク、グラフィックスカード)とソフトウェア(システム、バックグラウンドプログラム)の影響を組み合わせたものです。ソリューションには、ハードウェアのアップグレード(特にソリッドステートドライブの交換)、ソフトウェアの最適化(システムガベージのクリーンアップ、ドライバーの更新、PS設定のチェック)、およびPSファイルの処理が含まれます。定期的なコンピューターのメンテナンスは、PSのランニング速度を改善するのにも役立ちます。

PSがファイルを開いたときにロードの問題を解決する方法は? PSがファイルを開いたときにロードの問題を解決する方法は? Apr 06, 2025 pm 06:33 PM

「ロード」は、PSでファイルを開くときに発生します。理由には、ファイルが大きすぎるか破損しているか、メモリが不十分で、ハードディスクの速度が遅い、グラフィックカードドライバーの問題、PSバージョンまたはプラグインの競合が含まれます。ソリューションは、ファイルのサイズと整合性を確認し、メモリの増加、ハードディスクのアップグレード、グラフィックカードドライバーの更新、不審なプラグインをアンインストールまたは無効にし、PSを再インストールします。この問題は、PSパフォーマンス設定を徐々にチェックして使用し、優れたファイル管理習慣を開発することにより、効果的に解決できます。

ネガティブマージンが場合によっては効果がないのはなぜですか?この問題を解決する方法は? ネガティブマージンが場合によっては効果がないのはなぜですか?この問題を解決する方法は? Apr 05, 2025 pm 10:18 PM

なぜマイナスマージンが場合によっては有効にならないのですか?プログラミング中、CSSの負のマージン(負...

See all articles