• 微信公众平台消息接口开发(31)微信浏览器HTTP_USER_AGENT判断


    微信公众平台开发 微信公众平台开发者 微信公众平台开发模式 微信浏览器 HTTP_USER_AGENT
    作者:方倍工作室 
    原文:http://www.cnblogs.com/txw1958/archive/2013/05/25/weixin-if31-http_user_agent.html 

    在微信公众平台的开发过程中,我们有时需要开发网页并判断是否是是来自微信浏览器访问,本文介绍如何做出这一判断。

    一、$_SERVER数组

    $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。

    在 $_SERVER 中,你也许能够,也许不能够找到下面的这些元素。注意,如果以命令行方式运行 PHP,下面列出的元素几乎没有有效的(或是没有任何实际意义的)。

    'PHP_SELF'
    当前执行脚本的文件名,与 document root 有关。例如,在地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF'] 将得到/test.php/foo.bar。__FILE__ 常量包含当前(例如包含)文件的完整路径和文件名。 从 PHP 4.3.0 版本开始,如果 PHP 以命令行模式运行,这个变量将包含脚本名。之前的版本该变量不可用。
    'argv'
    传递给该脚本的参数的数组。当脚本以命令行方式运行时,argv 变量传递给程序 C 语言样式的命令行参数。当通过 GET 方式调用时,该变量包含query string。
    'argc'
    包含命令行模式下传递给该脚本的参数的数目(如果运行在命令行模式下)。
    'GATEWAY_INTERFACE'
    服务器使用的 CGI 规范的版本;例如,“CGI/1.1”。
    'SERVER_ADDR'
    当前运行脚本所在的服务器的 IP 地址。
    'SERVER_NAME'
    当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。
    'SERVER_SOFTWARE'
    服务器标识字符串,在响应请求时的头信息中给出。
    'SERVER_PROTOCOL'
    请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。
    'REQUEST_METHOD'
    访问页面使用的请求方法;例如,“GET”, “HEAD”,“POST”,“PUT
    'REQUEST_TIME'
    请求开始时的时间戳。从 PHP 5.1.0 起可用。
    'REQUEST_TIME_FLOAT'
    请求开始时的时间戳,微秒级别的精准度。 自 PHP 5.4.0 开始生效。
    'QUERY_STRING'
    query string(查询字符串),如果有的话,通过它进行页面访问。
    'DOCUMENT_ROOT'
    当前运行脚本所在的文档根目录。在服务器配置文件中定义。
    'HTTP_ACCEPT'
    当前请求头中 Accept: 项的内容,如果存在的话。
    'HTTP_ACCEPT_CHARSET'
    当前请求头中 Accept-Charset: 项的内容,如果存在的话。例如:“iso-8859-1,*,utf-8”。
    'HTTP_ACCEPT_ENCODING'
    当前请求头中 Accept-Encoding: 项的内容,如果存在的话。例如:“gzip”。
    'HTTP_ACCEPT_LANGUAGE'
    当前请求头中 Accept-Language: 项的内容,如果存在的话。例如:“en”。
    'HTTP_CONNECTION'
    当前请求头中 Connection: 项的内容,如果存在的话。例如:“Keep-Alive”。
    'HTTP_HOST'
    当前请求头中 Host: 项的内容,如果存在的话。
    'HTTP_REFERER'
    引导用户代理到当前页的前一页的地址(如果存在)。由 user agent 设置决定。并不是所有的用户代理都会设置该项,有的还提供了修改 HTTP_REFERER 的功能。简言之,该值并不可信。
    'HTTP_USER_AGENT'
    当前请求头中 User-Agent: 项的内容,如果存在的话。该字符串表明了访问该页面的用户代理的信息。一个典型的例子是:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)
    'HTTPS'
    如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值。
    'REMOTE_ADDR'
    浏览当前页面的用户的 IP 地址。
    'REMOTE_HOST'
    浏览当前页面的用户的主机名。DNS 反向解析不依赖于用户的 REMOTE_ADDR
    'REMOTE_PORT'
    用户机器上连接到 Web 服务器所使用的端口号。
    'REMOTE_USER'
    经验证的用户
    'REDIRECT_REMOTE_USER'
    验证的用户,如果请求已在内部重定向。
    'SCRIPT_FILENAME'

    当前执行脚本的绝对路径

    'SERVER_ADMIN'
    该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。
    'SERVER_PORT'
    Web 服务器使用的端口。默认值为 “80”。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。
    'SERVER_SIGNATURE'
    包含了服务器版本和虚拟主机名的字符串。
    'PATH_TRANSLATED'
    当前脚本所在文件系统(非文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。
    'SCRIPT_NAME'
    包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 常量包含当前脚本(例如包含文件)的完整路径和文件名。
    'REQUEST_URI'
    URI 用来指定要访问的页面。例如 “/index.html”。
    'PHP_AUTH_DIGEST'
    当作为 Apache 模块运行时,进行 HTTP Digest 认证的过程中,此变量被设置成客户端发送的“Authorization” HTTP 头内容(以便作进一步的认证操作)。
    'PHP_AUTH_USER'
    当 PHP 运行在 Apache 或 IIS(PHP 5 是 ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
    'PHP_AUTH_PW'
    当 PHP 运行在 Apache 或 IIS(PHP 5 是 ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
    'AUTH_TYPE'
    当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。
    'PATH_INFO'
    包含由客户端提供的、跟在真实脚本名称之后并且在查询语句(query string)之前的路径信息,如果存在的话。例如,如果当前脚本是通过 URLhttp://www.example.com/php/path_info.php/some/stuff?foo=bar 被访问,那么 $_SERVER['PATH_INFO'] 将包含 /some/stuff
    'ORIG_PATH_INFO'
    在被 PHP 处理之前,“PATH_INFO” 的原始版本。

    二、获取HTTP_USER_AGENT

    以下方法可获得

    <?php
    echo $_SERVER["HTTP_USER_AGENT"];
    ?>

    在iPhone下,返回

    Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2

    在Android下,返回

    Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255

    可以看到,微信浏览器为 MicroMessenger ,后面还有其版本号
    与此同时,还可以判断手机类型为iPhone还是Android

    三、判断微信浏览器访问

    我们判断HTTP_USER_AGENT中是否有MicroMessenger即可

     

     

    =============================================================

    关注豆立方(账号BeanCube)方法:
    1. 依次进入以下路径:朋友们—>添加朋友—>搜号码,输入beancube,不区分大小写,点击查找,然后点击关注。
    2. 扫描二维码:

     

  • 相关阅读:
    Intent
    What should we do next in general after collecting relevant data
    NOTE FOR Secure Friend Discovery in Mobile Social Networks
    missing pcap.h
    after building Android Source code
    plot point(one column)
    When talking to someone else, don't infer that is has been talked with others at first. It may bring repulsion to the person who is talking with you.
    进程基本知识
    Python input和raw_input的区别
    强制 code review:reviewboard+svn 的方案
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467719.html
Copyright © 2020-2023  润新知