二次开发

二次开发

wecenter中获取sessionid

WeCenter 程序三叔 发表了文章 • 0 个评论 • 181 次浏览 • 2020-06-07 11:16 • 来自相关话题

直接使用session_id();即可获取

直接使用

session_id();

即可获取

B站(bilibili)视频地址转成播放器的插件上线

WeCenter 程序三叔 发表了文章 • 5 个评论 • 396 次浏览 • 2020-05-09 21:28 • 来自相关话题

本来打算收费10元的,后来觉得算了,也没几行代码 就放出来了。  ...查看全部

本来打算收费10元的,后来觉得算了,也没几行代码 就放出来了。

 

效果如上图,本来这文章里只有一个B站播放地址。我的插件会把地址下面渲染出视频。

但是有锚点的才可以,也就是 代码里地址 必须是 有 a标签包含的才可以。这做法的原因是考虑到有的人不希望所有的地址被解析成视频。

插件地址:

http://market.wecenter.com/index.php?m=content&c=index&a=show&catid=6&id=65 

在数据库里修改缓存类型

WeCenter 程序三叔 发表了文章 • 0 个评论 • 191 次浏览 • 2020-04-20 21:19 • 来自相关话题

有的时候大家会用到这个。 比如你之前用的memcache或redis,但是哪天这个缓存系统挂了。你再想切回File就会报错。 ...查看全部

有的时候大家会用到这个。 比如你之前用的memcache或redis,但是哪天这个缓存系统挂了。你再想切回File就会报错。

image.png


那就需要手动去数据库修改类型了。

image.png


这个我是在navcat里操作的。

点击筛选-》varname 包含 cache 记住了 是包含。

然后把value里的 改成 s:4:"file";

这里的s理论上是4,就是后面的字符串长度了。但是因为之前我是memcached 所以是9. 我偷懒没改成4

如果是memcached 那就是 s:9:"memcached";

如果是redis那就是 s:5:"redis";



插件需求征集!说说你需要什么插件,我帮你免费开发

创意与设计gezun 回复了问题 • 9 人关注 • 8 个回复 • 563 次浏览 • 2020-02-24 08:36 • 来自相关话题

测试

创意与设计三叔 发表了文章 • 0 个评论 • 194 次浏览 • 2020-01-30 12:42 • 来自相关话题

忽略这个问题吧。

忽略这个问题吧。

在文章页中增加如下代码可以解析网易云音乐

插件三叔 发表了文章 • 1 个评论 • 450 次浏览 • 2020-01-10 14:56 • 来自相关话题

var mediaRegex = [{"regex": ...查看全部
var mediaRegex = [{"regex":"","controller":""},
{"regex":"music.163.com\/#\/song\\\?id=(\\\d+)","controll":"<iframe frameborder=\"no\" border=\"0\" marginwidth=\"0\" marginheight=\"0\" width=330 height=86 src=\"//music.163.com/outchain/player?type=2&id={}&auto=1&height=66\"></iframe>"}];
jQuery(function(){
$(".aw-question-detail").find("a").each(function(){
var url = $(this).attr("href");
for(var i=0;i<mediaRegex.length;i++){
var mr = mediaRegex[i];
if(mr.regex=="")continue;
//debugger;
var result;
if((result = new RegExp(mr.regex,"g").exec(url)) != null){
var c = mr.controll.replace("{}",result[1]);
//debugger;
$(this).after("

"+c+"

");
}
}
})
})

上面的代码请放到 /views/主题/article/index.tpl.htm的最下面即可。

效果如:

image.png 

实际效果:

http://www.sanshu.cn/a/45.html 

 


关于版本更新,提两个小想法,供官方参考

WeCenter 程序张三疯子 回复了问题 • 4 人关注 • 4 个回复 • 616 次浏览 • 2020-01-08 21:41 • 来自相关话题

疯子设计:访问链接的流量互带

建议三叔 发表了文章 • 0 个评论 • 257 次浏览 • 2020-01-02 17:52 • 来自相关话题

这是一个想了很久,从效率和安全方面做出的思考。大概思路:    1. 记录http请求中的referer(来路网址)    2. 去 ...查看全部

这是一个想了很久,从效率和安全方面做出的思考。

大概思路:

    1. 记录http请求中的referer(来路网址)

    2. 去除搜索引擎和本站的地址(这些一般非常多还没啥用)

    3. 在一个展现页面中展现这块数据

    这个思路的目的是,A网页放问我的网站后。就会在我的来路展现页里被罗列出来,这样我的部分用户也会引流到A网页。这样实现双向引流。

    如果权重高了,想出现在我的展现页里的网站都会在自己的网站或文章里出现我的链接,这样无疑就会增加我的网站外链。外链越多、访问量越大、权重越高。实现一个良性循环。

    那设想有了,下面就是设计下如何高效和安全的去操作。

    原本设计是这样的:

    image.png

    但是我觉得:按照某些恶意程序员的程序员的尿性,他肯定会将一堆色情、赌博的网址作为referer请求你的网址,这样就会造成你的展示页里出现很多非法网站。这是很可怕的。因为工信部会来查封你的网站。

    所以:我决定增加一个域名备案查询的功能。正好把之前开发的网站备案查询的功能对接起来。

    image.png

    所以步骤中多了一个备案查询功能。

    但是查询备案是一个非常耗时间的功能,这样会影响网页的打开速度,而且没必要每次都查询。

    所以,我继续修改我的脑回路。

    image.png

    恩,这样安全系数应该很高了。下面就是如何更好的优化程序。

    我觉得,展示网页的时候,还是不要做过多的操作好。所以我决定,查看网页的时候还是按照第一个脑图来。

下面是最终方案,有两套脑图:1 访问时候的设计 2. 后台异步执行的方案

    image.png

    访问网页的时候 只做referer插入操作,当然,还是要查询下数据库的,如果存在这个referer就忽略了。这里会在memcache中增加link的一个list来减少数据库的读写。

    然后启动另一个进程或线程做如下操作,在做这步之前,我决定在referer表里增加一个checked字段,来做域名备案查询标识,防止比如google这类没有备案的域名重复的查询,这个没啥意思。

    所以追加下面的脑图配合上面的脑图一起使用。

    image.png

    作者:三叔

    文章出处:http://www.sanshu.cn/a/28.html

    如果从上面链接点进去,1分钟内就会在 http://www.sanshu.cn/referer/ 看到这篇wecenter的连接

想用这程序做视频,大家有案例或模板吗

创意与设计君笑尘 回复了问题 • 2 人关注 • 1 个回复 • 318 次浏览 • 2019-12-17 16:51 • 来自相关话题

wecenter改的PJAX效果(半成品)

建议三叔 发表了文章 • 3 个评论 • 436 次浏览 • 2019-12-10 13:36 • 来自相关话题

已经改回非PJAXPJAX说白了就是通过技术手段进行数据无刷新加载。旨在避免js重复加载。我改了,但是因为对PJAX还不太熟悉。所以无法做到全站PJAX ...查看全部

已经改回非PJAX

PJAX说白了就是通过技术手段进行数据无刷新加载。旨在避免js重复加载。

我改了,但是因为对PJAX还不太熟悉。所以无法做到全站PJAX


目前这三处可以实现无刷新加载。

想了解的可以试试。

http://sanshu.cn/a/25.html

需要改法,我也可以公布,虽然目前只是半成品。 

条新动态, 点击查看
飞想翼

飞想翼 回答了问题 • 2013-05-19 10:21 • 19 个回复 不感兴趣

wecenter核心代码注释,持续更新中

赞同来自:

支持,希望能坚持做下去!
支持,希望能坚持做下去!
其实很简单,就是你找的人不会WC的二次开发,学习成本高,自然问你要价就高咯..相反,他们熟悉WP,自然喜欢从WP入手..从内行的角度看待你这个问题,很简单,你从WP入手 几乎等于从零开始,内行都知道WP其实根本没有什么功能..既然如此,何不找个好的开发团队,用... 显示全部 »
其实很简单,就是你找的人不会WC的二次开发,学习成本高,自然问你要价就高咯..相反,他们熟悉WP,自然喜欢从WP入手..从内行的角度看待你这个问题,很简单,你从WP入手 几乎等于从零开始,内行都知道WP其实根本没有什么功能..既然如此,何不找个好的开发团队,用框架从零开始开发呢,还有自主版权呢.以后修改,升级,也方面不是
a279257725

a279257725 回答了问题 • 2015-10-22 09:36 • 23 个回复 不感兴趣

简单的文章打赏功能,来点评下

赞同来自:

很好,支持一下,期待分享
很好,支持一下,期待分享
战国乱

战国乱 回答了问题 • 2016-02-25 16:12 • 8 个回复 不感兴趣

怎么修改首页模板布局?

赞同来自:

首页的模版是\views\default\explore\index.tpl.htm   suprise
首页的模版是\views\default\explore\index.tpl.htm   suprise
这个效果很不错,赶上网易评论了?
这个效果很不错,赶上网易评论了?

手机模板开发修改对应文件基础认识,新手改模板可以看看

WeCenter 程序卓越膜结构 回复了问题 • 8 人关注 • 3 个回复 • 1498 次浏览 • 2018-09-17 17:05 • 来自相关话题

专为WeCenter打造的云端采集器【神箭手】发布2.0版 五大贴心功能打造最流畅的采集体验

WeCenter 程序timilive 回复了问题 • 85 人关注 • 34 个回复 • 14274 次浏览 • 2018-05-22 17:58 • 来自相关话题

【WeCenter二次开发】不同分类的效果

小明明 发表了文章 • 8 个评论 • 5011 次浏览 • 2015-10-30 07:32 • 来自相关话题

【更正】 因为之前发布的是问题,不能编辑,在这更正。 第二篇,前端新建文件名,应改为新建 views/default/block/content_nav.tpl.htm。    【后台 分类设置】 ...查看全部
【更正】
因为之前发布的是问题,不能编辑,在这更正。
第二篇,前端新建文件名,应改为新建 views/default/block/content_nav.tpl.htm。
 
 【后台 分类设置】


搜狗截图15年10月30日0728_1.png


 
【文章页面】


QQ截图20151030073405.png


 
【问题页面】


QQ截图20151030073324.png



【活动页面】


QQ截图20151030073431.png



修改过程:
http://wenda.wecenter.com/question/27787
http://wenda.wecenter.com/question/27788
 

发福利了。。。小白实现问题置顶功能。。。

Mader 回复了问题 • 63 人关注 • 15 个回复 • 5387 次浏览 • 2016-01-11 14:29 • 来自相关话题

【WeCenter二次开发】你至少要知道的那些事

小明明 发表了文章 • 18 个评论 • 7196 次浏览 • 2015-06-24 21:33 • 来自相关话题

引言: 我仅仅是一个编程爱好者,遇到WeCenter的原因是想做个高考咨询的问答站。自己对PHP也只是略懂皮毛,更别说框架了。看了三天的ThinkPHP文档不太好消化。是WeCenter让我更好的理解了M ...查看全部


引言:
我仅仅是一个编程爱好者,遇到WeCenter的原因是想做个高考咨询的问答站。自己对PHP也只是略懂皮毛,更别说框架了。看了三天的ThinkPHP文档不太好消化。是WeCenter让我更好的理解了MVC的含义。


以下内容仅适合刚刚接触WeCenter准备二次开发的新同学,如果您是大神可以就此止步。如有说法不准确,请包涵,以下内容仅为个人理解。
=====================
 
 
1:框架结构有三层它们的作用及它们对应的文件夹如下:
控制器(程序流程,了解用户想要什么)--》APP
模型(数据库访问,提供用户需要的原材料)--》Model
视图(展示出来,也就是最后成品,由控制器放到用户面前)--》View
 
2:Wecenter的框架流程是什么样的?
控制器也就是app文件夹下的文件夹及文件,例如访问http://example.com/?/account/就是执行app/account/main.php 中 index_action 方法~再例如访问http://example.com/?/account/login/就是执行上述文件中login_action这个方法。
这(控制器函数/方法)里面会调用模型,即执行Model文件夹下的相关文件,访问数据库获得数据。例如$this->model('account')->get_user_info_by_uid($uid);就是在调用account这个用户模型,具体就是model/account.php里的相关方法~
调用完数据,要做的事情就是把数据展示出来。在控制器方法中一般都会以这样的语句结束:TPL::output("XXX");它所做的事情就是调用视图——我们通常所说的模板。
 
3:在调用模型之后输出视图,那么模型是怎么把数据传给视图的呢?
请注意这条语句:TPL::assign('AAA', 'BBB');,意思就是把BBB包装成AAA;BBB是由模型获得的数据,AAA是在视图展示的形式,在TPL::output("XXX");输出的模板中可通过<?php echo $this->AAA;?>来输出BBB这个值。
 
 Tip:研究BBB来充分发挥AAA的价值:
上文说到“把BBB包装成AAA”,其实AAA和BBB完全可以理解为等价。
前些日子活跃了一阵子,看到一个用户问,怎么显示加入时间。其实加入时间即注册时间,get_user_info_by_uid()返回的应该是用户信息绝大多数字段,或者就是用户表全部字段,我没有一一比较。同时还会有微信消息设置信息。我通过视图<?php print_r($this->user);//打印数组?>发现有reg_time这个字段的值,只要把时间戳转化成易理解的日期即可。
所以,在开发初期可以多打印几个数组,掌握成员组成,说不准什么时候就可以用到。默认模板只是把认为有必要展示的内容展示出来了,你想展示其他的,研究BBB的内容。


编后语:
第一次打这么多字,还没有插图。向全部读完的童鞋致敬!愿大家开发出自己的特色产品,愿WeCenter越来越好~


WeCenter 二次开发基础说明(模块开发)

jat 发表了文章 • 20 个评论 • 12538 次浏览 • 2015-02-05 12:23 • 来自相关话题

WeCenter组件,活动模块,工单模块等都是一个独立的模块,升级覆盖不影响功能使用,可以理解成一个需要执行sql的插件。  一. 组件文件目录结构说明 ...查看全部
WeCenter组件,活动模块,工单模块等都是一个独立的模块,升级覆盖不影响功能使用,可以理解成一个需要执行sql的插件。
 一. 组件文件目录结构说明
一般来说,一个模块需要下面几个文件,假设模块名为AA,则


app/AA – 应用目录
models/AA.php – 模型目录
static/css/default/AA.css – 静态文件
views/default/AA – 模板目录



二. URL 路由
WeCenter 有一个解析能力强大的 URL 路由,模块AA的访问设置如下
1. 动作访问:


/模块名/控制器/动作/ID
ID 为 id 查询, 例: 模块名/login/123, 则在 login 控制器中 $_GET['id'] 的值为 123
(*) 如果使用 /模块名/控制器/动作/ID 格式 Query string 的使用可以参照 兼容性的支持
(*) 如果动作在 main 控制器中可以省略, 例: 模块名/main/login/ 等同于 account/login/
(*) 如果动作名为 index 可以省略,  例: 模块名/login/index/ 等同于 account/login/



2. Query string
WeCenter 的查询字符串为使用 __ 分隔参数, 使用 – 为参数赋值, 在程序中直接使用 $_GET 取出内容


常规的: account/login/?return_url=1&callback=2
WeCenter 的: account/login/return_url-1__callback-2
(*) 在程序中输出 URL 请使用 get_js_url 函数, 因为这样会兼容 Rewrite 是否开启两种情况



3. 兼容性的支持
下面的几种 URL 形式在程序中都是被支持的:


http://domian/index.php?/question/id-320__column-log__source-doc
http://domian/index.php?/question/320?column=log&source=doc
http://domian/index.php?/question/?id=320&column=log&source=doc
http://domian/index.php?/question/320?column-log__source-doc
http://domian/index.php?/question/320&column-log__source-doc



三. 模板命名规则
程序中所有模板的存放规则为 模块/控制器/动作, 如果控制器为 main 则省略


如 account/main/login/ 对应的模板为 views/模板集/account/login.tpl.htm
如 account/setting/profile/ 对应的模板为 views/模板集/account/setting/profile.tpl.htm


 
四. 自动引入机制
WeCenter 类库, Model 的使用都是不需要事先引入文件的, 这使得在编程过程中变得方便快捷, 也避免了类库重复实例化的问题, 但是使用自动引入机制需要遵循下面的规则.
(*) 所有自动引入的类库都不需要事先实例化, 直接使用即可.
1. Model


放在 model 目录下, 文件名: name.inc.php
文件中需要有继承 AWS_MODEL 的 name_class
(*) 在程序中使用方法: $this->model('name')->action();
(*) 可用范围: CONTROLLER, Model



2. System 类库


放在 system 目录之下, 类名相对于 system 目录, 将 / 换成 _
例: Zend_Mail
路径: system/Zend/Mail.php
类名: Zend_Mail
(*) 在程序中使用方法: new, 静态调用, load_class('class_name');
(*) 可用范围: 任意, 不需要带参数实例化建议使用 load_class



3. 配置文件


放在 system/config 目录之下, 文件内容为一个 $config 数组, 命名为 配置名.php
(*) 在程序中使用方法: AWS_APP::config()->get('配置名')->数组下标
(*) 可用范围: 任意, 不需要带参数实例化建议使用 load_class
如需添加后台菜单,请在 system/config 目录下新建 admin_menu.extension.php 文件,格式与 admin_menu.php 一致。



五. 模板机制

WeCenter 的模板采用继承机制, 系统的 default 为主模板, 用户的自定义模板只需要更改很少的文件即可实现程序界面的定制.继承机制原理:


当管理员设定了一个 newstyle 模板, 用户访问首页

系统开始查找 views/newstyle/home/index.tpl.htm

找到相应文件                                               找不到文件
⬇                                                                   ⬇
读取内容并
解析后显示                ⬅        读取 views/default/home/index.tpl.htm



建立模板集的方法:
1. 在 views 下面建立模板集目录
2. 在 static/css/ 下建立与模板集相同的目录, 我们建议从 static/css/default/ 拷贝一份内容到新建的模板集中, 然后开始修改工作.

六. 常用开发指导
JavaScript:
我们使用 jQuery 作为主要 framework, 载入的插件有:
jQuery Form ( http://malsup.com/jquery/form/ )
AJAX Upload ( http://valums.com/ajax-upload/ )
Valums file Uploader (修改过)
jQuery.ScrollTo

(*) 在 Javascript 中判断用户是否登录判断全局变量 G_USER_ID 是否大于 0 即可
(*) 全局变量在 header 模板中
(*) 所有 JS 请求 URL 需要加上 G_BASE_URL 前缀
(*) 全局 ajax 列表函数使用 bp_load_more

PHP:
关于 Zend Framwork 类库的使用方法请参考官方文档
(*) 在控制器中判断用户是否登录判断 $this->user_id 是否大于 0 即可
(*) 控制器与模板中始终可用 $this->user_id 和 $this->user_info
(*) 控制器与 Model 中禁止使用构造函数, 可以用 setup() 函数替代
(*) 程序已经提供了两个中文处理函数 cjk_substr 和 cjk_strlen

Access Rule:
public function get_access_rule()
{
// 规则类型
// white: actions 里的 action 全部用户可见, 其余 action 需要登录
// black: actions 里的 action 需要登录, 其余 action 全部用户可见
$rule_action["rule_type"] = 'white';
$rule_action["actions"] = array(
'check_username',
'check_email',
'register_process',
'login_process',
'register_agreement',
'send_valid_mail',
'valid_email_active',
'request_find_password',
'find_password_modify'
);
return $rule_action;
}
(*) 控制器中不加此函数, 则所有 action 必需登录可见

模板:
(*) 在模板可以使用 PHP 代码, 全部静态类与 function, 但是不能使用 Model
(*) 模板中 $this-> 中的内容是全局通用变量, 可以在模板中引入的模板使用, 模板内部产生的变量则不能
(*) TPL::output 方法第二个参数为 false 时, 内容会返回给变量不会输出, 可以利用此方法做 JS 调用或者代码重用

注册页面和登陆页面弹出框处理

夏洛特 回复了问题 • 34 人关注 • 4 个回复 • 4086 次浏览 • 2014-09-17 19:54 • 来自相关话题

分享一个自定义WC首页的方法(修改默认首页)

Alu 发表了文章 • 18 个评论 • 11170 次浏览 • 2014-04-11 14:04 • 来自相关话题

有人问我,如果自定义自己写的应用为默认首页如何设置,我不再一一回了,在这里写出来大家互相学习。 在:system\core\uri.php有个默认控制器,修改这个参数 var $default_vars = array( ...查看全部
有人问我,如果自定义自己写的应用为默认首页如何设置,我不再一一回了,在这里写出来大家互相学习。

在:system\core\uri.php有个默认控制器,修改这个参数
var $default_vars = array(
'app_dir' => 'home', //应用名
'controller' => 'main', //文件名
'action' => 'index'//执行的程序
);

【二次开发教程】三、友情链接开发,后台处理页面,附插件下载。

___在路上____ 回复了问题 • 74 人关注 • 16 个回复 • 9021 次浏览 • 2014-12-07 22:09 • 来自相关话题

【二次开发教程】二、友情链接开发,前台申请页面。

buffonly 回复了问题 • 55 人关注 • 11 个回复 • 5548 次浏览 • 2014-04-24 14:45 • 来自相关话题

插件需求征集!说说你需要什么插件,我帮你免费开发

回复

创意与设计gezun 回复了问题 • 9 人关注 • 8 个回复 • 563 次浏览 • 2020-02-24 08:36 • 来自相关话题

关于版本更新,提两个小想法,供官方参考

回复

WeCenter 程序张三疯子 回复了问题 • 4 人关注 • 4 个回复 • 616 次浏览 • 2020-01-08 21:41 • 来自相关话题

出售wecenter中嵌入bilibili播放器代码

回复

WeCenter 程序三叔 回复了问题 • 1 人关注 • 1 个回复 • 421 次浏览 • 2019-12-09 14:33 • 来自相关话题

会PHP的看过来,WC这个文件的这段代码,是不是多余的?

回复

WeCenter 程序技术-安辰 回复了问题 • 1 人关注 • 1 个回复 • 351 次浏览 • 2019-12-06 19:10 • 来自相关话题

发现wecenter后端有个很奇怪的问题,懂技术的都来看看。。。。。

回复

WeCenter 程序bennyyao 发起了问题 • 2 人关注 • 0 个回复 • 865 次浏览 • 2019-04-18 12:49 • 来自相关话题

请问,现在的系统,对发布悬赏的判断,仅仅是有没有category参数吗? 有点困惑。。。

回复

建站运营fanta 回复了问题 • 4 人关注 • 1 个回复 • 839 次浏览 • 2019-04-08 13:31 • 来自相关话题

需要一个二开思路

回复

创意与设计marco_hsu 回复了问题 • 4 人关注 • 3 个回复 • 947 次浏览 • 2019-01-17 16:55 • 来自相关话题

关于wecenter上传图片的压缩质量问题,疑似BUG !

回复

WeCenter 程序 回复了问题 • 8 人关注 • 4 个回复 • 1343 次浏览 • 2019-01-03 09:49 • 来自相关话题

如果增加了字段、修改过模板,升级怎么避免被覆盖?

回复

建站运营kaiheitv 回复了问题 • 6 人关注 • 4 个回复 • 1057 次浏览 • 2018-12-25 12:46 • 来自相关话题

bootstrap自帶都有幻燈片功能官方首頁又去加載一個JS

回复

建议marco_hsu 回复了问题 • 5 人关注 • 4 个回复 • 1198 次浏览 • 2018-12-13 11:39 • 来自相关话题

wecenter中获取sessionid

WeCenter 程序三叔 发表了文章 • 0 个评论 • 181 次浏览 • 2020-06-07 11:16 • 来自相关话题

直接使用session_id();即可获取

直接使用

session_id();

即可获取

B站(bilibili)视频地址转成播放器的插件上线

WeCenter 程序三叔 发表了文章 • 5 个评论 • 396 次浏览 • 2020-05-09 21:28 • 来自相关话题

本来打算收费10元的,后来觉得算了,也没几行代码 就放出来了。  ...查看全部

本来打算收费10元的,后来觉得算了,也没几行代码 就放出来了。

 

效果如上图,本来这文章里只有一个B站播放地址。我的插件会把地址下面渲染出视频。

但是有锚点的才可以,也就是 代码里地址 必须是 有 a标签包含的才可以。这做法的原因是考虑到有的人不希望所有的地址被解析成视频。

插件地址:

http://market.wecenter.com/index.php?m=content&c=index&a=show&catid=6&id=65 

在数据库里修改缓存类型

WeCenter 程序三叔 发表了文章 • 0 个评论 • 191 次浏览 • 2020-04-20 21:19 • 来自相关话题

有的时候大家会用到这个。 比如你之前用的memcache或redis,但是哪天这个缓存系统挂了。你再想切回File就会报错。 ...查看全部

有的时候大家会用到这个。 比如你之前用的memcache或redis,但是哪天这个缓存系统挂了。你再想切回File就会报错。

image.png


那就需要手动去数据库修改类型了。

image.png


这个我是在navcat里操作的。

点击筛选-》varname 包含 cache 记住了 是包含。

然后把value里的 改成 s:4:"file";

这里的s理论上是4,就是后面的字符串长度了。但是因为之前我是memcached 所以是9. 我偷懒没改成4

如果是memcached 那就是 s:9:"memcached";

如果是redis那就是 s:5:"redis";



测试

创意与设计三叔 发表了文章 • 0 个评论 • 194 次浏览 • 2020-01-30 12:42 • 来自相关话题

忽略这个问题吧。

忽略这个问题吧。

在文章页中增加如下代码可以解析网易云音乐

插件三叔 发表了文章 • 1 个评论 • 450 次浏览 • 2020-01-10 14:56 • 来自相关话题

var mediaRegex = [{"regex": ...查看全部
var mediaRegex = [{"regex":"","controller":""},
{"regex":"music.163.com\/#\/song\\\?id=(\\\d+)","controll":"<iframe frameborder=\"no\" border=\"0\" marginwidth=\"0\" marginheight=\"0\" width=330 height=86 src=\"//music.163.com/outchain/player?type=2&id={}&auto=1&height=66\"></iframe>"}];
jQuery(function(){
$(".aw-question-detail").find("a").each(function(){
var url = $(this).attr("href");
for(var i=0;i<mediaRegex.length;i++){
var mr = mediaRegex[i];
if(mr.regex=="")continue;
//debugger;
var result;
if((result = new RegExp(mr.regex,"g").exec(url)) != null){
var c = mr.controll.replace("{}",result[1]);
//debugger;
$(this).after("

"+c+"

");
}
}
})
})

上面的代码请放到 /views/主题/article/index.tpl.htm的最下面即可。

效果如:

image.png 

实际效果:

http://www.sanshu.cn/a/45.html 

 


疯子设计:访问链接的流量互带

建议三叔 发表了文章 • 0 个评论 • 257 次浏览 • 2020-01-02 17:52 • 来自相关话题

这是一个想了很久,从效率和安全方面做出的思考。大概思路:    1. 记录http请求中的referer(来路网址)    2. 去 ...查看全部

这是一个想了很久,从效率和安全方面做出的思考。

大概思路:

    1. 记录http请求中的referer(来路网址)

    2. 去除搜索引擎和本站的地址(这些一般非常多还没啥用)

    3. 在一个展现页面中展现这块数据

    这个思路的目的是,A网页放问我的网站后。就会在我的来路展现页里被罗列出来,这样我的部分用户也会引流到A网页。这样实现双向引流。

    如果权重高了,想出现在我的展现页里的网站都会在自己的网站或文章里出现我的链接,这样无疑就会增加我的网站外链。外链越多、访问量越大、权重越高。实现一个良性循环。

    那设想有了,下面就是设计下如何高效和安全的去操作。

    原本设计是这样的:

    image.png

    但是我觉得:按照某些恶意程序员的程序员的尿性,他肯定会将一堆色情、赌博的网址作为referer请求你的网址,这样就会造成你的展示页里出现很多非法网站。这是很可怕的。因为工信部会来查封你的网站。

    所以:我决定增加一个域名备案查询的功能。正好把之前开发的网站备案查询的功能对接起来。

    image.png

    所以步骤中多了一个备案查询功能。

    但是查询备案是一个非常耗时间的功能,这样会影响网页的打开速度,而且没必要每次都查询。

    所以,我继续修改我的脑回路。

    image.png

    恩,这样安全系数应该很高了。下面就是如何更好的优化程序。

    我觉得,展示网页的时候,还是不要做过多的操作好。所以我决定,查看网页的时候还是按照第一个脑图来。

下面是最终方案,有两套脑图:1 访问时候的设计 2. 后台异步执行的方案

    image.png

    访问网页的时候 只做referer插入操作,当然,还是要查询下数据库的,如果存在这个referer就忽略了。这里会在memcache中增加link的一个list来减少数据库的读写。

    然后启动另一个进程或线程做如下操作,在做这步之前,我决定在referer表里增加一个checked字段,来做域名备案查询标识,防止比如google这类没有备案的域名重复的查询,这个没啥意思。

    所以追加下面的脑图配合上面的脑图一起使用。

    image.png

    作者:三叔

    文章出处:http://www.sanshu.cn/a/28.html

    如果从上面链接点进去,1分钟内就会在 http://www.sanshu.cn/referer/ 看到这篇wecenter的连接

wecenter改的PJAX效果(半成品)

建议三叔 发表了文章 • 3 个评论 • 436 次浏览 • 2019-12-10 13:36 • 来自相关话题

已经改回非PJAXPJAX说白了就是通过技术手段进行数据无刷新加载。旨在避免js重复加载。我改了,但是因为对PJAX还不太熟悉。所以无法做到全站PJAX ...查看全部

已经改回非PJAX

PJAX说白了就是通过技术手段进行数据无刷新加载。旨在避免js重复加载。

我改了,但是因为对PJAX还不太熟悉。所以无法做到全站PJAX


目前这三处可以实现无刷新加载。

想了解的可以试试。

http://sanshu.cn/a/25.html

需要改法,我也可以公布,虽然目前只是半成品。 

wecenter生成静态化代码

建站运营三叔 发表了文章 • 0 个评论 • 408 次浏览 • 2019-12-10 12:18 • 来自相关话题

说道网站优化,提高网站速度,需要从很多地方出发。比如wecenter,它的查询太多,查询出来的字段也非常多,这其实是很占效率的。但是我们没有办法改变它,毕竟作者这么写了,就算你优化完,升级后还是会回复的。所 ...查看全部

说道网站优化,提高网站速度,需要从很多地方出发。

比如wecenter,它的查询太多,查询出来的字段也非常多,这其实是很占效率的。

但是我们没有办法改变它,毕竟作者这么写了,就算你优化完,升级后还是会回复的。

所以我们要做的就是如何减少数据库查询。

那在编程语言里来说,减少数据库查询,那肯定就是用缓存。

但是并不是所有人的服务器或空间都支持内存缓存的,所以我们这里用纯静态化缓存。这也有助于CDN加速。比如如下图:

image.png  

废话不多说,我们开始教大家如何编写这段代码。

打开 / system/function.app.php

追加方法:

function createHtmlFile($FilePath,$Content){    
// 去掉文件名中的一些非法符号
$FilePath = preg_replace('/[ <>\'\"\r\n\t\(\)]/', '', $FilePath);

$dir_array = explode("/",$FilePath);

//split the FilePath
$max_index = count($dir_array) ;
$i = 0;
$path = $_SERVER['DOCUMENT_ROOT']."/"; // 获取网站的根目录,比如/home/username/

while( $i < $max_index ){
$path .= "/".$dir_array[$i]; // 把子目录一级一级加到路径上
$path = str_replace("//","/",$path); // 如果有//则替换成/

if( $dir_array[$i] == "" ){ // 如果这目录值为空则跳过去,这个判断放在循环的最前面可能更合适
$i ++ ;
continue;
}
// 上面的代码似乎可以写得更精练

if( substr_count($path, '&') ) return true; // 如果路径中有&符号,这不好处理,不管了
if( substr_count($path, '?') ) return true; // 有?也不管了
if( !substr_count($path, '.htm') ){ // 如果不包含.htm,原来传了个路径进来

if( !file_exists( $path ) ){
@mkdir( $path, 0777);
@chmod( $path, 0777 );
}
}
$i ++; // 这个搞完,继续
}

if( is_dir( $path ) ){ // 如果上面折腾完后,发现是个目录,那就是说要创建index.html
$path = $path."/index.html";
}

// 如果html页面没创建完整,那还是不管算了
if ( !strstr( strtolower($Content), '</html>' ) ) return;

//if sql error ignore...
$fp = @fopen( $path , "w+" );
if( $fp ){ // 说明有权限写
@chmod($path, 0666 ) ; // 给文件先赋个权限
@flock($fp ,LOCK_EX ); // 锁定
// write the file。
fwrite( $fp , $Content );// 写静态文件内容
@flock($fp, LOCK_UN); // 解锁
fclose($fp); // 完事
}
}




第二步打开:/app/article/main.php

在index_action方法的最后



TPL::output('article/index');
修改为:

$content = TPL::output('article/index',false);
//这里的/a/ 是指在网站下面生成一个a的文件夹,然后生成静态文件,具体叫啥自己修改
createHtmlFile('/a/'.$article_info['id'].'.html',$content);
echo $content;

原文出自: http://sanshu.cn/a/15.html

基于官方编辑器插件修改的支持水印的插件

插件三叔 发表了文章 • 1 个评论 • 531 次浏览 • 2019-12-08 12:10 • 来自相关话题

只支持ueditor水印。水印图片放在:网站目录/plugins/wc_editor/static/ueditor/ 目录下。取名为 watermark.png   不要乱改名字,否则需要改代码。 ...查看全部

只支持ueditor水印。

水印图片放在:网站目录/plugins/wc_editor/static/ueditor/ 目录下。

取名为 watermark.png   不要乱改名字,否则需要改代码。

效果如:

 


真实文中效果如:http://sanshu.cn/a/13.html

下载插件如:

wc_editor.zip


插件放在 网站目录/plugins/下面

wecenter中开启极验验证

建议三叔 发表了文章 • 1 个评论 • 454 次浏览 • 2019-11-26 12:31 • 来自相关话题

wecenter自3.x后加入了极验验证加大了网站的登录、注册安全,也可以防止机器人灌水。但是不是所有的页面都有开启极验。所以这里提供下开启的方法。开启的方法主要有三步。第一步:加载极验验证的js和css ...查看全部

wecenter自3.x后加入了极验验证加大了网站的登录、注册安全,也可以防止机器人灌水。

但是不是所有的页面都有开启极验。所以这里提供下开启的方法。

开启的方法主要有三步。

第一步:加载极验验证的js和css

<script type="text/javascript" src="http://www.xcat.cn/static/js/slide_captcha/gt.js"></script>
.geetest_radar_tip_content{
position: initial !important;
}




第二步: 脚本加载

<?php if ($this->human_valid) { ?>
<script>
var handlerEmbed = function (captchaObj) {
$('#publish_submit').click(function(){
var validate = captchaObj.getValidate();
if (!validate) {
AWS.alert("请先完成验证");
return false;
} else{
AWS.ajax_post($('#question_form'));
captchaObj.reset(); // 调用该接口进行重置
return false;
}
});
// 将验证码加到id为captcha的元素里,同时会有三个input的值:geetest_challenge, geetest_validate, geetest_seccode
captchaObj.appendTo(".embed-captcha");
captchaObj.onReady(function () {
$(".wait").css('display','none');
});
};

$.ajax({
// 获取id,challenge,success(是否启用failback)
url: G_BASE_URL+ "/account/slide_captcha/?t=" + (new Date()).getTime()+"&client_type='web'", // 加随机数防止缓存
type: "get",
dataType: "json",
success: function (data) {
var dataObj = eval('(' + data.rsm + ')');
// 使用initGeetest接口
// 参数1:配置参数
// 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件
initGeetest({
gt: dataObj.gt,
challenge: dataObj.challenge,
new_captcha: dataObj.new_captcha,
offline: !dataObj.success, // 表示用户后台检测极验服务器是否宕机,一般不需要关注
product: "embed", // 产品形式,包括:float,embed,popup。注意只对PC版验证码有效
width: '100%' // 设置按钮宽度, 与父元素宽度一致
}, handlerEmbed);
}
});
</script>
<?php } ?>


第三步:控件代码

<?php if ($this->human_valid) { ?>
<div class="aw-auth-img clearfix">
<div class="embed-captcha pull-right" style="width: 260px;"></div>
<p class="wait pull-right">正在加载验证码......</p>
<!-- <em class="auth-img pull-right"><img src=""
onclick="this.src = G_BASE_URL + '/account/captcha/' + Math.floor(Math.random() * 10000);"
id="captcha"/></em>
<input class="pull-right form-control" type="text" name="seccode_verify"
placeholder="验证码"/> -->
</div>
<?php } ?>




第五步:后台验证:

if(!$this->model('tools')->geetest($_POST)){
H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('验证码错误')));
}


就可以使用了


转载请保留如下字样

文章作者: 三叔

文章链接: wecenter中开启极验验证

二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能,一般来说都不会改变原有系统的内核。