検索
ホームページバックエンド開発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 までご連絡ください。
PHP対Python:違いを理解しますPHP対Python:違いを理解しますApr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:それは死にかけていますか、それとも単に適応していますか?PHP:それは死にかけていますか、それとも単に適応していますか?Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの未来:適応と革新PHPの未来:適応と革新Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?Apr 10, 2025 am 09:39 AM

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?Apr 10, 2025 am 09:38 AM

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。Apr 10, 2025 am 09:37 AM

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、ファイルを安全に処理する方法をどのように処理しますか?PHPは、ファイルを安全に処理する方法をどのように処理しますか?Apr 10, 2025 am 09:37 AM

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Apr 10, 2025 am 09:33 AM

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター