十一 07

PHP输出函数有哪些?

1 echo();2 print();3 print_r();4 printf();5 sprintf();6 die();7 var_dump();8 var_export();

echo

返回值是void,可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct)也就是关键字,而并不是真正的函数,因此不能作为表达式的一部分使用。使用的时候不用加括号,加上也可以。只支持基本类型,布尔型除外,echo true的时候显示1,echo false的时候啥都没有。echo不可以输出数组类型

print()

只可以同时输出一个字符串,一个变量,不支持逗号分隔多个显示变量的语法,需要圆括号,print能输出数组类型的数据,返回值是int,当其执行失败时返flase。print  的用法和C语言很像,所以会对输出内容里的%做特殊解释。

print_r()

不仅可以打印变量的的值,还能显示变量类型,而且也可以显示数组和对象这样复杂的变量类型。print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。print_r()可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。 Continue reading

十一 07

PHP $_SERVER 相关信息

$_SERVER中存着很多信息,备份待用。

以下四行,是我们相对常用的

  1. $_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言
  2. $_SERVER['REMOTE_ADDR'] //当前用户 IP 。
  3. $_SERVER['REMOTE_HOST'] //当前用户主机名,DNS 反向解析不依赖于用户的 REMOTE_ADDR。
  4. $_SERVER['REQUEST_URI'] //URL

其它:

  1. $_SERVER['SCRIPT_FILENAME'] //当前执行脚本的绝对路径名。
  2. $_SERVER['SCRIPT_URI'] //用来指定访问的页面,如:“/index.html”
  3. $_SERVER['REMOTE_PORT'] //端口。
  4. $_SERVER['SERVER_ADDR'] //当前运行脚本所在的服务器IP
  5. $_SERVER['SERVER_NAME'] //服务器主机的名称。
  6. $_SERVER['PHP_SELF']//正在执行脚本的文件名
  7. $_SERVER['argv'] //传递给该脚本的参数。
  8. $_SERVER['argc'] //传递给程序的命令行参数的个数。
  9. $_SERVER['GATEWAY_INTERFACE']//CGI 规范的版本。
  10. $_SERVER['SERVER_SOFTWARE'] //服务器标识的字串,在响应请求时的头信息中给出
  11. $_SERVER['SERVER_PROTOCOL'] //请求页面时通信协议的名称和版本
  12. $_SERVER['REQUEST_METHOD']//访问页面时的请求方法
  13. $_SERVER['REQUEST_TIME'] //请求开始时的时间戳。从 PHP 5.1.0 起可用
  14. $_SERVER['QUERY_STRING'] //查询(query)的字符串,如果有的话,通过它进行页面访问。
  15. $_SERVER['DOCUMENT_ROOT'] //当前运行脚本所在的文档根目录
  16. $_SERVER['HTTP_ACCEPT'] //当前请求的 Accept: 头部的内容,如果存在的话。
  17. $_SERVER['HTTP_ACCEPT_CHARSET'] //当前请求的 Accept-Charset: 头部的内容,如果存在的话。
  18. $_SERVER['HTTP_ACCEPT_ENCODING'] //当前请求的 Accept-Encoding: 头部的内容
  19. $_SERVER['HTTP_CONNECTION'] //当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。
  20. $_SERVER['HTTP_HOST'] //当前请求的 Host: 头部的内容,如果存在的话。
  21. $_SERVER['HTTP_REFERER'] //链接到当前页面的前一页面的 URL 地址,该值并不可信。
  22. $_SERVER['HTTP_USER_AGENT'] //当前请求的 User_Agent: 头部的内容。
  23. $_SERVER['HTTPS']//如果通过https访问,则被设为一个非空的值(on),否则返回off
  24. $_SERVER['SERVER_ADMIN'] //管理员信息。该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。
  25. $_SERVER['SERVER_PORT'] //服务器所使用的端口,默认值为 "80"。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。
  26. $_SERVER['SERVER_SIGNATURE'] //包含服务器版本和虚拟主机名的字符串。
  27. $_SERVER['PATH_TRANSLATED'] //当前脚本所在文件系统(不是文档根目录)的基本路径。
  28. $_SERVER['SCRIPT_NAME'] //包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 常量包含当前脚本(例如包含文件)的完整路径和文件名。
  29. $_SERVER['PHP_AUTH_USER'] //当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
  30. $_SERVER['PHP_AUTH_PW'] //当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
  31. $_SERVER['AUTH_TYPE'] //当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型
十一 06

PHP使用$_SERVER['HTTP_USER_AGENT'];获取User Agent信息,另附JS方法

PHP使用$_SERVER['HTTP_USER_AGENT'];获取User Agent信息,通过查找信息的异同并加以判断语句来实现只允许页面在微信内置浏览器打开,或只允许在手机QQ内置浏览器打开,或其它浏览器打开等。

安卓系统

手机UC浏览器:
Mozilla/5.0 (Linux; U; Android 4.2.2; zh-CN; Hol-T00 Build/HUAWEIHol-T00) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.7.5.655 U3/0.8.0 Mobile Safari/534.30

手机QQ浏览器:
Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; Hol-T00 Build/HUAWEIHol-T00) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/6.1 Mobile Safari/537.36

手机QQ内置浏览器:
Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; Hol-T00 Build/HUAWEIHol-T00) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.4 TBS/025477 Mobile Safari/533.1 V1_AND_SQ_5.9.1_272_YYB_D QQ/5.9.1.2535 NetType/WIFI WebP/0.3.0 Pixel/720

微信内置浏览器:
Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; Hol-T00 Build/HUAWEIHol-T00) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.4 TBS/025478 Mobile Safari/533.1 MicroMessenger/6.3.5.50_r1573191.640 NetType/WIFI Language/zh_CN

手机百度:
Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; Hol-T00 Build/HUAWEIHol-T00) AppleWebKit/534.24 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.24 T5/2.0 baiduboxapp/6.9.1 (Baidu; P1 4.2.2)

IOS系统

微信内置浏览器:(iPhone 4S)
Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13B143 MicroMessenger/6.3.6 NetType/WIFI Language/zh_CN

手机QQ内置浏览器:(iPhone 4S)
Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13B143 MicroMessenger/6.3.6 NetType/WIFI Language/zh_CN

手机QQ内置浏览器:(iPhone plus)
Mozilla/5.0 (iPhone; CPU iPhone OS 8_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12D508 QQ/5.9.1.405 Pixel/1080 NetType/WIFI Mem/132

手机QQ内置浏览器:(iPhone plus)
Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13B143 QQ/5.9.1.405 Pixel/1080 NetType/2G Mem/208

JavaScript和PHP获取后判断信息方法如下:
Continue reading

十一 01

移动端UC /QQ 浏览器的部分私有Meta 属性

现在做WEB开发(不仅限于移动开发),都要考虑响应式布局与各种移动设备的显示效果等,国内的移动设备浏览器主要是UC浏览器和QQ浏览器为主(内核均为wekit内核),那么开发人员就必须知道一些它们的Meta私有属性,以更好的完成效果。文末有UC/QQ浏览器开发文档链接。

UC 浏览器的部分私有Meta 属性

设置屏幕方向为横屏还是竖屏

<meta name="screen-orientation" content="portrait|landscape">

设置是否全屏,yes表示强制浏览器全屏

<meta name="full-screen" content="yes">

缩放不出滚动条

<meta name="viewport" content="uc-fitscreen=no|yes"/>

设置no后用户缩放与标准浏览器缩放一直,设置为yes后,用户缩放金放到图片和文字,不出现横向滚动条。

排版

<meta name="layoutmode" content="fitscreen|standard" />

fitscreen模式简化页面处理,适合页面阅读节省流量,standard模式和标准浏览器一致;一旦设置layoutmode meta后,用户使用浏览器提供的的排版模式选项将会无效。

夜间模式

<meta name="nightmode" content="enable|disable"/>

nightmode的值设置为disable后,即使用户使用浏览器的夜间模式,页面的表现也仍然是非夜间模式。

强制图片显示

<meta name="imagemode" content="force"/>

UC浏览器为了节省流量,为用户提供了无图模式,但是如果页面的图片是必不可少的,如验证码的,需要强制浏览器显示图片,可以设置imagemode, 不影响子页面。通过META设置图片加载方式会作用于整个页面,如果希望对单个图片进行设置,那么可以使用这个

<img src="..." show="force">

应用模式

<meta name="browsermode" content="application"/>
使用了application这种应用模式后,页面讲默认全屏,禁止长按菜单,禁止收拾,标准排版,以及强制图片显示。

QQ 浏览器x5内核Meta私有属性

设置屏幕方向

<meta name="x5-orientation" content="portrait|landscape" />

设置全屏

<meta name="x5-fullscreen" content="true" />

设置屏幕模式

普通浏览模式:

<meta name="x5-page-mode" content="default" />

网页应用模式:

<meta name="x5-page-mode" content="app" />

对比

在Jeff 的实际使用的情况下,发现对于控制全屏的meta 标签,UC 跟QQ 处理的方式稍有不同:区别在于处理系统状态栏,UC 是直接覆盖系统状态栏,而QQ 仍然保留之。从原生应用的场景及用户角度看,QQ 的这种“伪全屏”反而是更为友好。

Continue reading