- 后台设置:在织梦后台开启会员认证功能,并设置认证字段。
- 二次开发:修改会员发布信息的PHP文件,在发布前检查该会员是否已通过认证。
下面我将为您提供详细的图文步骤和核心代码修改方法。
第一步:后台开启并设置会员认证
这是基础,我们需要先让织梦系统支持会员认证功能。
-
登录织梦后台:使用管理员账号登录您的织梦网站后台。
-
进入会员模型管理:
- 在左侧菜单栏找到 【会员】 -> 【会员模型管理】。
- 点击进入后,您会看到默认的“个人”和“企业”模型,点击您想要开启认证的模型(通常是“个人”)后面的 【字段管理】。
-
添加认证字段:
- 在字段管理页面,点击右上角的 【添加新字段】。
- 字段名:填写
ms(代表“实名”的首字母,也可以自定义,如is_realname)。 - :填写“是否实名认证”。
- 字段类型:选择 【radio 单选框】。
- 字段值:在“选项”中填写两行:
0|未认证1|已认证
- 默认值:选择
0|未认证。 - 显示在会员投稿表单:务必勾选此项,这样会员在个人中心才能看到并修改这个状态(虽然他们不能自己改成“已认证”,但需要显示出来)。
- 是否公开:选择“是”,这样可以在会员列表等地方显示出来。
- 其他选项可以根据需要设置,然后点击 【保存】。
-
更新缓存:
- 字段添加完成后,系统会提示您更新缓存,请务必到后台的 【系统】 -> 【系统基本参数】 -> 【核心设置】 中,点击右上角的 【更新缓存】 按钮。
至此,后台的准备工作已经完成,系统已经有了一个用来标记会员是否认证的字段。
第二步:二次开发 - 修改发布页面
这是最关键的一步,我们要让会员在发布信息时,系统会先检查他的认证状态。
会员在“会员中心”发布信息(如文章、商品等)
这是最常见的场景,我们需要修改发布信息的PHP文件。
-
找到对应的发布文件:
- 发布文章:
/member/contents_add.php - 发布商品(如果使用商城模块):
/member/shop_add.php或/member/buyaction.php等。 - 请根据您的实际需求修改对应的文件。 我们以最常见的
/member/contents_add.php为例。
- 发布文章:
-
修改文件:
- 用代码编辑器(如VS Code, Sublime Text, Dreamweaver)打开
contents_add.php文件。 - 在文件中找到
if($dopost=='save')这段代码,这是处理表单提交保存的核心逻辑。 - 在这段代码的最开始,在执行任何数据库操作之前,加入以下检查代码:
// 在 if($dopost=='save') 内部,最开始的位置添加 // 检查会员是否已认证 $row = $dsql->GetOne("SELECT ms FROM `dede_member` WHERE mid='".$uid."'"); if(empty($row['ms']) || $row['ms'] != 1) { ShowMsg('您尚未通过实名认证,无法发布信息,请先联系管理员进行认证!', '-1'); exit(); }代码解释:
$dsql->GetOne(...): 执行一条SQL查询,从dede_member表中查询当前登录会员($uid)的ms字段值。if(empty($row['ms']) || $row['ms'] != 1): 判断查询结果。ms字段为空(未设置)或者不等于1(未认证),则执行下面的提示。ShowMsg(...): 这是织梦自带的提示函数,会弹出一个提示框并跳转。- 第一个参数是提示文字。
- 第二个参数
'-1'表示返回上一页。
exit();: 终止脚本执行,后续的发布代码就不会运行了。
- 用代码编辑器(如VS Code, Sublime Text, Dreamweaver)打开
-
保存文件:
- 将修改后的
contents_add.php文件上传到您的网站服务器上,覆盖原文件。
- 将修改后的
效果: 任何一个未认证的会员尝试在会员中心发布文章时,都会被阻止,并看到“您尚未通过实名认证,无法发布信息”的提示。
在前台直接调用发布接口(如投稿表单)
如果您网站首页或其他页面有一个直接投稿的表单,它可能直接指向了 post.php,这种情况下,您需要修改 post.php。
-
找到文件:
/post.php -
修改文件:
- 同样,用代码编辑器打开
post.php。 - 找到处理发布逻辑的核心代码段(通常是检查
dopost值的地方)。 - 在执行保存操作之前,加入与上面相同的检查代码:
// 在处理保存逻辑的代码块前添加 if($dopost == 'save') { // 检查会员是否已认证 // 如果游客投稿,则必须登录,所以这里主要检查已登录会员 if($cfg_ml->IsLogin()) { $row = $dsql->GetOne("SELECT ms FROM `dede_member` WHERE mid='".$cfg_ml->M_ID."'"); if(empty($row['ms']) || $row['ms'] != 1) { ShowMsg('您尚未通过实名认证,无法发布信息,请先联系管理员进行认证!', '-1'); exit(); } } // ... 原有的保存代码 ... } - 同样,用代码编辑器打开
第三步:如何让会员通过认证?
您添加的检查逻辑会阻止未认证会员发布,那么会员如何才能被认证呢?有几种方式:
-
管理员手动认证(最常用):
- 会员需要先提交一些资料(比如身份证号、手持身份证照片等)给您,您可以在网站上留一个联系方式。
- 您登录织梦后台,进入 【会员】 -> 【会员管理】。
- 找到需要认证的会员,点击其用户名进入编辑页面。
- 找到您之前添加的“是否实名认证”字段,将其值从“未认证”修改为“已认证”,然后点击“确定”保存。
-
开发会员自助认证功能(较复杂):
- 这需要更高级的二次开发,您可以创建一个新的自定义模型,命名为“实名认证申请”。
- 会员填写认证申请表单(上传证件等)。
- 管理员在后台审核这个申请,审核通过后,系统自动将会员在
dede_member表中的ms字段值更新为1。
要实现“织梦会员发布信息先认证”的功能,核心流程如下:
- 后台:在会员模型中添加一个用于标记认证状态的 单选字段(如
ms),并确保它显示在会员表单中。 - 前台:找到所有会员可以发布信息的PHP文件(如
contents_add.php,shop_add.php,post.php等)。 - 修改:在这些文件的数据保存逻辑之前,加入一段代码,查询当前登录会员的认证状态,如果未认证,则使用
ShowMsg()提示并终止操作。 - 管理:通过后台手动或通过开发的功能为符合条件的会员授予“已认证”状态。
通过以上步骤,您就可以成功地实现这个功能,大大提升您网站内容的质量和可信度。
