技术坑
LNMP安装fileinfo扩展
mtsym 发表于2020-01-21 浏览4258 评论0
之前的项目把框架Slim从3升级到了4,需要fileinfo扩展的支持,操作如下
1. 官网下载php对应版本源码解压
2. 进入源码ext/fileinfo目录
3. 执行`/usr/local/php/bin/phpize`(自己对应的phpize版本)
4. 执行`./configure --with-php-config=/usr/local/php/bin/php-config`
5. 执行`make && make install`<!--autointro-->技术坑
zblog远程发布文章API改进实现兼容wordpress xmlrpc
mtsym 发表于2019-05-04 浏览7673 评论0
最近有个zblog自动发布文章需求,大致看了一下,发现并没有wordpress方便,特别是我还有对接python的要求,大概有几种办法
1. 直接读取/zb_users/c_option.php,暴力写入数据
2. 直接开发一个插件使用zblog内部代码接口
3. 使用zblog本身的xmlrpc第一种方案为了安全还得自己写鉴权,第二种方案通用性强但是需要对zblog比较了解,第三种方案最方便了,python可以直接使用xmlrpc库对接,由于我已经有wordpress自动发布的python脚本,我想复用这个,因此对zblog的xmlrpc进行改造。
兼容wordpress xmlrpc
找到zb_system/xml-rpc/index.php文件,先在入口判断出增加’mt.supportedMethods’支持,再增加’wp.newPost’支持
case 'mt.supportedMethods':
$strXML = '<methodResponse><params><param><value><array><data>$%#1#%$</data></array></value></param></params></methodResponse>';
$strAll = '<value><string>wp.newPost</string></value>';
echo str_replace("$%#1#%$", $strAll, $strXML);
break;
case 'wp.newPost':
$username = (string)$xml->params->param[1]->value->string;
$password = (string)$xml->params->param[2]->value->string;
xmlrpc_Verify($username, $password);
if ($zbp->CheckRights('ArticlePst')) {
xmlrpc_newPost_as_wp($xml->params->param[3]->value->struct->asXML());
} else {
xmlrpc_ShowError(6, __FILE__, __LINE__);
}
break;转化wordpress xmlrpc支持函数如下
```
function xmlrpc_newPost_as_wp($xmlstring)
{
global $zbp;
$xml = simplexml_load_string($xmlstring);
if ($xml) {
$post = array();
foreach ($xml->children() as $x) {
$a = (string)$x->name;
if ($a == 'terms_names') {
$struct = $x->value->struct;
foreach ($struct->children() as $y) {
$a = (string)$y->name;
$b = $y->value->children()->asXML();
$b = str_replace(array('<array>', '</array>', '<data>', '</data>', '<string>', '</string>', '<value>', '</value>', PHP_EOL), array(''), $b);
$post[$a] = $b;
}
} else {
$b = $x->value->children();
$b = str_replace(array('<array>', '</array>', '<data>', '</data>', '<string>', '</string>'), array(''), $b);
$post[$a] = $b;
}
}
$_POST['ID'] = 0;
$_POST['Title'] = $post['post_title'];
if (strcmp('publish', $post['post_status']) != 0) {
$_POST['Status'] = 0;
} else {
$_POST['Status'] = 1;
}
if (isset($post['mt_basename'])) {
$_POST['Alias'] = $post['mt_basename'];
}
if (isset($post['dateCreated'])) {
date_default_timezone_set('GMT');
$_POST['PostTime'] = strtotime($post['dateCreated']);
date_default_timezone_set($zbp->option['ZC_TIME_ZONE_NAME']);
$_POST['PostTime'] = date('c', $_POST['PostTime']);
}
if (isset($post['wp_author_id'])) {
$_POST['AuthorID'] = $post['wp_author_id'];
} else {
$_POST['AuthorID'] = $zbp->user->ID;
}
if (isset($post['post_tag'])) {
$_POST['Tag'] = $post['post_tag'];
}
if (isset($post['category'])) {
$post['category'] = str_replace('<value>', '', $post['category']);
$catename = trim(GetValueInArray(explode('</value>', $post['category']), 0));
$_POST['CateID'] = $zbp->GetCategoryByName($catename)->ID;
}
if (isset($post['mt_excerpt'])) {
$_POST['Intro'] = $post['mt_excerpt'];
}
if (isset($post['mt_text_more']) || isset($post['post_content'])) {
if (isset($post['mt_text_more'])) {
if ($post['mt_text_more'] != '') {
$_POST['Content'] = $post['post_content'] . '技术坑
ZBLOG国际化插件和主题增加英语支持
mtsym 发表于2019-01-22 浏览5105 评论0
虽然wordpress和zblog都用了十几年,也写过一些小的插件,但是我还是更喜欢zblog一些,对于一个没有系统学过php的人来说,就是凭着其他语言的经验回首掏手里干,wordpress虽然强大,但是相对比较复杂,相对来说zblog就比较直接一点,改起来比较轻松。
如果你需要做外语网站,虽然进入网站设置--˃全局设置--˃网站语言选择了英语,但是用的插件和主题都是中文的,怎么办?这需要自己自己增加多语言配置,具体操作官方已经提供了文档LoadLanguage 语言包载入
技术坑
ThinkPHP从2.1升级到3.1.3并支持php7
mtsym 发表于2018-12-31 浏览6009 评论0
一个做站的朋友弄了一套叫飞飞影视导航的cms系统部署有点问题,让我帮忙看一下,这个系统是基于ThinkPHP 2.1开发的,对ThinkPHP也不是太了解,不过这个也太老了,估计注入漏洞一大堆,我去ThinkPHP官网转了一圈,现在都是5.0版本的了,支持php7需要3.2以上才行,粗略的看了一下3.1升级到3.2,架构改动很大,如果要改的话工作量很大,所以可行的方案就是从2.1升级到3.1.3,再对3.1.3进行改动支持php7,5.0就不考虑了。
从T
软件
ptcms修复https访问问题
mtsym 发表于2018-12-21 浏览5654 评论0
一朋友用了这个系统,说https链接无法访问,我看了一下源码,发现是ptcms/core/filter.php下的regex函数导致的,正则表达式没有对https做处理,找到行
'url' =˃ '/^http:\/\/[a-zA-Z0-9]+\.[a-zA-Z0-9]+[\/=\?%\-&_~`@\[\]\':+!]*([^\"\"])*$/'
加上https就可以了
'url' =˃ '/^http|https:\/\/[a-zA-<!--autointro-->技术坑
zblog主题添加右侧栏
mtsym 发表于2018-08-17 浏览5412 评论0
现在用的这套主题是plain,当初搭建zblog时在应用中心随便点的,没注意到已经是三年前的主题,不支持sidbar,用了有一段时间了,不想折腾,今天花了点时间给加上了,zblog的结构很清晰,简单步骤如下
- 编辑css文件,给右侧留出布局空间
-
在index.php和single.php增加右侧栏布局,在模块管理里面可以看到有5个侧栏,在模板里面使用
{template:sidebar} {template:sideb<!--autointro-->