闪星空间 » PHP

记 KodExplorer 打开 RAR 提示 Match Nothing Content

某日搬迁了一个 KodExplorer 到另一台服务器,完了以后发现打开(和解压) RAR 压缩包会提示“Match Nothing Content!”

顺着源码找到了 /app/kod/archiveLib/kodRarArchive.class.php,但是没有看出什么。手动在 Shell 执行命令好像没有问题。zip、p7zip、rar、unrar 该装不该装的都安装好了,没有解决。最后想到,先前那个服务器没有问题,怎么到这里就有了呢?仔细阅读代码,想了一下,发现是 locale 设置搞的鬼——新服务器语言设置是中文!怀疑就是 KodExplorer 解析时出错了。

阅读全文 »

Published @

给 Xiuno BBS 添加 emoji 支持

Xiuno BBS 是一款用 PHP 开发的开源 BBS 系统,简洁高效,鼓励二次开发。当前的最新版 4.0.4 中,默认是不支持 emoji 表情的。如果发帖时填入了 emoji 表情,发帖后将变成问号。这篇文章教你怎么解决这个问题。

其实,跟 Typecho 的情况一样,造成这个问题的原因是数据库的字符编码问题。MySQL 原本的 utf8 设计只为一个字符留出最多3个字节,但 emoji 这样特别的字符需要4个。于是改成 utf8mb4 编码即可。

阅读全文 »

Published @

CentOS 6 32位 Nginx+PHP7+MySQL 建站环境配置

虽然我已经建站多年了,但是用 VPS 自己搭环境的时间还不长。在这里记录下我最近搭建环境的全过程,敬请各位指正批评。

这篇文章展示了我从一个全新安装的 CentOS 6 32位操作系统,进行系统精简,设置 SSH 证书登录,更新 OpenSSL,编译安装 Nginx、PHP 7、MySQL 等程序,进行一点优化配置,设置数据库定时备份的全过程。搭建的网站环境支持一些前沿的东西,如 HTTP/2。

阅读全文 »

Published @

从 Typecho 自定义字段的调用代码看去

千呼万唤,Typecho 的“自定义字段”功能终于在 0.9 中出来了。然而,多数人还蒙在这样一个鼓里——该怎么在模板调用已经设置好的自定义字段呢?

让我们从这里开始说下去。

Typecho 文档真残缺

在这里我必须吐槽 Typecho 文档的残缺。

阅读全文 »

Published @

PHP 等于与不等于,全等与不全等

今天(指本文原载日期 2013 年 7 月 30 日)突然就被 Voss 问到 PHP 中 != 与 !== 有什么区别。说实话我之前还没见过 !== 呢。查了资料才知道还确实存在并且有区别呢。

为了很好地回答这个问题,我们先引入一个“全等”的概念。全等是指数值相等,类型也相等。而一般的“等于”只是数值相等。比如说,35 等于 35,35 全等 35,这没错;但是 35 等于 '35',但 35 不全等 '35'。因为它们一个是“数型”的,一个是“字符串型”的。

阅读全文 »

Published @

Typecho 点保存插件设置后回到后台首页的问题

这个问题经常出现在搬家后,或者站点新建时。因为这很可能是主机原因造成的。

一般我们在 Typecho 点击按钮保存插件设置后,会返回插件页面并显示一条条,上面写着“插件设置已经保存”。但是由于某些特殊原因,可能会返回后台管理首页,什么也没有提示,这个时候插件设置是没有保存的。这时候,博客表面上能正常访问无误,但是涉及到内部问题,就可能会出错,如用插件发送邮件时,模板设置时有问题。

阅读全文 »

Published @

网站搬家时请返回 HTTP 503

503 错误是表示“服务器临时不可用”的意思,与 404找不到网页、403无权访问 是同一个类别的东东。

网站搬家或者维护时,最适合返回 HTTP 503 错误了。这个时候还可以规定重试时间,虽然用户一般看不到,但是搜索引擎可以辨认呀!还可以配上相应文字或复杂的页面,给用户看。那么就是趋向于完美了。

阅读全文 »

Published @

用 .htaccess 保护网站敏感目录的改进方法

很多人都在使用 .htaccess 保护网站的敏感目录(如:网站后台),方法无非是使用 HTTP 基本认证(HTTP Basic Auth)和 IP 白名单。HTTP 基本认证方式过于简单,IP 白名单对于动态 IP 用户不方便。因此,这里推荐一种使用 Cookie 验证的方法,不仅可以有效解决上面提到的问题,同时还可“修改”敏感目录名。

首先说明一下,此方法仅限于在支持 PHP 语言与 .htaccess 的主机上使用。没问题吧?那现在让我们很快地进入操作环节吧——

阅读全文 »

Published @

多语言判断用户是否启用了请勿追踪(Do Not Track)

请勿追踪(英语:Do Not Track,简称 DNT,又译为“请勿跟踪”)是一项被提名的 HTTP 头。当用户提出启用“请勿追踪”功能后,具有“请勿追踪”功能的浏览器会在 http 数据传输中添加一个“头信息”(headers),这个头信息向商业网站的服务器表明用户不希望被追踪。这样,遵守该规则的网站就不会追踪用户的个人信息来用于更精准的在线广告。

自 Firefox 浏览器成为世界上首个支持“请勿追踪”功能的浏览器后,Internet Explorer(9及以上)、Safari 和 Opera 浏览器也相继添加了对“请勿追踪”功能的支持。最后 Chrome 23 浏览器也宣布支持此功能。当前,国内许多浏览器也已经支持了“请勿追踪”功能,甚至一些浏览器设置成默认启用。

阅读全文 »

Published @

PHP 用 shuffle() 函数实现数组随机再排序

刚刚在给我的解密游戏完善一些东西,尤其是跳关的那个文件,里面有序地储存了关卡的网址。为了增加难度,我设置了每次打开页面都随机给网址排序——这就是今天我给大家介绍的东西。

其实,PHP 中有个自带函数叫作 shuffle。要使用它,非常方便。

阅读全文 »

Published @