【问题标题】:How can I differentiate users other than through IP address for a shoutbox application?除了通过 IP 地址之外,我如何区分用户?
【发布时间】:2023-03-22 02:10:01
【问题描述】:

我正在用 php、jQuery 和 AJAX 编写代码来创建一个喊话框应用程序。到目前为止,我正在通过他们的 IP 地址记录不同的用户,以便分配不同的默认用户名并根据其适当的 IP 地址存储用户选择的用户名。 (shoutbox 不是基于登录的,在访问网站时会在首次登录时自动分配访客用户名,用户可以将此默认访客用户名更​​改为其他用户名)

问题在于,当同一网络中有多个人使用同一 IP 地址时,我的留言箱将无法区分不同计算机上的用户。有没有办法区分同一网络下的IP?或者,如果我使用 PHP 会话或 cookie,这也能解决问题吗?主要的是我希望能够将用户创建的用户名存储在适当的计算机中,这样用户下次访问我的留言箱网页时就不会看到默认的访客用户名。

【问题讨论】:

    标签: session cookies ip-address


    【解决方案1】:

    您可以为每个 IP 地址分配一个 ID。所以第一个人将被分配 id=1。第二个具有相同的 ip 地址,id=2,依此类推。

    【讨论】:

    • 我怎么知道同一个ip的第二个实例是同一个人还是不同的人?
    【解决方案2】:
    1. 检查由防火墙代理设置的“X-FORWARDED-FOR”的 HTTP 标头,以识别另一端个人的 IP 地址。 http://en.wikipedia.org/wiki/X-Forwarded-For

    2. 检查他们计算机上的特定 cookie,如果没有,则他们是不同的用户(当然,他们可能刚刚清除了他们的 cookie)

    【讨论】:

      【解决方案3】:

      是的,您可以将他们的用户名写入 cookie。因此,他们将使用相同的用户名进行连接,直到他们的 cookie 文件过期,或者他们重新安装浏览器(或操作系统),或者清除浏览器数据,或者只是使用另一台计算机。

      或者,如果可以将用户名保存在数据库中,您还可以通过 IP 以及来自浏览器的一些标头(例如,用户代理)来区分用户。当然,在这种情况下,用户名保持不变,直到用户更新或重新配置浏览器,或使用另一个浏览器或另一台计算机。或者,如果他或她的 IP 发生变化(例如,许多 ISP 使用动态 IP,用户也可以通过 Wi-Fi 从咖啡馆连接)

      您也可以将这些方式结合起来。例如,将用户名保存到cookies中,同时将相同的用户名保存到具有IP和用户代理的服务器。如果 cookie 可用,请使用 cookie 中的用户名。如果不是,请尝试使用他的 IP 和用户代理从数据库中恢复此人的用户名。即使这不准确并且您分配了错误的用户名,用户仍然可以将其更改为正确的用户名。

      【讨论】:

        猜你喜欢
        • 2011-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-19
        • 1970-01-01
        • 1970-01-01
        • 2014-07-31
        • 2012-06-15
        相关资源
        最近更新 更多