Hugh's Blog

Linux 安装 PHP

Linux 选择安装特定 PHP 版本,做个记录。 CentOS 安装 PHP 安装源: # centos 7 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install http://rpms.remirepo.net/e...

PHP 转换编码带 BOM 的问题

PHP 在转换文件编码时,如果遇到带有 BOM 头的话,会导致其他应用读取到的内容出现乱码,需要做单独的处理。 $content = file_get_contents('in.txt'); $encode = mb_detect_encoding($content, ['ASCII', 'GBK', &#...

MySQL 组合索引使用

关于组合索引的使用,作个记录。 组合索引是指一个索引中包含多个列,当查询条件包含多个列时,需要注意左前缀原则,即查询的条件需要严格按照索引列的顺序,否则将不会完全使用到索引。 测试基础表: create table `test` ( `id` int(11) unsigned not null auto_increment, `A` i...

PHP cURL Content Type

最近在用 PHP cURL 发送数据给接口,但是接口并没有收到数据,返回了错误信息。 使用 curl_getinfo 查看请求头,发现 Content-Type 的值是 multipart/form-data,而且后面的消息体也经过了编码,以 boundary= 开头,而接口要求的值是 application/x-www-form-urlencoded,就...

使用 Hyper-V 配置开发环境

以前的开发环境是 WSL,最近换了台式,便决定使用 Hyper-V 安装虚拟机来作为开发环境。 系统选择的是 Ubuntu Server 18.04,安装过程很简单,添加配置安装系统就行,教程很多,例如 使用Hyper-V安装Ubuntu Server 16.10 和 安装Ubuntu Server18.04,有个小问题是本来交换机用的是外部网络,但是虚拟...

PHP LDAP 连接超时

最近在使用 PHP 连接 LDAP 服务器做用户验证,在测试域控服务器的时候,设置了超时选项,如果超时则表示无法连接服务器,一般来说,有如下的代码: $conn = @ldap_connect('ldap://1.1.1.1:389'); ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3...

laravel-swoole 使用

最近常用的 PHP 框架是 Laravel,而 PHP 框架本身启动都要加载不少文件,往往 QPS 不会很高。 Swoole 扩展本身就常驻内存,异步执行,可以为项目提高不少性能,刚好也有轮子可以使用 swooletw/laravel-swoole,做个记录。 安装非常简单,按照文档来就行。 Swoole 扩展 # 安装 sudo apt-get i...

MySQL 5.7 group by 问题

最近在使用 MySQL 碰到一个问题: ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.post.id' which is not functionally d...

PHP 数据库并发处理

下面是一些 PHP 数据库并发的简单处理方案,作个记录。 数据库信息 create table goods( id INT NOT NULL AUTO_INCREMENT, stock INT NOT NULL DEFAULT 0, PRIMARY KEY (id) ); insert into goods(stock) values(...

PHP + Redis 简单消息队列

消息队列在高并发的时候,可以缓解对数据库的压力,下面使用 PHP + Redis(list) 简单模拟下这个过程。 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $type = isset($_GET['type']) ? 'read...

PHP 排序算法

冒泡排序 冒泡排序比较简单,每一次循环从前往后依次比较,如果前者比后者大,则交换位置,就像泡泡越来越大一样,重复上面的循环,直到数组有序,最多循环次数为 n^2,可以通过添加一个交换变量来进行优化,如果一次循环中没有发生交换的话,则表明排序完成。 function bubbleSorting($arr) { $len = count($arr);...

PHP 设计模式

设计模式在很多语言都有用到,PHP 也不例外,下面是一些常见的 PHP 设计模式,做个记录。 工厂模式 平常我们获取实例,都是使用 new 来获取,如果在后期对类有修改,就需要改很多个地方,而工厂模式类可以把实例化对象封装成方法,后期修改只需修改工厂类就行。 // 工厂模式 class Factory { public static funct...

PHP Session 锁阻塞请求问题

PHP Session 默认是用文件存储的,当 Session 初始化时,即调用 session_start() 或者 session.auto_start 设置为 true 时,PHP 会在 session.save_path 下创建一个文件(如果是新会话)并锁定,然后把 Cookie ID 发送给服务器,例如文件:/var/lib/php/session...

WordPress 单篇文章添加分页

问题:在单篇文章模板调用分类查询会 301 跳转回到原页面。 例如:自定义文章类型 author,模板为 single-author.php,分页链接 /author/example/page/2 会 301 重定向到 /author/example。 原因:WordPress 对于分页查询参数会有判断,例如 is_single,满足的话会移除参数。 ...

Docker + MySQL 主从环境

只是简单的搭建环境进行测试,做个记录。 MySQL 配置 建立相应的 cnf 配置文件,注意 server_id 需要保证唯一。 master/my.cnf [mysqld] server_id=1 log-bin=mysql-bin read-only=0 ## 指定同步数据库 # binlog-do-db=example ## 忽略同步数据库 #...

Docker + Nginx 简单模拟负载均衡

只是简单的单机模拟负载均衡,做个记录。 建立相应的静态文件 mkdir html1 echo '<h1>Hello World 1</h1>' > ./html1/index.html # 同样的建立 html2, html3 建立 Nginx 配置文件 default.conf upstream a...

Nginx 配置自签名的 SSL 证书

配置自签名的 SSL 证书很简单,做个记录。 生成证书,一行命令就行: mkdir certs && cd certs openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout selfsigned.key -out selfsigned.crt # Output Coun...

OpenCart 编辑器上传问题

今天有个 OpenCart 网站出现了一个问题:文章编辑器上传图片失败。本来以为是修改代码过程中引发了 Bug,但是下载官方代码试了下,一样的问题,版本是 1.5.6.4,在论坛也找到有不少人遇到了一样的问题,由于目前是 1.x 的最后一个版本,而如今正式版都已经 3.x 了,所有也不会有修复了,所幸论坛里有人提供了解决方案,做个记录。 首先定位到使用了 ...

Yii2 生产环境性能优化

最近在使用 wrk 进行网站压力测试,文章 里面测试本站时 QPS 只有 15 左右,而刚好是周末,记录一下优化的过程。 首先使用缓存,本站选择了 Redis,Yii2 官方有扩展,安装了就行。 MySQL 方面暂时也没什么好优化了,毕竟是小网站,索引也没加,但是减少连接数也是必要的,另外 Yii2 Debug Toolbar 挺好用的,列出了所有 My...

使用 wrk 进行 benchmark 测试

wrk 是一个轻量的 HTTP 压力测试工具,跟 ApacheBench 类似。 工具是开源的,地址是:wg/wrk,安装也简单,Wiki 上面就有,不过最近经常用 Docker,所以用的是这个版本:williamyeh/wrk。 使用命令很简单,跟 ab 类似。 # 查看使用命令 docker run --rm williamyeh/wrk --ve...

MySQL 交集、并集与差集

最近碰到一个简单的需求:获取多个分类下的文章,中间有个关联表;有点类似于根据分类表与文章表获取交集 (关联表) 的情况,过程也简单,作下记录。 使用以下的数据来测试: mysql> SELECT * FROM `table_a`; +----+------+ | id | name | +----+------+ | 1 | a | | ...

Outlook 接收 HTML 格式邮件的一些问题

平常在处理邮件发送 HTML 内容的时候,在 Foxmail 里面查看倒还正常,但是在 Outlook 中显示总会有些出入,应该是 Outlook 会对标签进行处理,把一些样式给过滤掉了,整理一下遇到过的问题。 内容居中 <table style="width: 100%;"> <tr> &...

MySQL 保存 4 字节字符问题

今天在保存内容到数据库的时候报如下错误: Incorrect string value: '\xF0\xA2\xB9\x82\xE5\xB8...' for column 'content' at row 1 本来还以为是多出来非法字符或者字符编码的问题,但试过了都不是,而 \xF0\xA2\xB9\x82\xE5\xB...

PHP 实现异步调用

PHP 实现异步调用在客户端的话比较简单,比如在页面加载完成后 jQuery 发送 AJAX 请求,或者嵌入到 img 标签,然后 src 指向请求,之前写的这篇文章 Nginx + Google Analytics 配置 就是使用 img 标签来触发谷歌分析统计,这两种都会比较依赖于浏览器与用户。 在服务端异步调用的话可以使用 curl 与 fsocko...

MySQL 笔记(持续更新)

中文乱码 # 登录 mysql -u root -p # 查看目前所有编码 mysql> show variables like 'char%'; 会显示类似下面的信息: +--------------------------+-------------------------------+ | Variable_name ...

Nginx 用户认证

一般的 Web 服务器都提供了用户认证登录系统,用于限制用户访问某些路径,需要登录认证之后才能继续访问网站 (比如后台管理),开启也很简单,以 Nginx 为例,做个记录。 创建用户密码文件 通过 OpenSSL 创建 # Add user sudo echo -n 'admin:' >> /etc/nginx/.htpas...

PHP 调试追踪

今天有个 WordPress 的网站不能登录后台,打开页面显示下面的错误的信息: Fatal error: Call to undefined function wp_get_current_user() in /public_html/wp-includes/user.php on line 209 看了下代码,发现网站的 WordPress 版本才...

WordPress 对上传的文件进行预处理

WordPress 上传的文件保存名称一般为原始名称不经过修改,除非遇到同名,这样保存的文件有时候会碰到一些小问题,例如带中文或者空格,浏览器可能不能识别或者在使用 FileZilla 下载文件时由于编码问题会使文件名称乱码等等,而公司的录资料人员经常这样子干。。。解决方法也简单,不使用插件直接使用 WordPress 提供的过滤钩子 wp_handle_u...

通过 Nginx 添加谷歌分析代码

一般谷歌分析代码是加到 </head> 或者 </body> 中的,正常来说添加到公用文件即可,这样全站都能使用,但是如果有的项目是独立的或者都是静态文件,这样子就不好添加了,而且修改起来也会变得麻烦,幸好 Nginx 提供了 sub_filter 方法,可以在响应正文前对一些字符进行过滤替换,使用很简单,做个记录。 server ...

Nginx + Google Analytics 配置

网站添加 Google Analytics 一般是在页面中添加 Tracking Code,而加载进来的 analytics.js 脚本有 11 KB 的大小,如今我每个页面的大小大概是 5 KB 左右,相对来说有点大了,另外还有一些问题,比如在大陆要加载分析脚本很慢,而且容易给一些插件给屏蔽掉等,无意中找到一篇文章说可以利用 Nginx 来做转发,详情看 ...

使用 GitHub Webhooks 部署网站

之前在更新文章的过程中,需要做的事情有两件:备份文章到 GitHub 和本地创建静态文件并提交到服务器 (Git Hooks),感觉上还是有点麻烦,而且 VPS 已经禁止密码登录 (SSH 密钥登录),而刚好 GitHub 为每个仓库提供了 Webhook 功能,简单来说,当 push 事件触发时,GitHub 会发送一个 POST 请求到我们配置的地址,这...

Nginx location 配置笔记

对于 Nginx 的配置一直都是一知半解的,出问题总是弄半天,今天遇到了 add_header 不生效的问题,就顺便把一些常用配置做下记录吧。 location 正则 = 精确匹配,如果匹配,则停止 ~ 正则匹配,区分大小写 ~* 正则匹配,不区分大小写 ^~ 普通字符匹配,如果匹配,则不匹配别的规则,一般用来匹配目录 @ 命名 location,使用...

数据库密码包含 HTML 实体的一个小坑

今天安装 OpenCart 模板的时候,在输入数据库信息这一步报账号密码错误,但是测试过数据库是能够连接的,感觉好奇怪 定位到安装模板时数据库连接的代码 (主题支持的 OpenCart 版本比较旧) if ($this->request->post['db_driver'] == 'mysql') { if ...

CSS 把 Footer 固定在页面底部

有些网站要求当内容不够时把底部固定,实现方法使用的是 Yii 框架自带的,提取出来作个记录 基本 DOM 结构 <html> <body> <div id="wrap"> <header>Header</header> </div> <foo...

使用 Let's Encrypt 来部署 HTTPS

最近配置好了服务器,也买了域名,顺便也把 HTTPS 部署好,反正以后都是要部署的。 网上找了不少关于这方面的教程,选择了 Let’s Encrypt 这个免费好用的证书签发服务,而证书申请并没有使用官方的 Certbot 工具,而是使用了 acme-tiny,部署过程依照 Let’s Encrypt,免费好用的 HTTPS 证书,一路下来没什么问题 (中...

PHPExcel 单元格日期转换

今天在使用 PHPExcel 时又遇到单元格是日期的问题,在转换成 PHP 日期格式总是转换成当天的日期,即使两个单元格日期数值不一样还是返回当前日期,网上找的大多数是两种方法 PHPExcel_Style_NumberFormat::toFormattedString 和 PHPExcel_Shared_Date::ExcelToPHP,但是都试过一样返回...

使用 Git Hooks 自动部署代码

自动化部署代码主要是用 Git Hooks,分别需要在服务器与本地开发环境进行配置。 服务器配置 首先建立一个裸仓库来作为触发钩子,这个仓库是要给本地开发环境提交的 cd ~ mkdir remote cd remote git --bare init 建立代码仓库,用来拉取上面的裸仓库代码,这里直接在网站根目录下建立了,然后可以配置网站目录指向 ...

PHP 下子域名共享 Cookies

PHP 在子域名下共享 Cookies,比如登录信息。 直接使用 PHP 来处理 ini_set('session.cookie_path', '/'); ini_set('session.cookie_domain', '.domain.com'); 在 Yii2 下,需要在组件中对 ...

WordPress 文章自定义 wpautop 过滤内容

在使用 WordPress 开发过程中,有的时候需要对主题进行二次开发,而主题有时候会依赖 WordPress 的 wpautop 来对内容进行过滤,特别是后台使用可拖动编辑器的情况下,如果某些页面使用内置编辑器的话,则输出的内容会多出一些不必要的标签,例如 <p><p/>,<br> 等等,这时候,在前台输出的页面则容易样...

PHPMailer 在 SSL 配置失败时的解决方法

今天在使用 PHPMailer 发邮件时遇到一个问题,显示错误是 Could not connect to SMTP host,由于之前测试成功的服务器在香港,网站上线之后转到大陆服务器了,而且 smtp 的服务器也是在香港,所以以为是服务器的原因,但是在服务器上 ping smtp 服务器是有反应的,所以应该并不是不能连接 smtp 服务器的原因。 在网...

WordPress 更换域名时丢失 Widgets 数据

今天在对一个 WordPress 网站更换域名时,直接对 sql 文件进行域名替换,更新完之后网站的一些内容丢失了,发现大都是 Widgets 的内容。 网上找也有类似的情况,大概是因为 WordPress 在保存数组内容时会先对数组进行 serialize 处理,当我们修改了内容之后,可能会导致内容的长度不一致,然后使用 unserialize 取数据时...

Yii2 上传文件时出现 finfo_file 问题

今天在使用 Yii2 上传文件时出现下面的错误 (fileinfo.dll已经开启),觉得好奇怪,StackOverflow 上有人说需要在 saveAs 保存文件前调用 Model 的 save 方法,这样修改了之后确实可以了,感觉应该是在调用 saveAs 的时候,缓存文件删除了,再调用 save 方法的话,就找不到缓存文件了,作个记录。 finfo_...

php.ini 配置可修改范围

今天在修改 PHP 配置值 upload_max_filesize 时发现使用 ini_set 并不能生效,而有时候修改 display_errors 却能成功,觉得很困惑,Google 之后才知道原来 PHP 配置有可被设定范围。 简单的说,我们平常修改的配置值 display_errors 属于 PHP_INI_ALL 模式,表明可以在任何地方设定,而...

OpenCart 低版本使用 mysql_connect 问题

前几天新同事啊企在安装一个低版本的 OpenCart(1.5.6) 主题时,由于版本较低,安装不成功,因为连接数据库使用的还是 mysql_connect 函数,而现在的 PHP 版本一般都在 5.5 以上,在 7.0 以上更是不支持这个函数了。 在安装完之后,显示 mysql_connect 被废弃的信息 PHP Deprecated: mysql_...

WordPress 媒体图片不能加载

最近在对一个低版本的 WordPress 网站进行迁移并升级到最新的版本 (4.5.3),升级完之后出现一个问题,在打开 wp-admin/upload.php 页面时图片与文件加载不出来,但是换成 List View 却可以加载,而且在 Featured Image 或者 Add Media 中依然不能加载,google 也没找到解决办法,网上有的说是 h...

WordPress 调用模板文件时传递参数

WordPress的 get_template_part() 函数不能向模板传递参数 但其实有个很简单的方法,代码如下,注意要加上文件后缀 include(locate_template('filename.php')); // locate_template('filename.php', true); // 直接在子...

JavaScript 禁止鼠标事件

有些网站要求禁止鼠标功能,比如禁止选择文字,禁止右键菜单等,做个记录 // 禁止右键点击 document.oncontextmenu = function() { return false; }; window.onmousedown = function () { if (window.event) { if (event.button == ...

WordPress 分类页面使用自定义分页显示 404

不知道是什么原因造成的,但是修改了之后确实是没有问题了,具体可以看参考 // 如果多处地方需要用到参数的话,可以定义一下, 方便修改 function my_posts_per_page() { return 15; } function cure_wp_amnesia_on_query_string($query_string) { if (!is...

PHP 调用雅虎汇率 API

调用地址是: http://download.finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=CNYHKD=x CNYHKD 为必填,指人民币 (CNY) 与港币 (HKD) 的汇率,可以换成其他国家的货币代码 返回数据:”CNYHKD=x”,1.1568,“7/18/2016”,“1...

WordPress 使用 gettext 来替换内容

有时候一些插件或者主题会使用 __() 或 _e() 来对一些文本内容进行输出,在不修改插件或者主题代码的情况下,可以使用 gettext方法来进行修改 在 functions.php 中添加下面的代码 function my_text_strings($translated_text, $text, $domain) { switch ($trans...

JavaScript 简单计时器

最近工作中需要做一个活动倒计时的效果,代码很简单,做个记录 <!DOCTYPE html> <html> <head> <title>Countdown</title> </head> <body> <h1 id="tick">00:00:0...

Yii2 在 Nginx 下的配置

这些都是 Yii2 在 Nginx 的一些基础配置,做个记录 (WNMP 环境,Linux 下类似) 直接在配置文件里添加 (自定义域名: example.com) # Yii2 server { listen 80; server_name example.com www.example.com; # Linux...

Windows 搭建 WNMP 环境

最近安装 Ubuntu 都是一卡一卡的,决定还是回到 Windows 的怀抱了 建立环境目录并下载 Nginx: D:\wnmp\nginx PHP: D:\wnmp\php7 MySQL: D:\wnmp\mysql PHP 通过 FastCGI 来执行,所以选择 Non Thread Safe 的版本就行,下载好之后解压到相应目录,最后就是添加...

WordPress 修改 tinyMCE 设置

今天在 WordPress 中使用默认的编辑器修改文章内容,在切换代码模式中发现编辑器会把 span 标签给过滤掉,而我需要保留 span 标签,Google 之后发现原来可以在 functions 中对 tinyMCE 进行初始化设置。 <?php function custom_tinymce_config($init) { // Don...

WordPress 主题常用 functions

创建新的主题时 functions.php 的一些常用设置。 <?php // Remove wpautop // remove_filter('the_content', 'wpautop'); // Remove wp_head or wp_footer actions // Actions added in ...

Yii2 前后台用户分离

Yii2 要分离前后台用户需要把前台与后台的 Session 与 Cookie 区分开来。 环境:高级模板 为了方便,直接使用 Migrate 复制默认的 user 表来建立 manager 表,同时需要建立以下的类。 common\models\User => common\models\Manager common\models\User...

WordPress Ajax 简单使用

使用 Wordpress 自带的 Ajax 方法,需要先定义 action add_action('wp_ajax_nopriv_example_test', 'example_test'); add_action('wp_ajax_example_test', 'example_test')...

WordPress 跳转到自定义模板

使用 WordPress 进行自定义的模板跳转 function load_custom_emplate_function($template) { global $wp_query; if (!file_exists($template)) return; $wp_query->is_page = true; $wp_query->i...

Yii2 访问控制过滤器

Yii2 提供了两种授权访问方式:Access Control Filter(ACF) 和 Role-Based Access Control(RBAC,基于角色的访问授权)。 下面对 ACF 作个简单的记录。 例如在默认的 SiteController 有个 behaviors 方法,里面定义了多条 rules ,ACF 会逐条检查,直到匹配。 us...

Yii2 修改入口文件位置

高级模板中,有 frontend 和 backend 两个目录,在移动到根目录时,还需要修改 config/main.php 文件,将 frontend 中的入口文件移到根目录,首先在根目录中添加 index.php 文件 <?php defined('YII_DEBUG') or define('YII_DEBUG'...

带 BOM 的 UTF-8 文件输出问题

在做 WordPress 主题时,输出首页发现顶部始终会有一部分显示空白,F12 发现, head 标签部分的内容包括 title、meta 均包含在 body 标签内,而 body 的顶部始终有这样一个字串&#65279,觉得很奇怪,google 之后才发现原来是文件保存编码的问题,把文件保存为 utf-8 without bom 就可以了。 具...

谷歌地图绘制多个地点

官方就有很好的例子,具体开发还要找官方 api 文档,下面是一个简单的显示多个地点的例子。 <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8&...

使用 usort 函数对二维数组进行排序

PHP 提供了很多的排序函数,看了一下,好像没有对二维数组以上进行排序的函数,但是有一个 usort() 函数,可以使用用户自定义的函数 (也可以是匿名函数) 进行排序,这个函数可以满足需求,以下官方手册上的一个简单例子。 function cmp($a, $b) { if ($a == $b) return 0; return ($a &...

WordPress 获取多个自定义分类法下的文章

主要还是使用 WP_Query 来获取,关键是 args 参数。 // 随便怎么写,反正能获取到 ids 或 slugs 就行 // 获取 post 下的要显示的分类 slug $category_value = get_post_meta($post->ID, 'tz_category_include', true); // 根据 ...

WordPress 获取子页面

获取子页面很简单,代码也不长,需要注意的变量的传递问题。 代码 // get_page_children 方法 // 首先获取到需要的 pages // $query = new WP_Query(); // $pages = $query->query(array('post_type' => 'page',...

在 htaccess 文件中设置字符集

网站首页访问 index.html,显示是乱码。本来访问 index.php 文件是没问题的,所以可以在 apache 中使用 DirectoryIndex index.php index.html 来修改默认 index 文件,老严说可以使用 htaccess 文件来设置默认 charset,google 找到了类似的,作个记录。 在 .htaccess...

WordPress 返回带 HTML 标签的内容

今天遇到一个小需求,需要在一篇文章显示另一篇文章的内容。 使用 shortcode 来实现,然后在文章中调用,shortcode 定义需要返回带 html 标签的内容。 functions.php 中添加 function getAnotherPostContent($atts) { $atts = shortcode_atts(array( &...

WordPress 显示某个分类下的文章

之前写过一个在 sidebar 下显示分类文章的,这个也是类似,就不多说了。 直接建立 template 文件。 <?php /** * Template Name: Posts By Category */ get_header(); // 获取 post 的某个字段 (分类 slug),这个是从 page 页面中添加的,没看到的话点击右上角的...

WordPress 在 Sidebar 中显示某个分类下的文章

实现过程 注册 sidebar widget (register_sidebar) 添加获取分类文章的 shortcode (add_shortcode) 允许在 widget 中使用 shortcode (do_shortcode) 使用的是 cherry framework 主题,所以修改的是主题下的 sidebar-init.php 文件,...

HTML 跳转到有锚点的网页后自动调整位置

今天任务中有这样一个需求,假如有 a、b 两个页面,b 有锚点,从 a 上点击链接到 b (b 页面的某个锚点) 后,由于 b 页面有一个保持固定位置的头部,所以在显示锚点内容会出现不完整或者被头部挡住了。 也没想到什么好的办法,最后是用 javascript 里面的 setTimeout 函数来实现,就是在跳转到 b 页面后,经过一个比较短的时间来自动进...

WordPress 自定义上传文件类型

很简单!! 在 functions.php 文件中添加如下代码。 /** * Add custom file type */ add_filter('upload_mimes', 'custom_upload_xml'); function custom_upload_xml($mimes = array()) {...

PHP 实现 301 重定向

PHP 中实现 301 重定向挺简单的,代码也不复杂,无非就是对域名进行判断,不是新域名就使用 header 函数进行跳转,但是中途也出现一些问题,在此做个记录。 $host = 'www.new.com'; // 要跳转的域名 $query = $_SERVER['REQUEST_URI']; // 查询字段 $query...

WordPress 搜索添加自定义字段

昨天工作需要修改 WordPress 搜索功能,就是在搜索时把 post_excerpt 也添加到查询当中,用的是 wordpress 自带 pre_get_posts 的 api,添加到 add_action 就行,想要添加其他自定义字段也是类似的。 把代码添加到 functions.php中 /* add excerpt search */ add_...

WordPress 根据国家 IP 自动跳转到不同页面

项目中需要根据访问者 ip 来为其自动跳转到不同页面,例如大陆用户访问自动跳转到另一个服务器,其他用户则不变;想到的方法有两种,一种是使用 ip 数据库来进行筛选,然后在 php 中使用 header 函数进行跳转,另一种是修改 .htaccess 文件 (这个没实验过),还有网上说用 javascript 来获取浏览器语言来进行跳转。方法应该有很多,但是能...

网页中添加 Facebook 第三方登录

工作项目中需要使用 facebook 第三方登录,需要调用 facebook php api,其实代码什么的都已经写好了,但是在跳转到登录页面时产生错误,google 之后发现是 facebook app 的配置没填好,把这个 api 调用过程做个记录。本次使用的 PHP SDK Version 在 2.0 以上。 本地配置文件 php 部分主要是修改 ...

Hexo 主题修改

首先,使用的主题是 Noderce,作者是 willerce,感谢作者。 这个周末花了点时间来修改 hexo 的主题 (其实很早之前就想自己修改了,但是一直拖着),修改主题主要就是弄清楚主题的布局文件在哪里修改就差不多了,剩下的就是调用函数,写逻辑,改样式的问题了;不过中间还是有不少问题,作个记录。 这个是主题文件夹的目录树 demo ├── _con...

Chrome下 font-size 小于 12px 无效

遇到在 chrome 下 font-size 的问题,做个记录。实现方法是使用 css3 的属性 transform:scale() 来对字体进行缩放,注意是对整个元素缩放。下面是一个简单的例子 <html> <head> <meta http-equiv="content-type" content=...

jQuery 锚文本滚动

最近项目需要做一个简单的导航栏,需要在页面滚动时自动置顶在上方,并为其中的链接添加 anchor;实现方法是使用 jQuery,下面是简单实现的代码,做个记录。 <html> <head> <meta http-equiv="content-type" content="text/html; char...

OpenCart 从本地上传到服务器

一般都要进行的几步 导出本地数据库 在本地调试好的目录上传到服务器 导入本地数据库 (在导入前可能需要把 sql 文件里有关 localhost 的信息替换成 server 的,还有数据库名称) 修改 config 文件 (根目录与 admin 目录) <?php // HTTP // 直接填写网站地址就行 define('HTT...

CSS3 笔记-动画效果

CSS3 知识匮乏,做个记录,感谢原作者 效果一:360 度旋转,修改 rotate (旋转度数) * { transition:All 0.4s ease-in-out; -webkit-transition:All 0.4s ease-in-out; -moz-transition:All 0.4s ease-in-out; -o-trans...

CSS 背景图片铺满

想要把一张图片作为背景图,由于图片太大,总是不能完全显示,只能显示一部分,google 之,原来是 background-size 没设置好,做个记录。 body { background: url("bg.jpg") no-repeat; background-size: 100% 100%; } size 用来获取背...

WordPress 添加自定义 Sidebar

找到一篇很好的学习教程,感谢作者,具体看这里。PS:貌似需要 FQ 才能访问-_-! 首先在 functions.php 文件下注册 sidebar if ( function_exists('register_sidebar') ) { register_sidebar(array( 'name' => &#...

两个 HTML 页面之间传值

项目中有个需求是在两个 html 页面间进行传值,javascript 可以很简单的实现。 a.html <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <ti...

WordPress 获取文章中的图片

获取 post 中的特色图片 <?php $thumbnail_image_url = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail'); echo $thumbnail_image_url[0]; // OR $thumbnai...

DIV 下图片自动按比例缩放

在固定 DIV 的宽和高后,DIV 里面的图片能够自动按比例进行缩放,并实现左右上下居中,图片大小不一定;一开始想到的是使用 javascript 解决。 img.onload = function() { //DIV 最大宽和高 var maxWidth = 500; var maxHeight = 500; //取得初始化图片大小 var i...

VIM 使用笔记

多个文件中查找 :vim[grep][!] /{pattern}/[g][j] {file} 例子: :vimgrep /class/ *.php #当前文件夹下 (不包括子文件夹) 所有 php 文件中搜索 class 字符串 :vimgrep /class/ */**/* #当前文件夹下 (包括所有子文件夹) 所有文件 :copen #查看 统...