the*_*tro 9 php sql database session
我试图从我的sql表中提取数据,使用php唯一的会话ID,但是当我回显任何东西时,我只能得到用户所处的位置!
<?php
include 'core/init.php';
$user_info = $_SESSION['user_id'];
?>
<html>....
<h1><?php echo $user_info['firstname'];?> <?php echo $user_info['firstname'];?> </h1>
Run Code Online (Sandbox Code Playgroud)
显示为:
如果我使用数据库中的第五个位置登录!
你得到 5 的原因是因为这段代码:
<?php echo $user_info['firstname'];?>
Run Code Online (Sandbox Code Playgroud)
$_SESSION['user_id'] 的值是 5。所以在赋值之后 $user_info 的值是 5。现在因为 $_SESSION['user_id'] 没有像您的意图那样设置为数组。结果是 $user_info 被视为字符串,并且 ['firstname'] 的计算结果为 [0]。如果您愿意,您可以将 ID 5 更新为 54 等。您将始终获得 ID 的第一个字符。
要纠正此问题,请尝试将 user_data 函数中 return 之前的最后 2 行更改为:
$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');
}
Run Code Online (Sandbox Code Playgroud)
到:
if (logged_in() === true) {
$user_data = user_data($_SESSION['user_id'], 'username', 'first_name', 'last_name', 'email');
$_SESSION['user_id'] = $user_data;
}
Run Code Online (Sandbox Code Playgroud)