2018年12月

简单易用的开源web分析软件:Open Web Analytics

owa_logo_200w.png

Open Web Analytics(OWA)是一款免费的开源网站分析软件,可用于跟踪和分析人们如何使用你的网站和应用程序。OWA 基于 GPL 授权,让网站所有者或开发者以一种非常简单的方式向其网站添加分析功能,可以使用 JavaScriopt、PHP 或者基于 REST 的 API。而且,OWA 还内建支持对由 WordPress 和 MediaWiki 这类浏览内容管理网站进行跟踪。

官网链接:http://www.openwebanalytics.com
下载地址:https://github.com/padams/Open-Web-Analytics

安装完成后,添加需要统计的网站,你会获取到一段js代码,复制到网站需要统计的页面即可(类似百度统计代码)。后台界面如下:
9f145cdb-759a-4375-b6c3-e48084955be3.png

在哪些情况下 HTTP_REFERER 会为空

有时候我们需要获取当前页面的前一个页面信息,在PHP里面,通过$_SERVER['HTTP_REFERER']即可获取相关信息,配合使用parse_url()函数,可以切割网址单独获取各部分信息。但referer并非总是有效的,有几次这个问题困恼了我很久。

第一次碰到这个问题是因为浏览器原因导致,详情可参考我去年写的一篇文章:IE浏览器下HTTP_REFERER失效
第二次是因为给网站设置了https访问,但跳转的链接还是http。

通过查阅相关资料,总结了下面这些情形,HTTP_REFERER 有可能为空(失效):

  • 直接在浏览器地址栏输入网址访问
  • 通过浏览器书签点击访问网站
  • 在一个外部应用程序中点击链接访问
  • 从 https 链接跳转到 http 链接
  • 从 https 链接跳转到 另一个不同的 https 链接
  • 服务器安装了诸如firewall、antivirus等安全软件,将referer过滤掉了
  • 使用了过滤 referer 的代理服务器
  • 通过诸如curl等程序访问网站,但未设置referer头
但需要注意的是,完全信任 HTTP_REFERER 是不推荐的,不仅因为该变量容易失效或为空,更在于该变量很容易被伪造。

Apache 配置多个https站点

工作中经常会遇到在同一台服务器上部署多个https站点的情况,本文简单介绍实现方法。

假设apache已经安装了ssl模块。检测方法:cd /etc/httpd/modules;ll|grep ssl,如结果为 mod_ssl.so ,表示已经安装,如结果为空,则未安装。安装方法请自行搜索。

如服务器开启了iptables防火墙,请放开443端口

申请ssl证书,下载,部署到服务器相关目录

本人在腾讯云申请的免费 TrustAsia TLS RSA CA 证书
cd /etc/httpd/conf.d
mkdir crt
# 上传三个证书文件到 crt 目录
# 文件分别是:1_root_bundle.crt,2_www.domain.com_cert.crt 和私钥文件 3_www.domain.com.key
# 以上www.domain.com 请替换成自己的域名

修改apache配置

LoadModule ssl_module modules/mod_ssl.so
Listen 443
NameVirtualHost *:443 # 这一句很关键,否则只有第一个虚拟主机生效
# 第一个虚拟主机
<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName domaintest.cn
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/default/2_domaintest.cn.crt
SSLCertificateKeyFile /etc/httpd/ssl/default/3_domaintest.cn.key
SSLCertificateChainFile /etc/httpd/ssl/default/1_root_bundle.crt
</VirtualHost>
#第二个虚拟主机
<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName web.domaintest.cn
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/web/2_web.domaintest.cn.crt
SSLCertificateKeyFile /etc/httpd/ssl/web/3_web.domaintest.cn.key
SSLCertificateChainFile /etc/httpd/ssl/web/1_root_bundle.crt
</VirtualHost>

测试配置文件,无误后重启apache服务

httpd -t # 检测配置文件
httpd -k restart # 重启服务

Chrome浏览器检查元素,如看到绿色的 This page is secure(valid HTTPS). 字样,表示安装成功。

微信图片_20181205114633.png
至此,多站点https服务部署完成。

php检测移动端

现在开发网站项目时,经常都需要自动检测客户端是PC还是mobile。通过js判断是比较常用的方法,也有不少成熟的第三方库可用,比如Device.js,这是一个可以让你检测设备的平台、操作系统和方向的JavaScript库。

对于很多采用统一入口的PHP程序来说,通过入口文件完成移动端检测是比较便捷的方式,Mobile Detect:The lightweight PHP class for detecting mobile devices(including tablets) 库正好帮我们做了这方面工作。

简单介绍使用方法:

// Include and instantiate the class.
require_once 'Mobile_Detect.php';
$detect = new Mobile_Detect;

// Any mobile device (phones or tablets).
if ( $detect->isMobile() ) {
    // do something
}

Demo地址:Mobile Detect Demo
GibHub链接:MobileDetect