您好,欢迎访问一九零五行业门户网

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

微信公众平台开发 微信公众平台开发者 微信公众平台开发模式 微信浏览器 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
以下方法可获得
在iphone下,返回
mozilla/5.0 (iphone; cpu iphone os 5_1 like mac os x) applewebkit/534.46 (khtml, like gecko) mobile/9b176 在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 可以看到,微信浏览器为 ,后面还有其版本号
与此同时,还可以判断手机类型为iphone还是android
三、判断微信浏览器访问
我们判断http_user_agent中是否有micromessenger即可
=============================================================
欢迎关注方倍工作室微信,了解我们及行业的最新动态
http://www.bkjia.com/phpjc/440338.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/440338.htmltecharticle微信公众平台开发 微信公众平台开发者 微信公众平台开发模式 微信浏览器http_user_agent 作者: 方倍工作室 原文: http://www.cnblogs.com/txw195...
其它类似信息

推荐信息