【问题标题】:Holding a URL parameter between pages?在页面之间保存 URL 参数?
【发布时间】:2011-04-08 20:37:11
【问题描述】:

我想在他们浏览时在 URL 中存储一个变量。

例如: 一个菜单,当用户选择 ?category=shopping 时,它会转到带有购物的地图,他们可以点击一个地方,它应该转到 ?category=shop&id=22。

如果他们返回菜单,则应该删除 ?category 并且如果他们点击其他内容,例如 ?category=cafe。

我对此感到非常困惑,如果有任何帮助,我将不胜感激 - 谢谢!

【问题讨论】:

  • 嗨,约翰,你能把你的问题扩大一点吗?我真的不明白你想要达到什么目的。例如,什么决定了类别应该是什么?这是他们从菜单中选择的东西吗?如果是这样,什么时候需要取消设置?
  • 您可能想查看 $_GET['category'] 因为这将在您的示例中返回“shop”。分别 $_GET['id'] 将返回 22

标签: php javascript url variables web


【解决方案1】:

如果您只需要在页面之间存储状态,如您的标题所示,那么您可以将此信息存储在$_SESSION 超全局数组中。在任何输出发送到浏览器之前,您可以通过运行session_start() 作为任何新页面的第一行来启动一个新会话。当您在下一页以同样的方式开始会话时,您随后存储在 $_SESSION 中的任何内容都将可用。

如果您只对构建查询字符串(即 URL 的 ?field=value&field2=value2 部分)感兴趣,正如您的问题内容所示,那么您可能需要查看 http_build_query() 函数。

你的问题对我来说似乎有点模棱两可,你的实际目标是什么,所以我给了你两种方法。请记住,您应该使用$_SESSION 来表示状态,并使用http_build_query() 来创建指向特定内容的动态 URL。还要记住,如果数据需要安全,那么你不应该把它放在 URL 或用户可以修改它的任何其他地方,或者其他人可以读取它的地方(例如在浏览器地址栏中)。这类信息需要在$_SESSION 中。

【讨论】:

  • 投反对票的人能否解释一下我的回答有什么问题?如果我误解了这个问题,请告诉我,我会更新我的答案。
  • +1 我只是建议将parse_str($_SERVER['QUERY_STRING'])http_build_query() 结合使用。可能会解决 OP 的问题,但问题并不那么清楚。
【解决方案2】:

这对会话变量很有用。

$_SESSION["category"]="stuff";

然后你可以保留它直到你不再需要它,或者他们终止他们的会话

【讨论】:

  • 但是如果用户再次返回菜单,它是否需要更改?
  • 没关系,根据需要更改它。但它会保持不变,直到你改变它,或者他们结束会话。
【解决方案3】:

我想在他们浏览时在 URL 中存储一个变量。

您实际上无法在 URL 中“存储”任何内容。
如果您想使用查询字符串将一些 数据 从一个页面传递到另一个页面,则必须将此数据添加到查询字符串中。

“购物地图”应将类别添加到每个链接。
这就是每个 Web 应用程序的工作方式。

会话不是要走的路,因为网站上的每个页面都应该有它的地址,而您的类别是该地址的重要组成部分。如果将其存储在会话中,则无法添加书签,无法发送给朋友的链接,也没有搜索引擎会索引您的商品。

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 2012-05-26
    • 2012-03-28
    • 2011-05-01
    • 1970-01-01
    • 2021-02-20
    • 2018-05-10
    • 1970-01-01
    相关资源
    最近更新 更多