代码之家  ›  专栏  ›  技术社区  ›  Tony

你觉得我的网站“邀请朋友”系统有缺陷吗?

  •  0
  • Tony  · 技术社区  · 16 年前

    我想有一个系统,我的用户可以邀请他们的朋友。我们不喜欢在发送邀请链接时使用URL缩短器,但链接相对较短也很重要。我认为最好的方法就是给每个用户一个“profile用户名”,比如“tonyamoyal12”,如果他们想要的话,让他们请求一个新的唯一用户名。

    当我的用户发送邀请时,它会发送一个类似 http://mydomain/invite/profile_username 基本上,如果被邀请者登录到该URL,那么邀请者会得到赞扬。有人能想到这种方法的缺点吗?大多数invite url都有散列来验证invite的完整性,但我认为我的方法很好。

    更新 配置文件用户名是邀请者的用户名,而不是被邀请者的用户名。因此,用户在邀请者的配置文件页面上注册,因此邀请者获得了让某人在其页面上注册的“要点”。

    谢谢!

    7 回复  |  直到 9 年前
        1
  •  2
  •   Jon Seigel    16 年前

    在这些类型的系统中,通常不会在被邀请者实际注册之前分配任何用户数据(即用户名),而且根据您使用的框架,让这种URL工作可能有点困难。

    该过程通常是:

    1. 邀请一个用户,然后向他们发送电子邮件。
    2. 被邀请者点击电子邮件中的链接,进入网站的主注册页面。
    3. 被邀请者用他们选择的有效用户名注册,并且基于一些唯一的随机键(包括在点击链接中),您可以与两个相关用户(添加到朋友列表或其他)进行业务逻辑。

    生成您自己的用户名的缺点是,它们比随机数更容易被猜测,因为您可能会在其中使用英语单词。如果您生成和分配随机用户名(即“s243k2ldk8sdl”),受邀者将不会高兴,因为他们必须做额外的工作来更改用户名,或者以某种方式记住该名称。

    编辑 因为我不太明白这个问题。

    我认为这个方案很好,只是我会在URL中使用邀请者的用户名,而不允许他们更改它(为什么允许它?)。唯一的问题是,如果对邀请的数量有某种限制(或者可能对每个邀请都有奖励),那么您将希望通过某种唯一的哈希值(仅对邀请者的URL有效)来保护每个点击。

    编辑2

    因为系统中的用户没有分配用户名,所以您可以选择任何一种方式。允许以先到先得的方式分配“用户名”是很好的,因为这样可以让每个人更容易地与朋友共享他们的URL,因为它是值得纪念的,而且可以简单地输入。但是,如果注册时需要一个唯一的密钥,那么这个窗口就会消失…在这种情况下,不实现用户名这一功能并将每个人引导到某种类型的单一注册页面会更简单。

        2
  •  1
  •   ctford    16 年前

    为什么不创建自己的定制网址缩短?

    如果你避免网址缩短的原因是你不想依赖外部公司,那么这可能是一个很好的解决方案。

        3
  •  1
  •   user237199    16 年前
    1. 您不能独立跟踪邀请。在某个时刻,您可能想知道一个用户发出了多少邀请,而接受了多少邀请。有了这个单一的URL系统,你就无法跟踪这些信息。

    2. 机器人程序可以很容易地被写入垃圾邮件这样的系统。(可能在结果页面上用验证码解决)

        4
  •  1
  •   Arthur Thomas    16 年前

    好吧,如果网站很大,你会有名字冲突,你将依赖邀请人输入被邀请人的名字,而他们可能做得很糟糕。

    如果你想这样做,那么你将不得不处理名称冲突。

    另外,也有可能有人会过来随机输入名字,看看他们是否会被击中。比如说我想耍花招,监视一个朋友,看看他们是否在向其他朋友发出邀请。

    编辑:啊,好吧。好吧,如果他们只是点击一个链接去邀请,那就没问题了。这看起来很正常,公开用户名也没有秘密可言。

        5
  •  1
  •   Guvante    16 年前

    您可以为每个邀请创建一个唯一的哈希,并保持哈希与用户名的关联。这需要一点存储开销,但您可以让邀请过期来帮助解决这一问题。

    所以 http://mydomain/invite/RgetSqtu 将是一个示例链接,其中包含一个数据库表,该表在使用之前存储rgetqtu/profile。

    如果找不到哈希,您可能希望提供一个有用的错误页,如下所示:

    很抱歉,找不到您输入的邀请。这可能是由于邀请输入错误、已被使用或太旧(邀请在3天后过期)造成的。

        6
  •  0
  •   David Hague    16 年前

    我建议在查询字符串中传递邀请方的用户名,并让该查询字符串填充新用户注册页上的可编辑或不可编辑文本框。这样你仍然只有一个注册页面,网址很短,而且用户推荐朋友可以获得积分。

    http://mydomain/invite/register.html?inviter= 邀请人姓名

    导致

    名字:_____
    姓氏:_____
    参考文献: 邀请人姓名

        7
  •  0
  •   Boris Callens    16 年前

    如果我正确理解该设置,现有用户将通过向其朋友发送电子邮件来创建邀请,您的系统将向其发送一封邮件,其中包含[inviteurl]/[inveter'susername]。 因此,在我发送邮件邀请您的情况下,URL将是:

    www.yourthang.com/invite/boriscallens

    每次有人访问这个网站,我(用户Borisellens)都会得到一个观点。 什么能阻止我在无数次浏览这个网址,从而赢得邀请你朋友的游戏?