首页 > 解决方案 > 对于每个循环 - 设置会话变量

问题描述

我在 PHP 中有一个使用 foreach 循环的列表页面 (mysite.com/listing)。它输出一个用户 ID,例如 user1、user2 和一个到详细信息页面的链接,例如:mysite.com/detail

输出:

1. User ID = user1 <a href="mysite.com/detail">Detail Page</a>
2. User ID = user2 <a href="mysite.com/detail">Detail Page</a>
...
10. User ID = user10 <a href="mysite.com/detail">Detail Page</a>

详细信息页面 (mysite.com/detail) 需要从列表页面接收相应的用户 ID,例如,如果用户单击项目 1,“user1”设置在 Session 变量中并从列表页面传递到详细信息页面。在详细信息页面中,我只想输出“用户 id 是 user1”。我想知道 Session 变量如何在 foreach 循环中工作,还是有更好的解决方案?如果我使用类似的东西:

 $_SESSION['user_id'] = (string)$user->primary_id;
    echo $_SESSION['user_id'];

..在列表页面的foreach循环中,它将捕获循环中的最后一个用户ID,例如user10,并且 echo $_SESSION['user_id']; ......在详细信息页面中将输出'user10'而不是'user1'。甚至可以在 foreach 循环中使用会话变量吗?谢谢

标签: phphtmlsession

解决方案


"user1" is set in a Session variable and passed from the listings page to the detail page...没有必要这样做。会话不是实现这一目标的最佳方式(尤其是因为如果您在浏览器的多个选项卡中打开站点,则传输数据的模型会中断)。

只需在超链接 URL 中放置一个查询参数并使用$_GET.

例如

User 1 <a href="mysite.com/detail?user=1">Detail Page</a>
User 2 <a href="mysite.com/detail?user=2">Detail Page</a>

...ETC。

并在“详细信息”页面中:

$userID = $_GET["user"];

推荐阅读