看这个教程之前请注意哦,相关的代码调用了不少杰奇内置的方法,所以只适合杰奇的官网版本,外面其它的手机端插件之类的,倒是也可以根据我的思路自行二次开发。另外就是,原本是可以完美实现的,但是碰到了一个巨大的问题,就是杰奇是加密的,我解密之后没有完全无错,导致windows下一切正常,linux下500,这个问题因为我的php不是很吊没能解决。

所以这篇文章的主要目的有两个,一是我已经快两个星期没有更新博客了,总想写点什么,二是这个问题一直没有解决,我在等一个路过的大佬可以指点一二。

我采用的版本为杰奇1.8,如果可以建立在packeage.php可以成功无错解密的前提下,几乎1.7到2.3都可以使用,无非就是改一下方法的名称。注意,严格来说只是一个半成品,可能存在安全问题之类的,算是提供一个参考。话说其实网上有解密版,或者至少是packeage.php这个文件解密的版本,比如17mb论坛的,和我之前分享过的杰奇2.3,那没准还可以帮助到一些人的样子。

另外就是,这个思路也可以实现那种弹出菜单的那种分页,总是非常全了,可是过程也不难。

2019/10/28更新:已经修复了截取后导致的文字乱码问题。

写在开头:

说实话我是允许转载文章的,只需要注明源链接,原作者就好了,哪怕没有跟我说明也行。最近总是有家伙喜欢复制我的内容,改几个字,就名正言顺的成为他的。那么问题就来了,你又没有写的能力,还没有最基本的尊敬,那你比路边的乞丐还没有道义,目前我除了谴责还是谴责咯,没卵用的,无非就是打击自己的原创热情而已,混互联网就应该做好这种准备,没办法。

那我就不废话了,先说我已经实现的功能。1.控制每个章节分页的字数

2.输出当前页和总页面的比(如1/4)

3.自动判断是否存上下页,如果无则按照杰奇默认上下章节链接。

步骤如下:

第一步:解密杰奇的packeage.php,在最顶部,也是就<?php的下面 ,写上全局方法。function str_split_unicode($str, $l = 3000) {

if ($l > 0) {

$ret = array();

$len = mb_strlen($str, "utf-8");

for ($i = 0; $i < $len; $i += $l) {

if (ord($str_cut[$i]) > 128) $i++;

$ret[] = mb_substr($str, $i, $l, "utf-8");

}

return $ret;

}

return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);

}

这里就是分页实现的核心,$l定义了每页的字数,我设置为了1000字,大概的原理就是,将章节的文字分割成1000字为间隔的数组。这样,就可以把杰奇的章节内容字段成为参数进入这个方法,然后被分割成数组,根据浏览器头部传入的也参数进行调用。但是这里有个问题,数组是从0开始的,如果在网页前台从0开始调用参数,似乎显得不太合适,然后我们也不知道怎么去控制页面走完之后怎么办。

第二步:分隔章节,引入两个参数,章节id,和当前页id(新定义),通过配合杰奇内置的方法组成链接。if (isset($_REQUEST["cid"])) { //重新获取一遍章节id,赋予新字段t_cid

$_REQUEST["cid"] = intval($_REQUEST["cid"]);

$t_cid = $_REQUEST["cid"];

}

$t_url = jieqi_geturl("article", "chapter", $t_cid, $this->id, $tmpisvip, $this->metas["articlecode"]); //以杰奇自身的方法,生成当前页面的路径。

$jieqiTpl->setCaching(0);

if (isset($_REQUEST["cpage"])) { //以cpage为参数,从前台闯入,表示当前页的页码

$_REQUEST["cpage"] = intval($_REQUEST["cpage"]);

$t_page = $_REQUEST["cpage"];

if($_REQUEST["cpage"] > 0){ //根据页码开始调用章节数组中的数据,并且和前面定义的当前页面链接,组合成上一页链接,并且页面走完的时候设置为空值,方便前台判断。

$cpage = $_REQUEST["cpage"] - 1;

$t_preview = $t_url."&cpage=".$cpage;

}else{

$cpage = 0;

$t_preview = "";

}

}else{

$cpage = 0;

$t_page = "";

}

$tmpvar = str_split_unicode($tmpvar);

$t_num = sizeof($tmpvar); //判断章节被分成了几页,用来生成比例。

if($t_num >= $cpage + 2){ //组合成下一页链接

$npage = $cpage + 2;

$t_next = $t_url."&cpage=".$npage;

}else{

$t_next = "";

}

$tmpvar = $tmpvar[$cpage]; 根据传入的参数,设置新的章节内容调用。

注意,这些代码推荐要写在定义上一页,下一页的代码后面,这样有些字段方法就可以方便去拿,不需要自己再定义,我是写在了大概835行的位置。很全面,还可以继续自己扩展,那个让我做的朋友也想得比较周到。现在,所有的数据都定义,并且能获取到了,怎么在前台输出呢?

第三步:通过杰奇模板引擎,生成数据调用标签,注意把原本的jieqi_content定义去掉,如果不去的话就把这里的改成其它东西。$jieqiTpl->assign("jieqi_content", $tmpvar); //章节内容

$jieqiTpl->assign("t_next", $t_next); //下一页链接

$jieqiTpl->assign("t_preview", $t_preview); //上一页链接

$jieqiTpl->assign("t_page", $t_page); 页面比例

杰奇是不能在模板直接写php代码的,所以只能用这种方式引入,这样就可以和杰奇原本的标签一个调用格式。于是就得到了以下的调用标签。{?$jieqi_content?}

{?$t_page?}

{?if $t_preview != ""?}上一页{?else?}上一章{?/if?}

{?if $t_next != ""?}下一页{?else?}下一章{?/if?}

教程到这里就结束了!

总之,上面的代码还有很强的扩展余地,比如我开头说的设置页面弹出菜单,还可以调用当前是第几页显示一些额外的内容,至于伪静态,很简单,自己想办法改吧,不会可找我。问题只剩下packeage.php的解密问题,所以我就在此地,等一个大佬。

【规则之树版权所有,转载请注明来源。包括作者,源网站名称,源链接。】

文件下载地址:

此处内容需要评论回复后方可阅读。

部分截图:

打赏

支付宝支付

您的大名:

1 元

5 元

10 元

20 元

50 元

100 元

万水千山总是情,给个打赏行不行。

打赏

原创文章,作者:不暇,如若转载,请注明出处:https://shop.ruletree.club/archives/1150/

php五秒盾规则之树,杰奇cms章节分页实现原理,附代码相关推荐

  1. 杰奇cms章节分页怎么实现(主要针对2.4版本)

    看这个教程之前请注意哦,相关的代码调用了不少杰奇内置的方法,所以只适合杰奇的官网版本,外面其它的手机端插件之类的,倒是也可以根据我的思路自行二次开发.另外就是,原本是可以完美实现的,但是碰到了一个巨大 ...

  2. python+undetected_chromedriver+chrome绕过五秒盾(cloudflare)

    公司是做外贸的,所以需要爬取一些外国网站的商品竞品数据,但是在爬取某个网站的时候,遇到了五秒盾的阻拦. 说实话,一开始自己并不了解五秒盾,毕竟在之前爬国内网站的时候,并没有遇到过这种防护措施,但是在爬 ...

  3. php五秒盾,typecho引入php五秒盾,实现自由配置

    记得上次博客被攻击的时候,就提到了这个,但是我只讲了怎么引入.这样的话,就是直接开启了cc五秒盾的效果,所有未cookies验证的用户全部被拦截了,很影响用户的体验.实际上typecho是可以实现控制 ...

  4. 杰奇是否生成html,杰奇cms章节页面报错功能实现,基本思路

    这是交流群里面一个群友提出来的问题,而网上的这种功能是手机端插件自带的,并不属于杰奇官方版的插件.然后今天简单的研究了一下,发现直接使用杰奇后台收件箱的功能是可行的,所以就随手写了一些代码.这些代码我 ...

  5. od 追踪_裁判员行为规范【基本功】——追踪裁判违例宣判练习 /五秒违例

    当打出一个违例手势后,固定它,并在你的脑海里默念一两秒.要求有力,干脆,清晰和果断的手势. 手势程序:⑴停表手势,(2)取消得分手势 / 口语并用 / 如需要),⑶对应的违例手势 / 口语并用,⑷比赛 ...

  6. 对应的ctrl_取消单元格合并,对空白单元格填充数据,学会Ctrl+Enter五秒搞定

    Excel统计数据过程中,相信大家最不想碰到的就是合并单元格,因为合并区域会对我们的数据统计造成各种麻烦.取消单元格合并后,除第一个单元格有内容外其他的单元格都成了空值. 案例说明:如上图所示,我们需 ...

  7. “四舍六入五成双规则” 与 C语言如何实现“四舍五入”

    1.四舍六入五成双规则 对于位数很多的近似数,当有效位数确定后,其后面多余的数字应该舍去,只保留有效数字最末一位,这种修约(舍入)规则是"四舍六入五成双",也即"4舍6入 ...

  8. 实现保留3位有效数字(四舍六入五成双规则)

    目录 实现保留3位有效数字(四舍六入五成双规则) 1.程序简介 输出样例 2.程序代码 3.运行结果 实现保留3位有效数字(四舍六入五成双规则) 1.程序简介 输出样例 输入:输出: 1234 123 ...

  9. php百度云5秒盾,cloudflare如何自定义5秒盾页面教程

    cloudflare防御DDOS能力很无敌,不过防御CC就需要开启被攻击模式,而一但开启被攻击模式后5盾页面显示的都是英文,非常影响用户体验. 所以我们要用到自定义5秒盾页面,进入cloudflare ...

最新文章

  1. linux中cc和S的区别,为什么在linux命令(iostat)中每秒读取(r/s)一直为零?
  2. jquery地址栏链接与a标签链接匹配添加样式!
  3. 通过Zookeeper动态感知服务器上下线[案例]
  4. 线性回归竟然还有不明白的地方
  5. 用户名登陆的两种格式
  6. LDAP 中关于CN,OU,DC的含义
  7. pandas的to_csv()使用细节和一些参数
  8. 远看像乱序执行,近看是内存屏障的BUG是如何解决的?
  9. opencv漫水填充算法
  10. 曼昆:宏观经济学简史(转)
  11. iBase4J部署总结
  12. 【董天一】什么是IPFS(三)
  13. 《东周列国志》第九十六回 蔺相如两屈秦王 马服君单解韩围
  14. QT 度和温度符号的显示(字符编码)
  15. 使用ESP8266接入阿里云物联网平台(阿里 云智能APP)可远程控制电脑开关机,灯光等设备 CP2102, CH340
  16. 解决CPU使用过高问题
  17. Android 内存溢出、垃圾回收、四种引用
  18. [源码和文档分享]基于WIN32 API界面编程实现的华容道小游戏
  19. 后台系统页面左边菜单按钮和右边内容的处理,后台系统页面出现双滚动
  20. 《放学后》—— 读后总结

热门文章

  1. 基于php的中小型服装厂原料采购系统
  2. 典型的微型计算机系统总线组成,第13章 总线与微型计算机系统的结构.ppt
  3. ubuntu安装WPS字体:
  4. 玩《征途》感受——这么多年白玩游戏了 (zt)
  5. 【开发记录】微信小游戏开发入门——俄罗斯方块
  6. ios13修改dns都用什么服务器,苹果手机用哪个dns最快?教你配置DNS让网速飞起
  7. linux硬盘空间不足清理方法
  8. TensorRT 概述、原理、Linux下安装
  9. 成熟量产变频器设计方案 STM32源代码原理图 此stm32变频器资料,这个是1.5千瓦的变频器
  10. 联通大数据出炉:OPPO手机强势表现,华为苹果也要让三分