在页面之间保存URL参数


Holding a URL parameter between pages?

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

例如

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

如果他们返回菜单,那么?类别应该被删除,如果他们点击其他东西,例如?category=cafe.

我真的很困惑,并将感谢任何帮助-谢谢!

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

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

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

这是会话变量的一个很好的用途。

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

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

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

你实际上不能在URL中"存储"任何东西。
如果您希望使用查询字符串将一些数据从一个页面传递到另一个页面,则必须将这些数据添加到查询字符串中。

"带有购物的地图"应该在每个it's链接中添加类别。
这是每个web应用程序的工作方式。

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