基于Laravel开发会员分销系统的示例

  介绍

小编给大家分享一下基于Laravel开发会员分销系统的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

为了概念明确,下文中邀请者用上级替代,被邀请者使用下级替代

首先,我们要明确我们的需求:首先用户可以通过程序分享链接邀请好友注册,被邀请者可以通过链接注册,从而绑定邀请关系,其次在下级消费的时候,上级都可以获得相应的佣金。

现在我们要确定如何实现注册。我原本打算使用理解的方法,只要将用户引导到特定页面,该用户将会被标记为特别推荐页面,待用户完注册,并将关系绑定。但最终采用的是有报酬的的做法,通过向链接添加参数?通过=米格尔来实现推荐页面的构建。

好了,现在让我们创建我们的注册页面,在注册页面程序会通过链接参数通过匹配上级。代码很简单,如果通过存在那么将其存储到饼干30天,由于我们有几个不同子域名都需要该操作,所以我们将其添加到主域名下,这样所有子域均可使用该饼干。下面视具体代码:

import  Cookies 得到& # 39;js-cookie& # 39;   const  via =, new  URL (location.href) .searchParams.get(& # 39;通过# 39;)   if (通过),{   ,,,Cookies.set (& # 39; sitesauce_affiliate& # 39;,,通过,,{   ,,,,,,,:到期,30日   ,,,,,,,域:,& # 39;.sitesauce.app& # 39;   ,,,,,,,安全:,真的,   ,,,,,,,sameSite:, & # 39;宽松# 39;   ,,,})   }

这样做的好处是当会员未通过此次分享注册,而是事后自己注册的时候,可以明确地知道该会员是通过那个上级的引荐而来的。我想更进一步,在新会员注册的时候通过显示一些标语以及上级者信息,从而使用户明确知道这是来自会员(好友)的一个引荐链接,从而使注册成功率更高,所以我添加了提示弹窗。效果如下:

想要实现上面效果的话,现在我们需要的不仅仅是上级标签,还需要上级详细信息,所以我们需要一个API,该API会通过通过匹配并提供上级详细信息。

import  axios 得到& # 39;axios& # 39;   import  Cookies 得到& # 39;js-cookie& # 39;   const  via =, new  URL (location.href) .searchParams.get(& # 39;通过# 39;)   if (通过),{   ,,,axios.post (“https://app.sitesauce.app/api/affiliate/$ {encodeURIcomponent (this.via)}”),然后(response =祝辞,{   ,,,,,,,Cookies.set (& # 39; sitesauce_affiliate& # 39;,, response.data,,{,到期:30日,域:,& # 39;.sitesauce.app& # 39;,,安全,,真的,,sameSite:, & # 39;宽松# 39;,})   ,,,}).catch (error =祝辞,{   ,,,,,,,if  (! error.response  | |, error.response.status  !==, 404), return  console.log (& # 39; Something  went 错误# 39;)   ,,,,,,,console.log (& # 39; Affiliate  does  not 存在只Register  for  our  referral  program :, https://app.sitesauce.app/affiliate& # 39;)   ,,,})   }

在URL中你可以看到encodeURIComponent,他的作用是保护我们不在受路径遍历脆弱性的影响。在我们发送请求到/api/推荐/:通过,如果过有人恶意修改链接参数,像这样:?通过=. ./. ./注销,用户在点击之后可能会注销,当然这可能没有什么影响,但是不可避免得会有些其他的会带来不可预期影响的操作。

由于Sitesauce在一些地方使用了高山,所以我们在此基础之上,将弹窗修改为高山组件,这样有更好的扩展性。这里要感谢下瑞安在我的转换无法正常工作时,给我提出了宝贵建议。

& lt; div  x数据=https://www.yisu.com/zixun/弊榧?){…}x-cloak x-init=" init () ">   <模板x="子公司">   
  :   

你的朋友 邀请你尝试Sitesauce

  <按钮>开始审判>      
  <脚本>   从“axios”进口axios   从“js-cookie”进口饼干//使用模板标签nextTick美元,进行代码转换,这里特别感谢下我的朋友瑞安   window.component=()=> ({   下属:空,   通过:新的URL (location.href) .searchParams.get(通过)   init () {   如果(!this.via)返回,nextTick美元(()=>。附属=Cookies.getJSON (sitesauce.affiliate))   axios.post (' https://app.sitesauce.app/api/affiliate/$ {encodeURIComponent (this.via)}”)。然后(反应=> {   美元。nextTick (()=>。附属=response.data)   Cookies.set (“sitesauce。联盟”,回应。数据,{   域:“.sitesauce到期:30日。应用程序的安全:真的,sameSite:“宽松”   })   })。抓住(错误=> {   如果(!错误。反应| | error.response。地位!==404)返回控制台。日志(事情错了)   控制台。日志(“联盟并不存在。注册我们的推荐计划:https://app.sitesauce.app/affiliate”)   })   }   })   

基于Laravel开发会员分销系统的示例