【问题标题】:PHP change session data for different linksPHP更改不同链接的会话数据
【发布时间】:2016-02-26 20:06:04
【问题描述】:

我遇到了一个有趣的问题。我在一个页面上有 6 个不同的项目要出售,而不是为每个项目的 详细视图 制作 6 个不同的页面,我想使用 PHP 将所有 6 个项目链接从第一页重定向到 单个详细视图页面并根据单击的项目链接仅更新详细视图页面的图片、描述和标题

所以代码

<?php $merchandiseData = array('TITLE', 'DESCRIPTION', 'IMG_LINK'); 
      $_SESSION['merchandise'] = $merchandiseData; ?>

<button onClick="window.location='item.html';" class="button"type="button">Add to Cart</button>

<?php $merchandiseData = array('TITLE_2', 'DESCRIPTION_2', 'LINK_2');
      $_SESSION['merchandise'] = $merchandiseData; ?>

<button onClick="window.location='item.html';" class="button">Add to Cart</button>

所以基本上这段代码为 6 个不同的链接运行了 6 次,第二页只是从 $_SESSION['merchandise']; 获取数据。并在文档中回显它

<p class="item-name"><?php echo $_SESSION['merchandise'][0] ?></p>
<div class="picture" style="background-image: url(<?php echo $_SESSION['merchandise'][2] ?>)"></div>
<p class="description"><?php echo $_SESSION['merchandise'][1]; session_destroy(); ?></p>

所以我的问题是当我点击链接时 $merchandiseData 会正常工作,但是我点击的 6 个链接中的每一个总是指向相同的图像链接、标题和描述,并且它是最后一个数据数组我传递给页面上的会话。所以在我上面给出的例子中,即使我点击了第一个按钮,它仍然会输出第二个按钮的数据,我不知道为什么?

任何帮助将不胜感激!或者,如果有更简单的方法来使用 jquery 或 javascript id 爱知道!

【问题讨论】:

  • 哦,甚至不知道从哪里开始 - 尝试用谷歌搜索服务器端代码和客户端代码之间的区别。不要为此任务使用会话,只需使用 GET 参数来区分产品
  • 每次使用相同的变量设置会话数据时,它都会覆盖以前的数据。您最后设置的任何数据都可用于该会话变量。 $_SESSION['商品'] ='data1'; $_SESSION['商品'] = 'data2'; $_SESSION['商品'] = 'data3';如果你打印 $_SESSION['merchandise'],它总是显示 'data3'。

标签: php html session


【解决方案1】:

您遇到该问题的原因是因为您将商品值存储在同一会话变量中,因此您将覆盖初始值并仅存储最后一个值。如果你不介意试试这个:

<?php $merchandiseData = array('TITLE', 'DESCRIPTION', 'IMG_LINK'); 
      $_SESSION['m1'] = $merchandiseData; ?>

<button onClick="window.location='item.html?id=m1';" class="button"type="button">Add to Cart</button>

<?php $merchandiseData = array('TITLE_2', 'DESCRIPTION_2', 'LINK_2');
      $_SESSION['m2'] = $merchandiseData; ?>

<button onClick="window.location='item.html?id=m2';" class="button">Add to Cart</button>

然后在第二页上执行以下操作:

<?php   $id = $_GET['id']; ?>
<p class="item-name"><?php echo $_SESSION[$id][0] ?></p>
<div class="picture" style="background-image: url(<?php echo $_SESSION[$id][2] ?>)"></div>
<p class="description"><?php echo $_SESSION[$id][1]; session_destroy(); ?></p>

【讨论】:

  • 非常感谢你的工作,我没想到我的会话被覆盖了,但这很有意义!
【解决方案2】:

这是因为您的 PHP 代码编译了 1 次。 例如,如果您在文件中写入;

$_SESSION['test'] = 1;
$_SESSION['test'] = 2;

并尝试获取$_SESSION['test'],您将得到 2。因为您将重写您的 SESSION。我认为你需要做这个帮助 PHP 脚本,或者通过 Ajax。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 2014-05-17
    • 2017-09-29
    • 1970-01-01
    • 2023-04-04
    • 2020-02-24
    相关资源
    最近更新 更多