你得到 5 的原因是因为这段代码:
<?php echo $user_info['firstname'];?>
是 $_SESSION['user_id'] 的值是 5。所以在分配后 $user_info 的值是 5。现在因为 $_SESSION['user_id'] 没有像您的意图那样设置为数组。结果是 $user_info 被视为一个字符串并且 ['firstname'] 的计算结果为 [0]。如果您愿意,可以将 ID 5 更新为 54 等。您将始终获得 ID 的第一个字符。
要更正此问题,请尝试将 user_data 函数中返回之前的最后两行更改为:
$data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `users` WHERE `user_id` = $user_id"));
$data = array_merge(array($user_id), $data);
return $data;
if (logged_in() === true) {
$user_data = user_data($_SESSION['user_id'], 'username', 'first_name', 'last_name', 'email');
$user_data = user_data($session_user_id, 'user_id', 'username', 'first_name', 'last_name', 'email');
}
到:
if (logged_in() === true) {
$user_data = user_data($_SESSION['user_id'], 'username', 'first_name', 'last_name', 'email');
$_SESSION['user_id'] = $user_data;
}