Lý do bạn nhận được 5 là cho mã này:
<?php echo $user_info['firstname'];?>
là giá trị $ _SESSION ['user_id'] là 5. Vì vậy, sau khi gán $ user_info giá trị là 5. Bây giờ vì $ _SESSION ['user_id'] không được đặt thành một mảng như ý định của bạn có vẻ được. Kết quả là $ user_info được lấy dưới dạng một chuỗi và ['firstname'] ước lượng thành [0]. Nếu muốn, bạn có thể cập nhật ID từ 5 đến 54, v.v. Bạn sẽ luôn nhận được ký tự đầu tiên của ID.
Để khắc phục điều này, hãy thử thay đổi 2 dòng cuối cùng trước khi trở lại trong chức năng user_data của bạn để:
$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');
}
tới:
if (logged_in() === true) {
$user_data = user_data($_SESSION['user_id'], 'username', 'first_name', 'last_name', 'email');
$_SESSION['user_id'] = $user_data;
}
Nguồn
2012-10-23 15:05:39
Nơi bạn thêm dữ liệu vào $ _SESSION. Tôi nghĩ rằng bạn đang thiếu một phần –
$ session_user_id có thể trống tại dòng $ user_data = user_data ($ session_user_id, 'user_id', 'username', 'first_name', 'last_name', 'email'); –
Hình ảnh cơ sở dữ liệu là liên kết chết – SomeKittens