【问题标题】:Are all session variables sent over HTTP?所有会话变量都通过 HTTP 发送吗?
【发布时间】:2010-12-02 11:04:12
【问题描述】:

我喜欢所谓的会话 ID 的想法,它被发送到浏览器并返回以进行身份​​验证。但是我可以在服务器端会话变量中存储更多数据以供后续会话访问吗?我正在使用 PHP。

【问题讨论】:

    标签: php http session webserver session-variables


    【解决方案1】:

    会话变量存储在服务器端。只有会话 ID 会从客户端发回。服务器将在其会话存储中查找 ID 并获取变量。实际变量根本不会发送给客户端。这使得会话状态成为可扩展 Web 应用程序的噩梦,因为它依赖于服务器来跟踪用户状态。您在会话中放入的内容越多,服务器上每个会话的开销就越大。

    如果您想在客户端本身存储变量,您应该使用 cookie 而不是会话。

    【讨论】:

      【解决方案2】:

      不,据我了解,唯一传输的是会话 ID,通过 cookie。

      【讨论】:

        【解决方案3】:

        是的。默认 php 安装中的会话 ID 实际上对应于服务器上为您保存所有会话数据的文件。会话 ID 只是唯一用户的标识符。会话 ID 通常存储在 cookie 中。

        在 PHP 中要在会话中存储更多数据,只需这样做:

        --set.php--
        session_start();
        $_SESSION['var1'] = 'foo';
        $_SESSION['var2'] = 'bar';
        
        --look.php--
        print_r($_SESSION); // prints Array (var1 => foo, var2=>bar)
        

        【讨论】:

        • 有时需要添加 session_write_close();在编写会话变量以使它们保持不变之后
        猜你喜欢
        • 2010-12-01
        • 2017-11-30
        • 2012-01-02
        • 2014-03-26
        • 2015-12-29
        • 2015-06-07
        • 2012-04-30
        • 2011-12-07
        • 1970-01-01
        相关资源
        最近更新 更多