为了吸引更多的用户注册我们给iwebshop添加邀请用户功能-邮箱邀请
效果展示:
1、邮箱发送
2、点击链接注册
注册成功之后邀请人积分增加100
代码实现:
1、首先我们在user表中添加invite字段
2、在views/default/layouts/ucenter.html中添加
<div class="box"> <div class="title"><h2 class='bg5'>好友邀请</h2></div> <div class="cont"> <ul class="list"> <li><a href="{url:/ucenter/invite}">邮箱邀请</a></li> <li><a href="{url:/ucenter/inviteList}">邀请记录</a></li> </ul> </div> </div> 3、在views/default/ucenter下建立invite.html{js:jquery} <div class="main f_r"> <div class="uc_title m_10"> <label class="current"><span>好友邀请</span></label> </div> <div class="form_content"> <div class="uc_title2 m_10"><span class="f_r">带<b class="red">*</b>号的项目为必填项</span><strong>邮箱邀请</strong></div> <!--<form action='{url:/ucenter/invitePro}' method='post' name="email">--> <table class="form_table" cellpadding="0" cellspacing="0"> <col width="200px" /> <col /> <tr> <th><span class="red">*</span>好友邮箱:</th><td><input type='text' class="normal" name="email" alt='请输入好友邮箱' id="mail" /><label>邮件发送</label></td> </tr> <tr> <th></th> <td> <label class="btn"><input type="butten" value="确认发送" id="sub"/></label> <label class="btn"><input type="reset" value="取消" /></label> </td> </tr> </table> <!--</form>--> </div> </div> <script type='text/javascript'> $(function(){ $("#sub").click(function(){ var ajaxUrl = '{url:/ucenter/invitePro}'; var email=$("#mail").val(); $.getJSON(ajaxUrl,{'email':email},function(msg){ //console.log(msg); alert(msg.message); }) }) }) </script> 4、在ucenter.php建立邮箱发送控制器/** * 好友邀请邮箱注册提交 */ public function invitePro(){ $email = IReq::get('email'); $user_id=$this->user['user_id']; //发送邮件 $smtp = new SendMail(); if($error = $smtp->getError()) { $result = array('isError'=>true,'message' => $error); } else { $title = '好友邀请'; $content = '大人:小二等您好苦,您的好友邀请您注册账号 点击链接:'."http://127.0.0.1/iwebshop/index.php?controller=simple&action=reg&id=".urlencode(base64_encode($user_id)); if ($smtp->send($email, $title, $content)) { $result = array('isError' => false, 'message' => '发送成功!'); } else { $result = array('isError' => true, 'message' => '发送失败,请确认您填写邮箱是否正确'); } } echo JSON::encode($result); } 5、在simple.php中建立reg()方法 //注册控制器/** * 好友邀请 */ function reg(){ //接到邀请人id $id=IReq::get('id')?IReq::get('id'):""; if($id!="") { $uid = urldecode(base64_decode($id)); $userObj = new IModel('user'); $userlist =$userObj->getObj('id='.$uid,'username'); $uname=$userlist['username']; $this->uname = $uname; $this->uid=$uid; } $this->redirect('reg'); }6、修改注册页面views/default/simple/reg.html{if:$this->uname} <tr><th>邀请人:</th><td>{$this->uname}<input type="hidden" name="uid" value="{$this->uid}"></td><label>邀请人用户名</label></td></tr> {/if}7、修改提交注册控制器simple.php reg_act() 方法
//添加值$invite = IFilter::act(IReq::get('uid','post')); 入库字段添加//user表 $userArray = array( 'username' => $username, 'password' => md5($password), 'email' => $email, 'invite' => $invite, 'address' => $address, ); //增加积分//积分增加 $pointConfig = array( 'user_id' => $invite, 'point' => 100, 'log' => '邀请用户成功 +100积分', ); $pointObj = new Point; $pointObj->update($pointConfig);这时我们就实现了邀请注册成功增加积分!!!!
邀请记录展示:
在views/default/ucenter/下建立 inviteList.html
**{query}{/query}标签的使用让我们不用建立控制器**<div class="main f_r"> <div class="uc_title m_10"> <label class="current"><span>邀请记录</span></label> </div> <div class="box m_10"> {set:$user_id = $this->user['user_id']} <p class="text">您当前的邀请人数为:{query:name=user where=invite eq $user_id}{/query}<b class="brown">{set:$count=count($items)}{$count}</b>人</p> </div> <div class="form_content m_10"> <div class="cont"> <table class="list_table" width="100%" cellpadding="0" cellspacing="0"> <col width="200px" /> <col width="200px" /> <col /> <thead><tr><th>被邀请人用户名</th><th>注册时间</th></tr></thead> <tbody> {set:$page= (isset($_GET['page'])&&(intval($_GET['page'])>0))?intval($_GET['page']):1;} {query:name=user as u join=left join member as m on m.user_id eq u.id where=u.invite eq $user_id fields=u.username,m.time page=$page pagesize=1} <tr> <td>{$item['username']}</td><td>{$item['time']}</td> </tr> {/query} <tr><td colspan='3'>{$query->getPageBar()}</td></tr> </tbody> </table> </div> </div> </div> 完成功能!!!