我有一个包含以下代码片段的 php 包含文件 function.php:
function check_login($mysqli) {
// Check if all session variables are set
if(isset($_SESSION['user_id'], $_SESSION['username'])) {
$user_id = $_SESSION['user_id'];// current value will be 9
$username = $_SESSION['username'];
if ($stmt = $mysqli->prepare("SELECT password FROM members WHERE user_id = ? LIMIT 1")) {
$stmt->bind_param('i', $user_id);
$stmt->execute();
$stmt->store_result();
//
//
//
return true;
}
}
}
在另一个文件 test.php 中,我执行
if(check_login($mysqli) == true) //......
然后在 test.php 中进一步向下,我设置变量 $user_id 的值
$user_id = "5";
所以现在的问题是,由于 $user_id 已经在我的 functions.php 文件中定义为会话的 user_id 的值,它会覆盖实际的会话数据。
这几乎就像 test.php 中的 $user_id 将变量视为全局变量,这会导致会话的 user_id 也发生变化。
为什么会这样?