确定是否在客户端启用会话


Determine if sessions are enabled client-side

如何确定客户端浏览器是否支持会话?

我正在开发一个反洪水脚本 - 我想将每个操作的脚本操作限制为 5 秒,并且我想使用客户端会话存储 unix 时间,但首先我必须检查它们是否已启用。这可能吗?

我假设您试图限制脚本每个客户端每 5 秒运行一次以上。

Http 是一种无状态协议,PHP 依赖于 cookie 值(或参数值)来初始化服务器端的会话。知道这一点,仅使用会话不足以阻止用户每 5 秒多次淹没您的脚本。用户客户端可以简单地不发送请求中的 cookie 或会话 ID 参数,您必须将其视为新会话。

您必须使用其他方法来识别用户会话。使用请求 IP 地址是一个好的开始,但可能对您来说效果不佳(特别是因为许多用户可以拥有相同的面向公众的 IP)。

您可以使用另一种方法。每次页面加载时,创建一个新的 Cookie(如果尚不存在)。当您使用脚本时,您只需检查cookie是否存在,如果存在并且值正常,那么一切都很好。否则,将禁止运行脚本。