0

我有一个包含以下代码片段的 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 也发生变化。

为什么会这样?

4

1 回答 1

0

谢谢您的帮助!我终于弄明白了。Register_globals 设置为开启。嗬!

于 2013-07-26T23:42:02.570 回答