页面之间的数据:$ _SESSION vs. $ _GET?

时间:2010-03-24 18:38:35

标签: php

好的,首先,这不是关于形式,这是关于用户浏览网站时的一致布局。

让我解释一下:

如果我们想象一个(非ajax)数码相机在线商店,比如有人在DSLR部分并指定以图库模式查看相机并按价格订购。然后他们点击Compact相机的页面。如果他们选择的“观点”我们会转移到这个新页面,那将符合用户的利益。

现在,我要说使用会话 - 我错了吗?

我是否应该注意一些小型会话变量的性能问题(即view = 1,orderby = price)?

4 个答案:

答案 0 :(得分:8)

说到表演,两种解决方案都不应该有太多问题。

必须考虑的一些事情是:

  • 使用GET,如果URL被复制粘贴(在电子邮件或MSN中),另一个将收到该URL的人将具有相同的GET参数
    • 这是件好事吗?
  • 另一方面,如果URL被复制粘贴,则不会共享会话
    • 这意味着第一个人会对另一个人说“键,看看这个”,第二个人不会看到同一页;与书签相同,我应该添加。
  • GET特定于每个网址
    • 虽然SESSION在用户的所有标签中共享
    • 这意味着同时浏览多个标签会导致麻烦,使用Session时,如果不照顾

答案 1 :(得分:2)

我会说两者同时使用。将其存储在会话中,但也将其放在页面的get参数中。

为什么呢?通过这种方式,用户可以在页面之间携带他的选项,但是他们也在URL中,所以如果他将搜索结果发送给他的朋友,他的朋友就会像他一样看待他们。

不,通过将那些小变量放在那里,会话的性能不会降低。除非您在会话中存储单片数组,否则浩大大部分时间加载会话将从其存储介质(文件,数据库,内存缓存等)中读取它。

答案 2 :(得分:2)

你应该在你的情况下使用GET。

Web开发中有一条简单的规则:每个具有不同内容的页面都必须拥有自己的地址。因此,客户可以将任何页面保存到收藏夹中,然后将其发送到frend。在底部是痛苦的,然后有人向您发送指向特定页面的链接,说“看!”但网站使用框架,你登陆首页,不知道在哪里看。

您可以将用户的偏好设置保存到他的个人资料/ Cookie中(而不是会话),但也应该反映在地址栏中。

会话用于完全不同的目的,购物车就是一个例子。

答案 3 :(得分:0)

这是一个主观问题,无论哪种方式都可以。

就个人而言,我会选择会话,因为它不会干扰网址,因此人们可以根据需要为网址添加书签。

然而,如果他们为它加了书签,他们可能会看到不同的东西,如果它是使用$ _SESSION完成的。