首页 » 休闲 » 正文内容
原创
typecho实现多个文章部分内容加密教程
寻梦xunm| 906| 休闲
8个月前
超过243天 温馨提示
本文最后更新于2024年01月20日,已超过243天没有更新,若内容或图片失效,请留言反馈。
需求说明

typecho文章虽然自带了加密功能,可是有时候不太人性化,例如我想要显示部分内容,部分内容加密而且多个部分加密的密码不同。

多个部分内容加密截图

请输入图片描述

提交密码查看效果截图

请输入图片描述

这篇文章就是为了解决上面提供的方案思路,具体各项细节需要开发者自行在进一步完善(例如添加cookie,session等缓存提交的密码实现在一定时间内不用重复输入等,下面的代码为了理解就没有添加)。

具体实现代码

把下面的代码添加到“post.php”文件中即可(重要提示:需要把下面的代码加到“$this->content”之前),当然还有通过其他方法也可以实现,这里为了方便就简单粗暴。

if ($this->request->isPost() && $this->request->mm === 'ok'){

  if (strpos($this->content, '{mm') !== false) {

    $this->content = preg_replace_callback('/{mm id="(.+?)"}(.+?){\/mm}/',function($match){
      if ($this->request->pass === $match[1]){
        return $match[2];
      }else{
        return $match[0];
      }
    }, $this->content);

  }
}

if (strpos($this->content, '{mm') !== false) {

  $this->content = preg_replace('/{mm id="(.+?)"}(.+?){\/mm}/',"<form action='?mm=ok' class='xm-mm' id='xm-mm' method='post'>
    <div class='xm-mm-input' id='xm-mm-input'>
      <input type='password' class='xm-mm-pass' id='xm-mm-pass' name='pass' placeholder='请输入密码'>
    </div>
    <div class='xm-mm-button' id='xm-mm-button'>
      <button type='submit' class='xm-mm-submit' id='xm-mm-submit'>提交</button>
    </div>
</form>", $this->content);
}

在写文章的时候,部分内容需要加密的内容用如下代码即可

{mm id="这里填写密码"}这里是要加密的文章内容{/mm}

0 赞 or 打赏
喜欢就打赏一点
微信 支付宝
  1. 山猫日记的头像
    山猫日记

    8个月前 . LV.1

    喜欢 嘿嘿,加密代码放在内容少的前面加密,源码中能查到加密内容和密码。大佬去试一下。

    Windows Chrome 广东省广州市
    1. 寻梦xunm的头像
      寻梦xunm

      8个月前 . LV.0

      @山猫日记

      qq私聊看下截图

      Windows 火狐浏览器 重庆市
  2. 山猫日记的头像
    山猫日记

    8个月前 . LV.1

    这个好,我试下添加到我的主题里。

    Android QQ浏览器 广东省中山市
    1. 寻梦xunm的头像
      寻梦xunm

      8个月前 . LV.0

      @山猫日记

      加油

      Windows 火狐浏览器 重庆市
隐私
Q Q:1340326824
邮箱:vipshiyi@qq.com
QQ群:422720328

我的音乐