如何在PHP中唯一识别远程机器?

Sur*_*esh 5 php

如何在代理服务器环境中唯一识别远程机器,我使用了$ _SERVER ['REMOTE_ADDR'],但代理网络中的所有机器都有相同的IP地址,有什么办法

dec*_*eze 11

不要依赖来自客户的信息.在这种情况下,您遇到了简单的网络问题(您永远无法确定客户端的IP地址是否正确),在其他情况下,客户端可能会故意欺骗信息.

如果您需要唯一识别您的客户,请在第一次访问时给他们一个cookie,这是您可以做的最好的.


One*_*One 7

你最好的选择是:

 $uid = md5($_SERVER['HTTP_USER_AGENT'] .  $_SERVER['REMOTE_ADDR']);
Run Code Online (Sandbox Code Playgroud)

但是,没有办法知道他们是否更改了用户代理或不同的浏览器.

  • 如果同一代理后面只有两个人使用相同的浏览器,则这不起作用. (2认同)

Pas*_*TIN 5

您可以使用其他一些标头来提供帮助,例如这些标头(在查看转储时想到的标头$_SERVER):

  • HTTP_USER_AGENT
  • HTTP_ACCEPT
  • HTTP_ACCEPT_LANGUAGE
  • HTTP_ACCEPT_ENCODING
  • HTTP_ACCEPT_CHARSET

使用来自客户的多个信息将有助于区分不同的客户(您使用的信息越多,两个客户之间至少其中一个不同的机会就越大)...

...但这不会是一个完美的解决方案:-(

根据代理软件的类型及其配置,可能有一个名为 的标头X-Forwarded-For,您可以使用:

X-Forwarded-For (XFF) HTTP 标头是用于识别通过 HTTP 代理或负载均衡器连接到 Web 服务器的客户端的原始 IP 地址的事实上的标准。这是一个非 RFC 标准的请求标头,由 Squid 缓存代理服务器的开发人员引入。

但我也不会依赖它:它可能不会总是存在(不认为它是必需的)

祝你好运 !