Maison développement back-end tutoriel php 怎么判断访问端是电脑还是手机?_PHP教程

怎么判断访问端是电脑还是手机?_PHP教程

Jul 13, 2016 am 10:35 AM
判断 发送 basé sur 怎么 手机 Oui 浏览器 Maintenant 电脑 de fin point de vue 访问 toujours

   网上现在有三种观点, 一种是基于浏览器发送的 User-Agent, 但明显这种方法是行不通的, 虽然有人列出了大多数的手机发送的User-Agent, 但依然会有很多手机无法识别, 甚至有些手机浏览器不发送User-Agent, 而且也不能保证以后就不会出新牌子.

  下面是一个php的例子, 看过之后你就会知道有多么不可靠.

  1. function is_wap(){

  2. $ua = strtolower($_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(strtolower($_SERVER['REQUEST_URI']),'wap')){

  5. return true;

  6. }else{

  7. return false;

  8. }

  9. }

  另外一种是判断HTTP_ACCEPT, 这种应该相对可靠一点, 不过HTTP_ACCEPT是非常复杂的, 如果一般的不支持html的浏览器还好说, 你只要判断浏览器支持wml并且不支持html就可以, 但如果浏览器同时支持wml和html那就难办了, 低端手机可能会将wml放到html的前面, 但是很多高端手机或者智能手机对html的支持很好, 所以html也会出现在wml前面.

  这是黑莓手机发送的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=handheld,

  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],则判定为手机。但实际上这个原理是不正确的.

  还有一种是说判断网关或者IP什么的, 但我个人认为这个很不可靠, 手机的联网方式很多, 比如我开发的时候就是用模拟器的.这个应该不用什么例子了, REMOTE_ADDR 就足够了.

  以上是我今天上午的工作成果, 但实际上还是没有找到完美的解决方案, 先写这么多, 有问题请补充或者发送消息给我, 如果你有更好的办法希望可以分享给我, 谢谢.

  最近做一个手机查询系统,自然就牵扯到了此问题,那我就根据对wap的认识浅谈下通过php判断用户访问方式是通过wap访问还是电脑直接访问。

  首先说最根本的解决方法:

  手 机访问时,会附带发送user-agent信息,这个信息里面会有手机号码信息,那么如果能取得手机号码,则可以肯定是通过手机wap访问的。但是目前中 国移动已经屏蔽了user-agent信息,所以获取不到手机号码。有关系的朋友可以联系移动公司,把wap网站服务器的ip提交给中国移动,加入白名单 后即可取得ua信息。目前中国联通可以直接取到手机号,对联通用户此方案可完美实施。

  接下来说我的解决方案:

  手机访问,原理是手机通过移动公司的代理服务器进行的访问。那么我们就可以理解是一台普通电脑使用了代理服务器。当手机通过代理服务器访问的时候,http头信息会毫无疑问的包含一个信息:via。这个信息提供了有价值的判断信息。

  例如河南移动取得的via信息是:

  http/1.1 hazz-b-gw001-wap(infox-wisg, huawei technologies)

  河南联通的via信息是:

  zxwap gateway,zte technologies

  其他各省的http头信息和这个大同小异,判断是否手机访问的方案就出来 了:获取http的via信息字符串看是否包含wap字符,如果有则是通过手机访问。这样做的结果是没有人能伪造手机访问,判断绝对准确。自然,这样对于 网上流行的手机wap模拟器也做了屏蔽—-从根本上屏蔽。

  操作代码也很简单:

  // check if wap by xhat

  function check_wap() {

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

  }

  // check over

  从我查阅的资料来看,目前此方法应该是迄今互联网上准确率最高、最简单的判断手机访问方法。

  以上的方法可以实现判断访问来源是手机还是电脑,但有一个问题就是,只能通过手机才能访问,支持WAP的浏览器和手机模拟器也不能访问,这给测试带来了麻烦,也有点限制死了。

  下面的方案是:

  通过判断浏览器代理标识符,判断是否是支持WAP的浏览器来决定访问页面。这有一个缺点就是不可能全部的列出所有手机的浏览器标识符与所支持的浏览器标识符。

  下面看看实现的代码:

  function check_wap()

  {

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

  {

  // Check whether the browser/gateway says it accepts WML.

  $br = "WML";

  }

  else

  {

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

  if ($browser=="Noki" || // Nokia phones and emulators

  $browser=="Eric" || // Ericsson WAP phones and emulators

  $browser=="WapI" || // Ericsson WapIDE 2.0

  $browser=="MC21" || // Ericsson MC218

  $browser=="AUR" || // Ericsson R320

  $browser=="R380" || // Ericsson R380

  $browser=="UP.B" || // UP.Browser

  $browser=="WinW" || // WinWAP browser

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

  $browser=="upsi" || // another kind of UP.Browser ??

  $browser=="QWAP" || // unknown QWAPPER browser

  $browser=="Jigs" || // unknown JigSaw browser

  $browser=="Java" || // unknown Java based browser

  $browser=="Alca" || // unknown Alcatel-BE3 browser (UP based?)

  $browser=="MITS" || // unknown Mitsubishi browser

  $browser=="MOT-" || // unknown browser (UP based?)

  $browser=="My S" ||// unknown Ericsson devkit browser ?

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

  $browser=="fetc" || // fetchpage.cgi Perl script from www.wapcab.de

  $browser=="ALAV" || // yet another unknown UP based browser ?

  $browser=="Wapa" || // another unknown browser (Web based "Wapalyzer"?)

  $browser=="Oper") // Opera

  {

  $br = "WML";

  }

  else

  {

  $br = "HTML";

  }

  }

  if($br == "WML")

  {

  return TRUE;

  }

  else

  {

  return FALSE;

  }

  }

  if(!check_wap())

  {

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

  exit();

  }

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/747073.htmlTechArticle网上现在有三种观点, 一种是基于浏览器发送的 User-Agent, 但明显这种方法是行不通的, 虽然有人列出了大多数的手机发送的User-Agent, 但依然...
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Conseils pour utiliser le système de fichiers HDFS sur CentOS Conseils pour utiliser le système de fichiers HDFS sur CentOS Apr 14, 2025 pm 07:30 PM

Le guide d'installation, de configuration et d'optimisation pour le système de fichiers HDFS dans le cadre du système CentOS Cet article vous guidera comment installer, configurer et optimiser le système de fichiers distribué Hadoop (HDFS) sur le système CentOS. Installation HDFS et configuration Installation de l'environnement Java: Assurez-vous d'abord que l'environnement Java approprié est installé. Edit / etc / Profile Fichier, ajoutez les suivants et remplacez /usr/lib/java-1.8.0/jdk1.8.0_144 par votre chemin d'installation Java réel: exportjava_home = / usr / lib / java-1.8.0 / jdk1.8.0_144exportpath = $ J

L'extension VScode est-elle malveillante? L'extension VScode est-elle malveillante? Apr 15, 2025 pm 07:57 PM

Les extensions de code vs posent des risques malveillants, tels que la cachette de code malveillant, l'exploitation des vulnérabilités et la masturbation comme des extensions légitimes. Les méthodes pour identifier les extensions malveillantes comprennent: la vérification des éditeurs, la lecture des commentaires, la vérification du code et l'installation avec prudence. Les mesures de sécurité comprennent également: la sensibilisation à la sécurité, les bonnes habitudes, les mises à jour régulières et les logiciels antivirus.

VScode ne peut pas installer l'extension VScode ne peut pas installer l'extension Apr 15, 2025 pm 07:18 PM

Les raisons de l'installation des extensions de code vs peuvent être: l'instabilité du réseau, les autorisations insuffisantes, les problèmes de compatibilité système, la version de code vs est trop ancienne, un logiciel antivirus ou des interférences de pare-feu. En vérifiant les connexions réseau, les autorisations, les fichiers journaux, la mise à jour vs du code, la désactivation des logiciels de sécurité et le redémarrage du code ou des ordinateurs, vous pouvez progressivement dépanner et résoudre les problèmes.

Qu'est-ce que VScode pour quoi est VScode? Qu'est-ce que VScode pour quoi est VScode? Apr 15, 2025 pm 06:45 PM

VS Code est le code Visual Studio Nom complet, qui est un éditeur de code multiplateforme gratuit et open source et un environnement de développement développé par Microsoft. Il prend en charge un large éventail de langages de programmation et fournit une mise en surbrillance de syntaxe, une complétion automatique du code, des extraits de code et des invites intelligentes pour améliorer l'efficacité de développement. Grâce à un écosystème d'extension riche, les utilisateurs peuvent ajouter des extensions à des besoins et des langues spécifiques, tels que les débogueurs, les outils de mise en forme de code et les intégrations GIT. VS Code comprend également un débogueur intuitif qui aide à trouver et à résoudre rapidement les bogues dans votre code.

Comment surveiller le statut HDFS sur CentOS Comment surveiller le statut HDFS sur CentOS Apr 14, 2025 pm 07:33 PM

Il existe de nombreuses façons de surveiller l'état des HDF (système de fichiers distribué Hadoop) sur les systèmes CentOS. Cet article présentera plusieurs méthodes couramment utilisées pour vous aider à choisir la solution la plus appropriée. 1. Utilisez le propre webui de Hadoop, la propre interface Web de Hadoop pour fournir une fonction de surveillance de l'état du cluster. Étapes: Assurez-vous que le cluster Hadoop est opérationnel. Accédez au webui: entrez http: //: 50070 (hadoop2.x) ou http: //: 9870 (hadoop3.x) dans votre navigateur. Le nom d'utilisateur et le mot de passe par défaut sont généralement des HDF / HDF. 2. La surveillance des outils de ligne de commande Hadoop fournit une série d'outils de ligne de commande pour faciliter la surveillance

Ce qui se passe avec vscode qui ne fonctionne pas python Ce qui se passe avec vscode qui ne fonctionne pas python Apr 15, 2025 pm 06:00 PM

Le problème "ne peut pas exécuter Python" le plus courant découle de la mauvaise configuration du chemin de l'interprète Python. Les solutions incluent: la confirmation de l'installation de Python, la configuration du code vs et l'utilisation d'un environnement virtuel. De plus, il existe des techniques de débogage efficaces et des meilleures pratiques telles que le débogage des points d'arrêt, la surveillance des variables, la sortie du journal et la mise en forme du code, tels que l'isolement des dépendances à l'aide d'environnements virtuels, le suivi de l'exécution du code en utilisant des points d'arrêt et le suivi des changements variables en temps réel à l'aide d'expressions de surveillance, etc., ce qui peut améliorer considérablement l'efficacité du développement.

Résoudre les problèmes de mise en cache dans Craft CMS: Utilisation du plug-in Wiejeben / Craft-Laravel-MIX Résoudre les problèmes de mise en cache dans Craft CMS: Utilisation du plug-in Wiejeben / Craft-Laravel-MIX Apr 18, 2025 am 09:24 AM

Lorsque vous développez des sites Web à l'aide de CRAFTCMS, vous rencontrez souvent des problèmes de mise en cache de fichiers de ressources, en particulier lorsque vous mettez fréquemment à mettre à jour les fichiers CSS et JavaScript, les anciennes versions des fichiers peuvent toujours être mises en cache par le navigateur, ce qui fait que les utilisateurs ne voient pas les derniers changements de temps. Ce problème affecte non seulement l'expérience utilisateur, mais augmente également la difficulté du développement et du débogage. Récemment, j'ai rencontré des problèmes similaires dans mon projet, et après une exploration, j'ai trouvé le plugin wiejeben / artist-laravel-mix, qui a parfaitement résolu mon problème de mise en cache.

Comment sauvegarder les paramètres et les extensions VScode Comment sauvegarder les paramètres et les extensions VScode Apr 15, 2025 pm 05:18 PM

Comment sauvegarder vs configurations et extensions de code? Sauvegarder manuellement le fichier des paramètres: Copiez les fichiers JSON clés (settings.json, keybindings.json, extensions.json) dans un emplacement sûr. Profitez de VS Code Synchronisation: Activez la synchronisation avec votre compte GitHub pour sauvegarder automatiquement tous les paramètres et extensions pertinents. Utilisez des outils tiers: les configurations de sauvegarde avec des outils fiables et fournissent des fonctionnalités plus riches telles que le contrôle de version et les sauvegardes incrémentielles.

See all articles