【问题标题】:Is passing session data from one PHP page to another efficient?将会话数据从一个 PHP 页面传递到另一个有效吗?
【发布时间】:2013-02-06 18:30:47
【问题描述】:

我想知道使用 SESSION 变量将数据从一个 PHP 页面传递到另一个页面是否有效。我问这个是因为我认为 SESSIONS 仅用于保持用户登录网站,并作为 cookie 的替代品。通过诸如members.php?name=Joe&age=28之类的URI将数据(非敏感)从一个页面传递到另一个页面不是更好吗?

【问题讨论】:

    标签: php uri session-variables


    【解决方案1】:

    PHP 会话将 cookie 写入您的浏览器,然后将与该会话关联的数据存储在磁盘上;它与 include() 一样昂贵,以便在下一页加载时重新读取它,也就是说完全微不足道。

    此外,用户不能更改会话数据,除非您创建允许他们这样做的机制;他们可以很容易地弄乱查询字符串。

    简短回答:是的,它很有效。

    【讨论】:

      【解决方案2】:

      会话对很多事情都很有用,而不仅仅是登录信息。它们非常适合在 POST/redirect/GET 周期或任何其他跟踪用户会话状态的状态消息(因此得名) - 但仅限于当前会话,而不是长期永久配置选项。

      就效率而言,您需要记住会话中的任何内容都需要在每次页面加载时进行序列化和反序列化。存储姓名和年龄不会增加太多。添加一兆字节的图片上传可能会很糟糕。

      比效率考虑更重要的是要记住会话数据只是暂时持久的。如果您想始终知道 Joe 是 28 岁,则应该将其放入数据库中。如果它仅在单个页面加载时有用,它可能应该保留在 URL 中或被发布。如果您有兴趣记住它几分钟,那么会话可能是放置它的地方。

      【讨论】:

        【解决方案3】:

        取决于你在做什么。如果该页面需要该信息才能正常运行并且不在登录后面,那么传入查询字符串是可行的方法(例如搜索结果、产品页面)。如果它是在登录之后,那么使用会话可以让您保持 URL 干净,并且还使用户难以滥用页面(例如,交换查询字符串中的数据)。

        【讨论】:

          【解决方案4】:

          是的,您可以在 SESSION 中存储数据和消息,并且可以从任何页面访问它。但请记住,SESSION 使用浏览器支持来存储数据。它们可以由用户手动删除

          【讨论】:

          • SESSION 仅使用浏览器存储会话 ID cookie,而不是会话数据。
          • 这就是我的意思——它需要浏览器支持,SESSION 数据存储在服务器上,但 ID 在浏览器中。如果通过删除cookie删除ID,则即使数组键存在也无法检索数据
          猜你喜欢
          • 2017-04-08
          • 1970-01-01
          • 2017-02-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-03
          • 2011-04-26
          • 2017-01-25
          相关资源
          最近更新 更多