变量正在传递到此页面: session_start(); //$id = ($_GET['id']); if (isset-6ren">
gpt4 book ai didi

php - 跨多个页面重用 session 变量

转载 作者:行者123 更新时间:2023-11-29 08:01:26 24 4
gpt4 key购买 nike

我通过链接从查询传递以下变量:

 <a href="middle.php?name=<?php echo $name;  ?>&id=<?php echo $id1;  ?>&rowid=<?php echo $rowid;  ?>&record=<?php echo $record;  ?>">

变量正在传递到此页面:

session_start();

//$id = ($_GET['id']);
if (isset($_GET["record"])) {
$_SESSION["record"] = $_GET["record"];
}
if (isset($_GET["id"])) {
$_SESSION["id"] = $_GET["id"];
}
if (isset($_GET["rowid"])) {
$_SESSION["rowid"] = $_GET["rowid"];
}
if (isset($_GET["name"])) {
$_SESSION["name"] = $_GET["name"];
}
if (isset($_GET["store"])) {
$_SESSION["store"] = $_GET["store"];
}

然后用户被重定向到此页面,我在其中尝试使用将 session 变量分配给页面中的变量,如下所示:

session_start();

$id = $_SESSION[id];

$rowid = $_SESSION[rowid];

$name = $_SESSION[name];

$record = $_SESSION[record];

这些变量不可访问,因为我需要它们位于此页面上。我缺少引号吗?再次使用 session 变量的最佳方法是什么?

仅供引用,它们主要用于其他查询,如下所示:

"SELECT * FROM mgap_orders WHERE mgap_ska_id = '" . $_SESSION['id'] . "' AND mgap_status = 0 GROUP BY mgap_ska_report_category LIMIT 5";

最佳答案

Am I missing quotes?

是的。你说你正在像这样访问它们:

$id = $_SESSION[id];

应该是这样的:

$id = $_SESSION['id'];

但更重要的是,为什么你需要在这里使用 session ?您描述情况的方式是:

  1. 用户使用链接中的查询字符串值发出请求。
  2. 在响应中,您将用户转发到另一个页面(大概使用位置 header ?)。
  3. 最后一页上需要显示这些值。

如果它们是查询字符串值,请将它们保留为重定向中的查询字符串值。所以你可能会遇到这样的事情:

header('Location: somePage.php');

您可以包含以下值:

header('Location: somePage.php?name=' . $name');

对于其余值依此类推,就像为执行重定向的页面构建原始链接时所做的那样。

此外,虽然您没有显示您的数据访问权限,但您确实显示了您的查询,该查询似乎容易受到 SQL 注入(inject)攻击。最终,您使用的值来自用户输入(查询字符串),因此您不应直接将它们连接到 SQL 查询中。

关于php - 跨多个页面重用 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23701291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com