ECmall邀请注册功能构想和实现

本文介绍了在ECmall环境中实现邀请注册功能的详细过程。首先,通过在数据库中添加pr_id字段记录邀请关系,然后分析ECmall的注册流程,修改相关控制器和模板文件以接收并保存邀请人ID。注册成功后,新用户信息会记录邀请人的id。最后,通过SQL查询展示邀请关系。同时,为了安全性,需要对"user_pid"进行函数过滤。
摘要由CSDN通过智能技术生成

需求:客户想有一个可以邀请注册,每一个客户都有自己的邀请链接,可以邀请朋友注册。

 

环境:WAMP,基于ECmallCMS二次开发。

 

初步构想:

        每个用户在数据库中都有自己的id(A),可以通过判断id来确定A是否邀请了B。注册成功则写入数据库的ecm_member中。在member数据表添加一个字段,pr_id,作为邀请人的id。

首选分析ECmall的注册机制。

主入口文件:index.php?app=member&act=register&ret_url=

member模型下的register方法。

打开member.app.php,发现了    function register()方法。

首先是判断用户是否登录,if ($this->visitor->has_login) 如果没有登录就提醒登录 $this->show_warning('has_login');

if (!IS_POST)这个判断代码让我很疑惑。

在网路上没找到详细的说明,新增加的这个变量是ThinkPHP3.0.1dev版本开始支持的。

从字面意思上看就是如果提交方式不为POST的话,做下面的操作。

我是这样修改的,在数据库中的member表添加一个user_pid字段,默认为0。然后打开现在使用的模板文件夹,打开member.register.html模板文件(ps:我用的是一号店官方模板,需要的朋友可以联系我)。

找到form表单的行,添加如下

                        <form name="" id="register_form" method="post" action="">
                        <table>
                            <tr>
                                <td colspan="2"><h4>{$lang.enter_register_info}</h4></td>
                                <td >邀请id:(默认为空)<h4><input type="text" disabled="disabled" id="user_pid" name="user_pid" value="{$user_pid}"   /></h4></td>
                            </tr>

在app文件夹中打开member.app.php,找到register方法,在头部添加$get['user_pid']接收数据并且assgin变量。

然后在$user_id = $ms->user->register($user_name, $password, $email,$user_pid);

然后打开passport下default.passport.php,找到register函数,增加参数$user_pid.

保存,打开浏览器访问http://xxxxx.com/index.php?app=member&act=register&ret_url=&user_pid=111测试,可以看到user_pid文本框已经显示出来了user_pid的值。


注册一个用户,然后就可以看到注册表中已经有了邀请的pid!

当然,user_pid需要做一下函数过滤,防止被人入侵。

sql语句:

select u.user_id,u.user_name, count(ui.user_id), group_concat(ui.user_name)
from ecm_member u 
   join ecm_member ui  
     on u.user_id=ui.user_pid
group by u.user_id

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值