首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过传递每个链接的会话id,将动态生成的链接链接到php

问通过传递每个链接的会话id,将动态生成的链接链接到php
EN

Stack Overflow用户
提问于 2015-11-22 21:04:27
回答 2查看 902关注 0票数 0

我在item.php中有这样的代码:

代码语言:javascript
复制
while ($row = mysqli_fetch_array($res)) {
$link .= '<br><a href="item.php?id='.$row['item_id'].'">'.$row['item_name'].'</a><br>';
}

echo $link;

因此,这将根据(在数据库中)有多少结果生成链接,因此假设用户有4个项目,它将项目名称显示为超链接,但我不确定如何将其链接到我的itemdetail.php。因此,每个项目都将链接到itemdetail.php,但它们将具有唯一的信息,这些信息将从mysql数据库中获取。

目前,我只想让itemdetail.php回显项目名称,但现在我想要的是,我希望根据item_id为每个链接生成一个唯一的会话id,这样当我按下它时,会话id就会传递给itemdetail.php,从那里我可以将会话id作为字符串传递,并从mysql中提取数据(这是很容易的一点,所以不需要这方面的帮助)。

我知道如何在页面之间传递会话id,但这只适用于固定链接(已存在的按钮),但我不知道如何对生成的按钮/链接执行此操作。

仅供参考,我的item_id确实显示/item.php?id=12345,12345是我的url,如果这有帮助的话。这是当我点击生成的链接(从/item.php到/item.php?id=12345,或者每个链接的item_id是什么)的时候,当然除了更改url之外,这些链接什么也不做。

dr为每个生成的链接创建一个唯一的id (最简单的方法可能是获取item_id并使用它),将唯一的id作为会话传递,然后在另一个php中回显会话。

提前感谢您提供的任何有用的见解。

itemdetail.php

代码语言:javascript
复制
<?php
session_start();
include('connection.php'); 
echo $_SESSION['advert'];
$aName = $_SESSION['advert'];
?>

自动柜员机什么都不会发生,因为item.php中的按钮没有连接到它。如果我尝试:

代码语言:javascript
复制
while ($row = mysqli_fetch_array($res)) {
$link .= '<br><a href="item.php?id='.$row['item_id'].'">'.$row['item_name'].'</a><br>';
if($link == true) {
 header("Location:item.php");
}

我收到'headers already by‘错误

EN

回答 2

Stack Overflow用户

发布于 2015-11-22 21:09:49

如果您像现在这样传递项目ID,那么要访问它,可以使用类似$_REQUEST['id']的内容。

如果您实际询问的是会话ID(与问题中显示的应用程序级别项目ID不同):

会话ID通常通过cookie传递。

PHP将在本地为您完成此操作,而无需编写大量的应用程序代码。您只需调用session_start(),用户的会话数据将在全局$_SESSION中可用。

在幕后,这是通过让服务器通过set-cookie头部将会话ID传递给客户端来实现的,客户端的浏览器将把它传递回附加到同一服务器的所有后续请求中。在服务器端,会话ID连接到一个数据存储(默认情况下是本地文件系统上的文件,但也可以是数据库或其他任何东西,具体取决于PHP配置)。

票数 1
EN

Stack Overflow用户

发布于 2015-11-22 22:01:29

我不完全确定你想要实现什么。

如果您希望页面item.php在未指定id的情况下显示项目列表,则只需使用if ($_REQUEST['id'])来分隔这两种情况。(处理输入时要小心!)

如果项id不足以唯一地标识项(它应该如此),则将其他信息也添加到url中:

代码语言:javascript
复制
$link .= '<br><a href="item.php?id='.$row['item_id'].'&sid='.session_id().'">'.$row['item_name'].'</a><br>';

如果您在直接使用session_id()时遇到问题,您可以做两件事:

  1. 在发送头部之前调用session_id(),并将id存储在一个变量中。

$SID = session_id()或类似的东西。

但是,如果您希望显示列表中的项目具有相同的标识符,但根据查看它们的用户不同,则必须提供更多细节。

您可以调整item.php?id=N中的逻辑以考虑$SID,并将接收到的id N转换为数据库中使用的项的unique id。完全取决于您的特定应用程序。

您还可以使用php为您方便地维护的$_SESSION数组。在生成链接时,将所需的信息(例如unique item id )存储在那里。然后,下次加载item.php?id=1时,您就可以访问$_SESSION['item_links'][$n]了。

再说一次,我不太明白你在问什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33855080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档