我傳遞下列變量從查詢通過鏈接:重用會話變量
<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_start();
$id = $_SESSION[id];
$rowid = $_SESSION[rowid];
$name = $_SESSION[name];
$record = $_SESSION[record];
變量不能訪問,因爲我需要它們在這個頁面上。我是否缺少報價?再次使用會話變量的最佳方式是什麼?
FYI他們主要被用在其它查詢中使用這樣的:
"SELECT * FROM mgap_orders WHERE mgap_ska_id = '" . $_SESSION['id'] . "' AND mgap_status = 0 GROUP BY mgap_ska_report_category LIMIT 5";
是的,你應該引用數組鍵。 PHP會禮貌地假設你忘記了它們並假裝它們在那裏,但是會發出警告,並且如果你有任何'define()'d同名的常量,就會遇到麻煩。檢查所有您遇到問題的頁面中的'session_id()'。如果ID發生變化,那麼您將遇到會話配置問題,並且每個頁面都將獲得全新/空白會話。 –
當您將變量添加到會話中時,您應該清理/過濾變量,因爲它們是用戶提供的。稍後使用它們會導致sql注入問題。你也應該初始化它們,以便你不必檢查它們是否設置。 – jeroen
另外,我曾遇到過問題,有時PHP在register_globals中設置爲將會話變量註冊爲全局變量。 所以當你做$ _SESSION [「name」] = $ _GET [「name」];名稱'Aaron'或其他名稱將被分配給$ name,然後您不能用$ name = $ _SESSION ['name']覆蓋它; – iMakeWebsites