织梦如何调用会员邮箱?

99ANYc3cd6
预计阅读时长 12 分钟
位置: 首页 织梦建站 正文

通过自定义函数 + 安全机制(最推荐、最安全)

这是最规范、最安全的方法,它通过创建一个自定义函数,并配合权限控制,确保只有特定角色(如管理员、发帖人自己)才能看到邮箱。

织梦怎么调用会员邮箱
(图片来源网络,侵删)

步骤 1:创建自定义函数文件

  1. 打开织梦的 include 目录。
  2. 新建一个名为 custom.func.php 的文件(如果文件已存在,则直接编辑)。
  3. 在这个文件中添加以下PHP函数代码:
/**
 * 安全获取会员邮箱
 * @param int $mid 会员ID
 * @param int $admin_uid 管理员ID,如果为0则非管理员
 * @return string 返回邮箱地址,如果没有权限则返回空字符串或占位符
 */
function GetMemberEmail($mid, $admin_uid = 0)
{
    // 1. 判断是否为管理员
    // $admin_uid > 0 表示是在后台调用,可以显示真实邮箱
    // 在前台调用时,$admin_uid 默认为 0,不满足此条件
    // 2. 判断是否为会员自己查看(可选)
    // 你可以在这里加入判断,如果当前登录会员的ID ($mid) 和查看者ID一致,则允许显示
    // global $cfg_ml;
    // if ($cfg_ml->M_ID > 0 && $cfg_ml->M_ID == $mid) {
    //     return $member['email'];
    // }
    // 如果以上条件都不满足,说明是普通访客或其他会员在查看,为了隐私安全,我们不返回真实邮箱
    // 可以返回一个占位符,或者不返回任何东西
    return '***@protected.com'; // 或者直接 return '';
}

代码解释:

  • 这个函数接收两个参数:$mid(会员ID)和 $admin_uid(管理员ID)。
  • 核心逻辑是:只有当 $admin_uid > 0 时(即这个函数是在后台环境中被调用的),我们才去查询并返回真实的邮箱,在前台模板中调用时,这个值会是0,所以函数会返回一个受保护的假邮箱。
  • 你也可以根据需要加入判断,比如让会员只能看到自己的邮箱。

步骤 2:在织梦后台发布文章时调用函数

你可以在发布文章或内容时,使用这个函数。

  1. 进入“后台” -> “核心” -> “频道模型” -> “内容模型管理”。

  2. 选择你想要修改的模型(文章模型”),点击“字段管理”。

  3. 点击“添加新字段”。

    • 字段名member_email (必须为英文)
    • 会员邮箱 (显示给管理员看的名称)
    • 字段类型单行文本
    • 后台项目 (这样在后台发布内容时才能填写)
    • 前台表单 (普通会员在前台提交时不需要填写)
    • 保存字段
  4. 现在去发布一篇新文章,你会发现在内容编辑区下方多了一个“会员邮箱”的输入框,你可以手动输入或通过代码自动填入当前会员的邮箱。

    如何自动填入? 你可以修改织梦的发布模板文件(/templets/article_add.htm 或对应的模型文件),在“会员邮箱”字段附近加入以下代码,它会自动获取当前登录会员的邮箱并填入。

    <script language="javascript">
    // 获取当前登录会员信息并填入
    function fillMemberEmail() {
        $.ajax({
            url: "/member/ajax_getinfo.php", // 织梦获取会员信息的接口
            type: "GET",
            dataType: "json",
            success: function(data) {
                if (data.email) {
                    $("input[name='member_email']").val(data.email);
                }
            }
        });
    }
    $(document).ready(function(){
        fillMemberEmail();
    });
    </script>

    更简单的方法是直接在PHP层面修改发布页面模板,但上述JS方法更解耦。

步骤 3:在前台模板中调用

你可以在前台内容页模板(通常是 /templets/default/article_article.htm)中调用这个字段。

<p>文章作者联系邮箱:{dede:field.member_email/}</p>

最终效果:

  • 管理员在后台看到的是真实的会员邮箱。
  • 普通访客在前台看到的是你在函数中设置的占位符(如 ***@protected.com)。

使用PHP代码直接查询(不推荐,有安全风险)

这种方法最直接,但强烈不推荐,因为它会暴露所有会员的邮箱,极易被恶意抓取。

你可以在需要显示邮箱的模板文件中,直接嵌入PHP代码。

<?php
$mid = $arc->Fields['mid']; // 获取当前文章作者的会员ID
if($mid > 0){
    $member_row = $dsql->GetOne("SELECT email FROM `dede_member` WHERE mid = $mid");
    if(is_array($member_row)){
        echo $member_row['email'];
    }
}
?>

使用场景: 这种方法只建议在完全受保护的后台页面使用,例如在会员列表中给管理员显示联系方式。绝对不要放在任何对公众开放的前台页面。


通过会员资料页面调用(织梦自带,最简单)

织梦自带的会员资料页面(/member/)本身就会显示登录会员自己的邮箱,如果你只是想让会员能查看自己的邮箱,直接使用织梦自带的会员中心功能即可,无需额外开发。

总结与最佳实践

方法 优点 缺点 推荐度
自定义函数 安全、灵活、可控,符合隐私保护原则。 需要少量代码开发。 ⭐⭐⭐⭐⭐ (强烈推荐)
直接查询 实现简单,无需修改模板。 极其不安全,会公开所有用户邮箱,有法律和道德风险。 ⭐☆☆☆☆ (绝对避免)
会员中心 无需开发,系统自带。 只能会员自己看到,无法在文章列表等公共页面展示。 ⭐⭐⭐☆☆ (适用于特定需求)

为了你的网站安全和用户隐私,请务必选择方法一,它虽然比直接调用多几个步骤,但这是专业且负责任的开发方式,通过自定义函数和后台字段,你可以精确控制谁能看到邮箱,看不到的时候显示什么,从而在功能和安全性之间取得完美平衡。

-- 展开阅读全文 --
头像
织梦栏目绑定域名,如何正确设置与生效?
« 上一篇 03-21
织梦图集上传大小怎么改?
下一篇 » 03-21

相关文章

取消
微信二维码
支付宝二维码

目录[+]