如何在不注册的情况下记住用户

hal*_*bra 5 html javascript php session-cookies web

我希望用户在我的网站上被记住,但我没有任何形式的注册。我希望用户在第一次访问该网站时选择一个用户名,然后对于该用户的每个其他请求,我想记住该用户名。我试过这个-

由于用户无法使用 Facebook、电子邮件或其他任何方式进行注册,因此我无法找到记住用户的方法。因此,我将用户的用户名与其IP地址进行映射并将其保存到数据库中。因此,来自该IP地址的后续请求会告诉我“它是哪个用户”。但后来我了解到,IP当您重置调制解调器/连接时,地址可能会发生变化。对于静态IP地址,您必须支付您的ISP. 然后,我很确定大多数用户都有动态IP地址。

那么,有办法做到这一点吗?我知道cookiessessions但我不认为这是最好的方法。也许我错了。我只是想知道世界上的大玩家是如何解决此类问题的。或者也许有什么更好的解决方案可以做到这一点?请给我指路。

添加:

根据答案,如果我基于 cookie 执行此操作,当从浏览器中删除 cookie 时,不会删除用户历史记录吗?如果用户从同一台电脑使用不同的浏览器登录,是否会多次询问用户名?

Jos*_*zin 4

不要依赖 IP 地址。使用无限 cookie。在 jQuery 中,您可以按如下方式设置 cookie 过期(显示 20 年过期 - 这应该足够了!):

$.cookie('my_cookie', 'my_value', { expires: 365 * 20 });
Run Code Online (Sandbox Code Playgroud)

如果您担心用户清除 cookie,另一种有趣的方法是询问电子邮件地址(只有电子邮件,没有密码)。然后,您可以通过电子邮件向该用户发送一个返回您网站的链接,并在 URL 中附加一个访问令牌,以验证该用户的身份 - 并将其再次存储在无限 cookie 中。这样,您始终可以找到一种无需正式注册即可对用户进行身份验证的方法。

编辑:再次阅读您的问题,看起来您正在尝试仅根据用户告诉您他的用户名的内容来记住用户的帐户。这不是一种安全的方法,还会导致帐户丢失。您需要在服务器上保存一些内容,无论是唯一的令牌、密码还是电子邮件地址。