icewing

hybbs插件 - 注册邮箱验证
因为ZYFX不在更新(具体原因可以到网站查看),就将hybbs上的修改记录一下。提供一个参考。这个插件是我第一次使...
扫描右侧二维码阅读全文
01
2018/11

hybbs插件 - 注册邮箱验证

因为ZYFX不在更新(具体原因可以到网站查看),就将hybbs上的修改记录一下。提供一个参考。这个插件是我第一次使用hybbs时修改的插件。

插件的原作者是:ghq540979712。因为时间太长了其他的信息我也找不到了。当时原插件和新版的hybbs不兼容。开启插件后在后台报异常,后来根据异常信息一边调试一边修改,最终能够正常使用了。但是当时修改的时候没有备注而且是直接在源代码中修改,现在时间太长了回头看已经记不起改了什么了。那么只好从头梳理一遍这个插件了。


hybbs的插件构成

因为篇幅所限,这里只介绍一下插件的基本构成。具体的插件详细教程可以到官网进行查看学习。hybbs插件开发教程 后面会以邮箱插件的代码为例进行简单的介绍。

在hybbs一个插件最初由以下文件构成

conf.html - 这是用于显示插件在后台有哪些功能可以配置
conf.php - 这是关于插件的信息
function.php - 当插件涉及到操作数据库,提供安装、卸载功能。
inc.php - 存储在配置界面,管理员对相关功能配置的信息。
XXXX.hook - 插件的核心代码,文件名称用于确定在整个hybbs框架中,在哪个位置引入插件的核心代码。
on - 用于判断插件是否开启,开启时自动生成此文件。
re.php - 用于在(Action、Model、View)框架目录下覆盖程序的源代码。
a1 - (名称自定义,要和re.php中的一致)里面是框架的源代码,用于查找作用。
b1 - (名称自定义,要和re.php中的一致)里面是即将替换的代码。注意保留源代码。

邮箱插件

大致了解过构成后,看代码也就比较简单了。

conf.html

<div class="form-group">
    <label class="col-lg-2 control-label">验证邮件标题</label>
    <div class="col-lg-10">
        <input class="form-control" type="text" name="emailtitle" value="{$inc.emailtitle}">
        <span class="help-block">发送注册验证邮件给用户时,邮件标题名称从此项获取</span>
    </div>
</div>

<div class="form-group">
    <label class="col-lg-2 control-label">Cookie加密字符串</label>
    <div class="col-lg-10">
        <input class="form-control" type="text" name="cookiepwd" value="{$inc.cookiepwd}">
        <span class="help-block">发送注册验证邮件给用户成功后,增加Cookie使用的加密字符串(首次使用务必记得更改)</span>
    </div>
</div>

<div class="form-group">
    <label class="col-lg-2 control-label">验证邮件内容</label>
    <div class="col-lg-10">
        <textarea class="form-control" type="text" name="emailcontent">{$inc.emailcontent}</textarea>
        <span class="help-block">注册邮箱验证内容,需要注意%s会转换为验证码. 模板支持HTML代码(注意不要直接复制全局设置中的内容[可能会有两个%s],发送内容一定不能有两个及以上的 %s !!!)</span>
    </div>
</div>

<div class="form-group">
    <label class="col-lg-2 control-label">发送邮件间隔(秒)</label>
    <div class="col-lg-10">
        <input class="form-control" type="text" name="emailt" value="{$inc.emailt}">
        <span class="help-block">注意时间一定要正确,不能过长也不能过短</span>
    </div>
</div>

<p>温馨提示 : 注册验证邮件的发件账号配置 与 全局设置中的“邮箱设置”中的账号和密码是同一个,内容并不是同一个哦!</p>
  • 代码很多,不过大都是重复的代码,这里就拿第一个进行简单的举例。
<div class="form-group">
    <label class="col-lg-2 control-label">验证邮件标题</label>
    <div class="col-lg-10">
        <input class="form-control" type="text" name="emailtitle" value="{$inc.emailtitle}">
        <span class="help-block">发送注册验证邮件给用户时,邮件标题名称从此项获取</span>
    </div>
</div>
  • 代码里要注意namevalue属性。里面的属性值将会是核心代码的变量。其他的代码属于基本的HTML代码。后台点开配置按钮将使用这些代码进行显示。

hook文件

  • 第一个文件是a_user_fun.hook。这里的文件名称对应着hybbs预留的位置名称。它的插入位置在Action\User.php第420行代码。代码比较多,这里就不贴了。
$addmailinc = get_plugin_inc('hy_email_check');
//引入插件目录

//{hook a_user_recode_1}
这种代码都是用于插入,或者寻找位置。就不过多的介绍了。

X()函数

  • 下面这个代码用到了X()函数,这个函数是框架内置的一个函数 可以获取提交到服务器的参数数据.
$email = X("post.email");

函数声明 X(获取类型,默认值='')
X 函数可以获取 _GET _POST _SESSION _COOKIE _SERVER 数据.
并且你不需要再去使用isset 去判断索引是否存在 以及 empty 去判断是否为空
如果 X 函数返回假 说明不存在

  • 下面这几行代码将存储在框架内的邮件信息提取出来。
$emailhost = $this->conf['emailhost'];
$emailport = $this->conf['emailport'];
$emailuser = $this->conf['emailuser'];
$emailpass = $this->conf['emailpass'];

Cookie 函数

  • 该函数复制与 ThinkPHP 。Cookie 是我们最常用的操作。它的作用是将数据存储在用户浏览器上, 并且可以设置有效期。
$cookie = cookie("HY_EMAILT"); //存储在用户游览器的HY_EMAILT字段
//下面这两个是在代码的75行。
cookie('HY_EMAILA',$Encrypt->encrypt($code,$addmailinc['cookiepwd']),300); //设置有效期为5分钟
cookie('HY_EMAILT',$email,$addmailinc['emailt']); //设置邮件发送的间隔
  • cookie的大致用法
    cookie($name='', $value='',$expire=0)
    $name : cookie字段 [可选]
    $value : 设置cookie值 [可选]
    $expire : cookie有效期 [可选] 0 等于永远
    如果3个参数都输入 直接调用cookie 会直接返回所有cookie .作为数组返回 相当于返回整个 $_COOKIE
  • 下面是变量的常用定义方式。其中hy_ryxahy_email_check分别对应着各自插件的目录名称。

<?php $jf_inc = get_plugin_inc('hy_ryxz'); ?>
$addmailinc = get_plugin_inc('hy_email_check');

//这个在每个hook的头部必须有。写法上可能会不一样。

$jf_inc['getusertag']
$addmailinc['emailt']

//这个是用来定义变量的代码。conf.html里的变量名需和这个变量名相对应。

if语句什么的我就不多说了。还是比较简单的。

M函数

  • M 函数用于Model 类 并且实例化这个表作为操作对象。
$User = M("User");
//使用 M 函数对 User 数据表 进行操作

Lib 自定义类库

  • 默认Lib目录处于 /Lib 用来自定义一些方法。
$Email = L("Email");
$Encrypt = L("Encrypt");

//用来实例化Email、Encrypt

使用方法

后面的都是PHP函数及其相关的用法了。这里我就不过多介绍了。其中a_user_fun.hook里的emailneir用于存储发送邮件的内容。可以随意更改。(这里我使用了SMTPmail邮件发送插件的邮件模板)

  • a_user_fun.hook简单介绍完了。除了核心代码以外,在插件中还有其他hook。他们的位置都在hybbs模板里面。我就不过多介绍了。下面安装完这个插件还需要另一个插件。因为在hybbs中邮件发送配置出错率较高。这里需要使用PHPMailer类库。正好有这个插件可以直接拿来用:SMTPmail邮件发送插件。安装后(我用的是1.2版本)直接配置hybbs里面的邮箱设置。测试是否能够使用。如果不行将PHPMailer.phpSMTP.php 放到Lib目录下应该就可以了。

PS:因为我的hybbs一直使用的是免费版。自hybbs收费后里面的插件、模板我已经无法获取最新的版本。所以无法测试这个插件是否还可以配合使用。如果无法使用。下面有我的两个旧版本插件压缩包。插件信息还是保留的原作者的信息,没有更改不影响使用。

下载

最后修改:2018 年 11 月 03 日 12 : 16 PM
生活需要一些仪式感,比如手冲一杯咖啡:)

发表评论